Миграция данных в Managed Service for ClickHouse® средствами ClickHouse®
С помощью сервиса Data Transfer вы можете перенести вашу базу данных из стороннего кластера-источника ClickHouse® в кластер-приемник Managed Service for ClickHouse®.
Этот способ позволяет:
- скопировать базу без остановки обслуживания пользователей;
- обойтись без создания промежуточной виртуальной машины или разрешения доступа к вашему кластеру-приемнику Managed Service for ClickHouse® из интернета.
Вы также можете использовать этот способ для переноса данных между двумя кластерами Managed Service for ClickHouse®. Для успешного переноса в эндпоинте-источнике укажите порты 8443
и 9440
, а также добавьте SSL-сертификат.
Подробнее см. в разделе Какие задачи решает сервис Yandex Data Transfer.
Перед началом работы
Разрешите подключение к кластеру-источнику из интернета.
Перенос данных
-
Подготовьте инфраструктуру:
ВручнуюС помощью Terraform-
Создайте кластер-приемник Managed Service for ClickHouse®, вычислительная мощность и размер хранилища которого соответствуют среде, в которой развернута копируемая база данных.
При создании кластера укажите группу безопасности, подготовленную ранее.
Имя базы в кластере-приемнике должно совпадать с именем базы-источника.
Если вы планируете подключаться к кластеру через сервис Yandex WebSQL, включите в настройках кластера настройку Доступ из WebSQL.
-
Создайте эндпоинт для источника:
-
Тип базы данных —
ClickHouse
. -
Параметры эндпоинта → Настройки подключения —
Пользовательская инсталляция
.Укажите параметры подключения к кластеру-источнику.
-
-
Создайте эндпоинт для приемника:
-
Тип базы данных —
ClickHouse
. -
Параметры эндпоинта → Настройки подключения —
Managed кластер
.Выберите кластер-приемник из списка и укажите настройки подключения к нему.
-
-
Создайте трансфер типа Копирование, использующий созданные эндпоинты, и активируйте его.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-ch-mch.tf
.В этом файле описаны:
- сеть;
- подсеть;
- группа безопасности и правило, необходимое для подключения к кластеру;
- кластер-приемник Managed Service for ClickHouse®;
- эндпоинт для источника;
- эндпоинт для приемника;
- трансфер.
-
Укажите в файле
data-transfer-ch-mch.tf
:-
параметры эндпоинта-источника:
source_user
иsource_pwd
— имя и пароль пользователя для доступа к источнику;source_db_name
— имя базы данных;source_host
— FQDN или IP-адрес сервера ClickHouse®;source_shard
— имя шарда;source_http_port
иsource_native_port
— порты для подключения по HTTP-интерфейсу и нативному интерфейсу ClickHouse®.
-
параметры кластера-приемника, которые используются и как параметры эндпоинта-приемника:
target_clickhouse_version
— версия ClickHouse®;target_user
иtarget_password
— имя и пароль пользователя-владельца базы данных.
-
параметры CLI Yandex Cloud, чтобы активировать кластер автоматически:
-
profile_name
— имя вашего профиля в CLI Yandex Cloud.Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
-
-
(Опционально) Если вы планируете подключаться к кластеру через сервис Yandex WebSQL, добавьте к ресурсу кластера блок
access
:access { web_sql = true }
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
.Трансфер активируется автоматически после создания.
-
Проверьте работоспособность трансфера
-
Дождитесь перехода трансфера в статус Завершен.
-
Убедитесь, что в базу данных Managed Service for ClickHouse® перенеслись данные из кластера-источника ClickHouse®:
Yandex WebSQLCLI-
Создайте подключение к БД в кластере Managed Service for ClickHouse®.
-
Проверьте, что БД содержит таблицы из кластера-источника. Для этого через созданное подключение выполните запрос к БД:
SHOW TABLES FROM <имя_базы_данных>;
-
Проверьте, что таблицы содержат данные из таблиц кластера-источника. Для этого через созданное подключение выполните запрос к нужной таблице:
SELECT * FROM <имя_базы_данных>.<имя_таблицы>;
-
Получите SSL-сертификат для подключения к кластеру Managed Service for ClickHouse®.
-
Подключитесь к БД в кластере Managed Service for ClickHouse® с помощью
clickhouse-client
. -
Проверьте, что БД содержит таблицы из кластера-источника:
SHOW TABLES FROM <имя_базы_данных>;
-
Проверьте, что таблицы содержат данные из таблиц кластера-источника:
SELECT * FROM <имя_базы_данных>.<имя_таблицы>;
-
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите кластер Managed Service for ClickHouse®.
- Удалите завершившийся трансфер.
- Удалите эндпоинты для источника и приемника.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-