Зміст

    Перенесення даних з MySQL в ClickHouse

    13.12.2025

    ClickHouse підтримує пряме підключення до серверів MySQL, що дозволяє швидко і без зайвих проміжних кроків переносити дані з MySQL в ClickHouse.

    Налаштування доступу

    Для початку необхідно дозволити користувачеві ClickHouse підключатися до MySQL-серверів. Відповідний привілей налаштовується на рівні користувача і діє для всіх баз даних в межах MySQL-сервера. Для налаштування привілею в панелі управління ClickHouse в розділі Користувачі встановіть прапорець "MySQL" в налаштуваннях користувача. У разі, якщо привілей не налаштований, сервер поверне помилку "Not enough privileges. To execute this query, it's necessary to have the grant READ ON MYSQL."

    Отримання даних з MySQL

    Для читання даних з таблиці MySQL використовується таблична функція mysql. Приклад запиту:

    SELECT *
    FROM mysql('host:port', 'database', 'table_name', 'login', 'password')
    

    Запит повертає дані із зазначеної таблиці MySQL і дозволяє працювати з ними так само, як зі звичайною таблицею ClickHouse.

    Завантаження даних в ClickHouse

    Отримані дані можна відразу зберегти в заздалегідь створену таблицю ClickHouse за допомогою оператора INSERT … SELECT:

    INSERT INTO clickhouse_table (date, ip, log)
    SELECT date, ip, log
    FROM mysql('host:port', 'database', 'table_name', 'login', 'password')
    WHERE date > CURRENT_DATE() - INTERVAL 1 MONTH

    У даному прикладі в ClickHouse завантажуються тільки дані за останній місяць, що зручно при інкрементальному перенесенні або первинній міграції великих обсягів даних.