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

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

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

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

Иногда мы называем этот метод миграции «pivot»-методом, потому что он использует промежуточное звено (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 вашего сервиса ClickHouse Cloud

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

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

Миграция самоуправляемого 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