Перейти к основному содержимому
Перейти к основному содержимому

Миграция в ClickHouse с использованием clickhouse-local

Миграция самоуправляемого ClickHouse

Вы можете использовать ClickHouse, или, более конкретно, clickhouse-local в качестве ETL инструмента для миграции данных из вашей текущей системы базы данных в ClickHouse Cloud, при условии, что для вашей текущей системы базы данных есть либо интеграционный движок, предоставляемый ClickHouse, либо табличная функция, соответственно, или доступен драйвер JDBC или ODBC, предоставленный вендором.

Мы иногда называем этот метод миграции методом "пивота", потому что он использует промежуточную точку пивота или переход для переноса данных из исходной базы данных в целевую. Например, этот метод может потребоваться, если только исходящие соединения разрешены из частной или внутренней сети из-за требований безопасности, и поэтому вам нужно извлекать данные из исходной базы данных с помощью clickhouse-local, а затем загружать данные в целевую базу данных ClickHouse, с clickhouse-local, действующим как точка пивота.

ClickHouse предоставляет интеграционные движки и табличные функции (которые создают интеграционные движки на лету) для MySQL, PostgreSQL, MongoDB и SQLite. Для всех остальных популярных систем баз данных есть драйвер JDBC или ODBC, доступный от вендора системы.

Что такое clickhouse-local?

Миграция самоуправляемого ClickHouse

Обычно ClickHouse работает в виде кластера, где несколько экземпляров движка базы данных ClickHouse работает распределенно на разных серверах.

На одном сервере движок базы данных ClickHouse работает как часть программы clickhouse-server. Доступ к базе данных (пути, пользователи, безопасность и т. д.) настраивается с помощью файла конфигурации сервера.

Инструмент clickhouse-local позволяет вам использовать движок базы данных ClickHouse изолировано, в виде командной утилиты, для сверхбыстрой обработки SQL данных на большом объеме входных и выходных данных, без необходимости настраивать и запускать сервер ClickHouse.

Установка clickhouse-local

Вам нужен хост для clickhouse-local, который имеет сетевой доступ как к вашей текущей исходной системе базы данных, так и к вашей целевой службе ClickHouse Cloud.

На этом хосте загрузите соответствующую сборку clickhouse-local в зависимости от операционной системы вашего компьютера:

  1. Наиболее простой способ загрузить clickhouse-local локально — это выполнить следующую команду:
curl https://clickhouse.com/ | sh
  1. Запустите clickhouse-local (он просто выведет свою версию):
./clickhouse-local
Важно

Примеры в этом руководстве используют команды Linux для запуска clickhouse-local (./clickhouse-local). Чтобы запустить clickhouse-local на Mac, используйте ./clickhouse local.

Добавьте удаленную систему в ваш список IP-доступа ClickHouse Cloud

Чтобы функция remoteSecure могла подключиться к вашей службе ClickHouse Cloud, IP-адрес удаленной системы должен быть разрешен в списке IP-доступа. Разверните Управление вашим списком IP-доступа ниже этого совета для получения дополнительной информации.

Управление вашим списком доступа по IP

Из списка ваших сервисов ClickHouse Cloud выберите сервис, с которым будете работать, и перейдите в Настройки. Если список доступа по IP не содержит IP-адрес или диапазон удаленной системы, который должен подключаться к вашему сервису ClickHouse Cloud, то вы можете решить эту проблему с помощью Добавить IP:

Проверьте, разрешает ли сервис тр�афик с вашего IP-адреса в списке доступа по IP

Добавьте отдельный IP-адрес или диапазон адресов, которые должны подключаться к вашему сервису ClickHouse Cloud. Измените форму по своему усмотрению, а затем нажмите Сохранить.

Добавьте ваш текущий IP-адрес в список доступа по IP в ClickHouse Cloud

Пример 1: Миграция из MySQL в ClickHouse Cloud с интеграционным движком

Мы будем использовать интеграционный движок таблиц (созданный на лету с помощью mysql табличной функции) для чтения данных из исходной базы данных MySQL и будем использовать remoteSecure табличную функцию для записи данных в целевую таблицу на вашей службе ClickHouse Cloud.

Миграция самоуправляемого ClickHouse

На целевой службе ClickHouse Cloud:

Создайте целевую базу данных:

CREATE DATABASE db

Создайте целевую таблицу, имеющую схему, эквивалентную таблице MySQL:

CREATE TABLE db.table ...
примечание

Схема целевой таблицы ClickHouse Cloud и схема исходной таблицы MySQL должны быть согласованы (имена колонок и порядок должны совпадать, а типы данных колонок должны быть совместимы).

На хост-машине clickhouse-local:

Запустите clickhouse-local с запросом миграции:

  ./clickhouse-local --query "
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS')
SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"
примечание

На хост-машине clickhouse-local не хранится никаких данных локально. Вместо этого данные извлекаются из исходной таблицы MySQL и затем немедленно записываются в целевую таблицу на службе ClickHouse Cloud.

Пример 2: Миграция из MySQL в ClickHouse Cloud с помощью JDBC моста

Мы будем использовать JDBC интеграционный движок таблиц (созданный на лету с помощью jdbc табличной функции) вместе с ClickHouse JDBC Bridge и драйвером MySQL JDBC для чтения данных из исходной базы данных MySQL, и мы будем использовать remoteSecure табличную функцию для записи данных в целевую таблицу на вашей службе ClickHouse Cloud.

Миграция самоуправляемого ClickHouse

На целевой службе ClickHouse Cloud:

Создайте целевую базу данных:

CREATE DATABASE db