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

Миграция в 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 ниже для получения дополнительной информации.

Manage your IP Access List

From your ClickHouse Cloud services list choose the service that you will work with and switch to Settings. If the IP Access List does not contain the IP Address or range of the remote system that needs to connect to your ClickHouse Cloud service, then you can resolve the problem with Add IPs:

Check to see if the service allows traffic from your IP address in the IP Access List

Add the individual IP Address, or the range of addresses that need to connect to your ClickHouse Cloud service. Modify the form as you see fit and then Save.

Add your current IP address to the IP Access List in 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