Миграция хостов кластера ClickHouse® в другую зону доступности
Хосты ClickHouse® и ZooKeeper кластера Managed Service for ClickHouse® располагаются в зонах доступности Yandex Cloud. Хосты ClickHouse® и ZooKeeper можно перенести из одной зоны в другую с помощью этой инструкции, а хосты c ClickHouse® Keeper — с помощью обращения в службу поддержки
Примечание
Для кластеров, хосты которых располагаются в зоне доступности ru-central1-d
, недоступно:
- использование платформы Intel Broadwell;
- хранилище на локальных SSD-дисках при использовании платформы Intel Cascade Lake.
Перенести хосты ClickHouse®
-
Убедитесь, что в результате миграции будут перенесены только реплицируемые таблицы на движке семейства
ReplicatedMergeTree
.Нереплицируемые таблицы будут потеряны во время миграции.
-
Если вы создали кластер без поддержки ClickHouse® Keeper, включите отказоустойчивость с использованием хостов ZooKeeper. Иначе вы не сможете добавить новые хосты в шарды и выполнить миграцию.
-
Создайте подсеть в зоне доступности, в которую вы переносите хосты.
-
Добавьте хост в кластер:
Консоль управленияCLITerraformAPI-
Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. -
Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
-
Нажмите кнопку Создать хост.
-
Укажите параметры хоста:
- Зону доступности, куда переносятся хосты.
- Новую подсеть.
- Выберите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
-
Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
.Выполните команду:
yc managed-clickhouse host add \ --cluster-name <имя_кластера> \ --host type=clickhouse,` `zone-id=<зона_доступности>,` `subnet-id=<идентификатор_новой_подсети>,` `assign-public-ip=<публичный_доступ_к_хосту:_true_или_false>
Имя кластера можно получить со списком кластеров в каталоге. В параметре
zone-id
укажите зону, куда вы переносите хосты.-
В конфигурационный файл Terraform с планом инфраструктуры добавьте манифест хоста:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... host { type = "CLICKHOUSE" zone = "<зона_доступности>" subnet_id = "<идентификатор_новой_подсети>" assign_public_ip = <публичный_доступ_к_хосту:_true_или_false> } }
В параметре
zone
укажите зону, куда вы переносите хосты. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Чтобы добавить хост в кластер, воспользуйтесь методом REST API addHosts для ресурса Cluster или вызовом gRPC API ClusterService/AddHosts и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Идентификатор можно получить со списком кластеров в каталоге. - Настройки нового хоста в параметрах
hostSpecs
.
-
-
Чтобы успешно выполнять подключение к базе данных после миграции, укажите FQDN нового хоста в вашем бэкенде или клиенте (например, в коде или графической IDE). Удалите FQDN прежнего хоста в первоначальной зоне.
Чтобы узнать FQDN, получите список хостов в кластере:
yc managed-clickhouse host list --cluster-name <имя_кластера>
FQDN указан в выводе команды, в столбце
NAME
. Также вы можете использовать особый FQDN для подключения. -
Удалите хосты в первоначальной зоне доступности:
Консоль управленияCLITerraformAPI- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Хосты.
- Нажмите на значок
в строке нужного хоста, выберите пункт Удалить и подтвердите удаление.
Выполните команду для каждого хоста:
yc managed-clickhouse host delete <FQDN_хоста> --cluster-name <имя_кластера>
-
В конфигурационном файле Terraform с планом инфраструктуры удалите из описания кластера блоки
host
с первоначальной зоной доступности. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Введите слово
yes
и нажмите Enter.-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Чтобы удалить хост, воспользуйтесь методом REST API deleteHosts для ресурса Cluster или вызовом gRPC API ClusterService/DeleteHosts и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - FQDN-имя или массив имен удаляемых хостов в параметре
hostNames
. FQDN-имена можно получить в консоли управления , на странице кластера, на вкладке Хосты.
- Перейдите на страницу каталога
-
Дождитесь, когда кластер перейдет в состояние Alive. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. Состояние кластера отображается в столбце Доступность.
Перенести хосты ZooKeeper
-
Создайте подсеть в зоне доступности, в которую вы переносите хосты.
-
Добавьте хост в кластер:
Консоль управленияCLITerraformAPI- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
- Нажмите кнопку Добавить хосты ZooKeeper.
- Укажите новую подсеть и зону доступности, куда переносятся хосты.
- Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
.Выполните команду:
yc managed-clickhouse host add \ --cluster-name <имя_кластера> \ --host type=zookeeper,` `zone-id=<зона_доступности>,` `subnet-id=<идентификатор_новой_подсети>,` `assign-public-ip=<публичный_доступ_к_хосту:_true_или_false>
Имя кластера можно получить со списком кластеров в каталоге. В параметре
zone-id
укажите зону, куда вы переносите хосты.-
В конфигурационный файл Terraform с планом инфраструктуры добавьте манифест хоста:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... host { type = "ZOOKEEPER" zone = "<зона_доступности>" subnet_id = "<идентификатор_новой_подсети>" assign_public_ip = <публичный_доступ_к_хосту:_true_или_false> } }
В параметре
zone
укажите зону, куда вы переносите хосты. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Чтобы добавить хост в кластер, воспользуйтесь методом REST API addZookeeper для ресурса Cluster или вызовом gRPC API ClusterService/AddZookeeper и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Идентификатор можно получить со списком кластеров в каталоге. - Настройки нового хоста в параметрах
resources
иhostSpecs
.
- Перейдите на страницу каталога
-
Удалите хосты в первоначальной зоне доступности:
Консоль управленияCLITerraformAPI- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Хосты.
- Нажмите на значок
в строке нужного хоста, выберите пункт Удалить и подтвердите удаление.
Выполните команду для каждого хоста:
yc managed-clickhouse host delete <FQDN_хоста> --cluster-name <имя_кластера>
-
В конфигурационном файле Terraform с планом инфраструктуры удалите из описания кластера блоки
host
с первоначальной зоной доступности. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Введите слово
yes
и нажмите Enter.-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Чтобы удалить хост, воспользуйтесь методом REST API deleteHosts для ресурса Cluster или вызовом gRPC API ClusterService/DeleteHosts и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - FQDN-имя или массив имен удаляемых хостов в параметре
hostNames
. FQDN-имена можно получить в консоли управления , на странице кластера, на вкладке Хосты.
- Перейдите на страницу каталога
-
Дождитесь, когда кластер перейдет в состояние Alive. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse. Состояние кластера отображается в столбце Доступность.
Особенности миграции в сервисе Yandex Data Transfer
Если кластер выступает в роли эндпоинта при передаче данных с помощью сервиса Data Transfer и используется тип трансфера Репликация или Копирование и репликация, перезапустите трансфер после миграции кластера. Так трансфер получит сведения о новой топологии кластера.
Трансферы типа Копирование перезапускать не нужно, так как во время их активации информация о новой топологии передается автоматически.
Чтобы перезапустить трансфер, выберите один из двух способов:
- Деактивируйте трансфер и дождитесь его перехода в статус Остановлен. Затем активируйте трансфер и дождитесь его перехода в статус Реплицируется.
- Измените какую-либо настройку трансфера или эндпоинта.
Подробнее см. в разделе Миграция эндпоинтов и трансфера Data Transfer в другую зону доступности.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc