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 загружаются только данные за последний месяц, что удобно при инкрементальном переносе или первичной миграции больших объёмов данных.