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

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

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

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

Иногда мы называем этот метод миграции «пивот»-методом, потому что он использует промежуточную точку (pivot) или «hop» для перемещения данных из исходной базы данных в целевую. Например, этот метод может потребоваться, если из-за требований безопасности внутри частной или внутренней сети разрешены только исходящие соединения. В этом случае вам нужно сначала получить данные из исходной базы данных с помощью clickhouse-local, а затем передать данные в целевую базу данных ClickHouse, при этом clickhouse-local выступает в роли промежуточного pivot-узла.

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 Access List вашего сервиса ClickHouse Cloud

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

Управление списком доступа по IP (IP Access List)

В списке сервисов ClickHouse Cloud выберите сервис, с которым вы будете работать, и перейдите в Settings. Если в IP Access List отсутствует IP-адрес или диапазон адресов удалённой системы, которой нужно подключиться к вашему сервису ClickHouse Cloud, вы можете решить эту проблему с помощью Add IPs:

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

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

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

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

Мы будем использовать integration table engine (динамически создаваемый с помощью mysql table function) для чтения данных из исходной базы данных MySQL, а также remoteSecure table function для записи данных в целевую таблицу в вашем сервисе 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 bridge

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

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

На целевом сервисе ClickHouse Cloud:

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

  CREATE DATABASE db