Миграция кластера с v1 на v2
Перед началом миграции рекомендуем ознакомиться с изменениями.
Чтобы выполнить миграцию кластера с ресурса v1 (yandex_mdb_clickhouse_cluster) на ресурс v2 (yandex_mdb_clickhouse_cluster_v2):
- Обновите конфигурацию Terraform.
- Сохраните идентификатор кластера.
- Удалите старый ресурс из state.
- Импортируйте существующий ресурс в новый.
- (Опционально) Импортируйте базы данных и пользователей.
- Проверьте планируемые изменения.
- Примените изменения.
Обновите конфигурацию Terraform
-
Внесите все синтаксические изменения, которые указаны в таблице:
v1 (блочный синтаксис) v2 (синтаксис присваивания) clickhouse { }clickhouse = { }zookeeper { }zookeeper = { }access { }access = { }cloud_storage { }cloud_storage = { }backup_window_start { }backup_window_start = { }clickhouse.config.kafka { }kafka = { }(внутриconfig)clickhouse.config.rabbitmq { }rabbitmq = { }(внутриconfig)clickhouse.config.compression { }(повторяющийся блок)compression = [{ method = "LZ4", ... }]host { }(повторяющийся блок)hosts = { "key" = { } }shard { }(повторяющийся блок)shards = { "shard1" = { } } -
Задайте ключи для хостов.
Сохраните идентификатор кластера
-
Выполните команду:
terraform state show yandex_mdb_clickhouse_cluster.main -
Скопируйте значение
idиз вывода, оно понадобится далее.
Удалите старый ресурс из state
Выполните команду:
terraform state rm yandex_mdb_clickhouse_cluster.main
Импортируйте существующий ресурс в новый
Выполните команду:
terraform import yandex_mdb_clickhouse_cluster_v2.main <идентификатор_кластера>
В команде используйте значение id, которое вы получили ранее.
После импорта ключами хостов в state станут их FQDN, например "rc1a-abc.mdb.yandexcloud.net".
(Опционально) Импортируйте базы данных и пользователей
Если database {} или user {} раньше были частью ресурса кластера, а теперь представлены отдельными ресурсами, импортируйте их:
terraform import 'yandex_mdb_clickhouse_database.mydb' "<идентификатор_кластера>:<имя_БД>"
terraform import 'yandex_mdb_clickhouse_user.myuser' "<идентификатор_кластера>:<имя_пользователя>"
Проверьте планируемые изменения
Выполните команду:
terraform plan
В терминале отобразится список ресурсов с параметрами. Это проверочный этап: ресурсы не будут созданы. Если в конфигурации есть ошибки, Terraform на них укажет.
В plan все хосты могут отображаться как + и -. Хотя это и выглядит настораживающе, применение изменений безопасно для совпадающих хостов.
Провайдер выполняет сопоставление хостов в три этапа:
- Ключ совпадает в
planиstate— хост сохраняется без изменений, никаких действий не требуется. - Полное соответствие по
zone,subnet_id,type,shard_name,assign_public_ip— ключ вstateпереименовывается в ключ изplan, сам хост не затрагивается. - Частичное совпадение по
zone,FQDN,shard_name,subnet_id— ключ вstateпереименовывается в ключ изplan, при этом может потребоваться обновление, напримерassign_public_ip.
Для ключей хостов в plan используются короткие ключи, например "c1", "k1". При совпадении zone, subnet, type и shard запустится второй этап сопоставления: ключи будут переименованы без фактических изменений хостов.
Важно
Перед выполнением terraform apply убедитесь, что для каждого хоста, который отображается как + и -, значения zone, subnet_id, type, shard_name и assign_public_ip совпадают. Изменение любого из этих полей может привести к пересозданию хоста.
Примените изменения
-
Чтобы создать ресурсы, выполните команду:
terraform apply -
Подтвердите создание ресурсов: введите в терминал слово
yesи нажмите Enter.Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
.
В случае возникновения ошибок ознакомьтесь с разделом Ошибки при миграции.