Миграция баз данных ClickHouse® в облачные базы данных ClickHouse®
Вы можете перенести базы данных из своего ClickHouse® в облачную базу данных ClickHouse® с помощью функции remoteSecure или remote.
Эти функции используются в запросах SELECT и INSERT для доступа к удаленным серверам ClickHouse®, что позволяет переносить таблицы так же просто, как выполнить запрос INSERT INTO со встроенным SELECT.
Мы рекомендуем использовать функцию remoteSecure, так как она поддерживает защищенное соединение в отличие от remote.
Подробнее о функциях в инструкции remote, remoteSecure документации ClickHouse®.
Что нужно для миграции
- исходная база данных ClickHouse®, доступная из интернета по публичному IP-адресу или DNS-адресу;
- облачная база данных ClickHouse® с публичным IP-адресом для доступа в интернет и из интернета.
Шаги миграции
1. Подготовить исходный кластер ClickHouse®
-
Создайте пользователя, который будет читать исходную таблицу:
CREATE USER <user_name>IDENTIFIED WITH SHA256_PASSWORD BY '<password>'SETTINGS readonly = 1;Укажите:
<user_name>— имя пользователя;<password>— пароль пользователя.
-
Выдайте пользователю права на чтения исходной таблицы:
GRANT SELECT ON <database_name>.<table_name> TO <user_name>;Укажите:
<database_name>— имя базы данных;<table_name>— имя таблицы;<user_name>— имя пользователя.
-
Скопируйте определение исходной таблицы:
SELECT create_table_queryFROM system.tablesWHERE database = '<database_name>' AND table = '<table_name>'Укажите:
<database_name>— имя базы данных;<table_name>— имя таблицы.
2. Подготовить целевой кластер ClickHouse®
-
Чтобы у кластера был доступ в интернет и из интернета, подключите публичный IP-адрес.
-
Создайте целевую базу данных:
CREATE DATABASE <database_name>;Укажите
<database_name>— имя базы данных. -
Создайте таблицу назначения с помощью оператора
CREATE TABLEисходной таблицы, который вы скопировали при подготовке исходного кластера ClickHouse® на шаге 3. При выполнении оператораCREATEизменитеENGINEнаReplicatedMergeTreeбез указания параметров. СекцииORDER BY,PRIMARY KEY,PARTITION BY,SAMPLE BY,TTLиSETTINGSоставьте без изменений.CREATE TABLE <database_name>.<table_name> ...Укажите:
<database_name>— имя базы данных;<table_name>— имя таблицы.
3. Перенести данные
Для переноса данных мы рекомендуем использовать функцию remoteSecure, так как она поддерживает защищенное соединение в отличие от remote.
Если на исходном кластере не настроен SSL, используйте функцию remote.
На целевом кластере перенесите данные из исходного с помощью функции remoteSecure:
INSERT INTO <database_name>.<table_name> SELECT * FROM remoteSecure('<host>', <database_name>, <table_name>, '<user_name>', '<password>')
Укажите:
<database_name>— имя базы данных;<table_name>— имя таблицы;<host>— IP-адрес или DNS-адрес исходного кластера;<user_name>— имя пользователя;<password>— пароль пользователя.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc. https://clickhouse.com.