Миграция на конфигурацию V1

Данный документ содержит инструкцию по миграции с конфигурации V2 на конфигурацию V1.

Примечание

Данная инструкция предназначена для аварийных ситуаций, когда после перехода на конфигурацию V2 возникли непредвиденные проблемы и требуется откат на конфигурацию V1, например, для последующего отката на версию YDB ниже v25-1. В штатном режиме работы эта процедура не требуется.

Исходное состояние

Миграция на конфигурацию V1 возможна только в том случае, если в кластере используется конфигурация V2. Это может быть достигнуто:

Узнать текущую версию конфигурации на узлах можно несколькими способами, описанными в статье Проверка версии конфигурации. Перед началом миграции убедитесь, что кластер работает на конфигурации V2.

Инструкция по миграции на конфигурацию V1

Для того чтобы перевести кластер YDB на конфигурацию V1, необходимо проделать следующие шаги:

  1. Получить текущую конфигурацию кластера с помощью команды ydb admin cluster config fetch:

    ydb -e grpc://<node.ydb.tech>:2135 admin cluster config fetch --for-v1-migration > config.yaml
    
    Подробнее

    Аргумент --for-v1-migration указывает, что будет получена полная конфигурация кластера, включая параметры настройки State Storage и статической группы.

  2. Изменить конфигурационный файл config.yaml, поменяв значение параметра self_management_config.enabled с true на false:

    self_management_config:
      enabled: false
    
    Подробнее

    Данная секция отвечает за управление механизмом распределённой конфигурации. Установка значения enabled: false отключает этот механизм. Далее управление конфигурацией State Storage и статической группы будет осуществляться вручную через секции domains_config и blob_storage_config соответственно в конфигурационном файле (эти секции были получены на предыдущем шаге при использовании флага --full).

  3. Загрузить обновлённый конфигурационный файл в кластер с помощью ydb admin cluster config replace:

    ydb -e grpc://<node.ydb.tech>:2135 admin cluster config replace -f config.yaml
    
  4. Перезапустить все узлы кластера с помощью процедуры rolling-restart.

    Подробнее

    После перезапуска узлов кластер будет переведён в режим ручного управления State Storage и статической группой, но всё ещё будет использовать единый конфигурационный файл, доставляемый через таблетку BSController. Конфигурация узлов при запуске всё ещё будет читаться из директории, указанной в опции ydbd --config-dir, и там же сохраняться.

  5. Получить текущую конфигурацию кластера с помощью ydb admin cluster config fetch:

    ydb -e grpc://<node.ydb.tech>:2135 admin cluster config fetch > config.yaml
    
    Подробнее

    В полученной конфигурации будут отсутствовать секции domains_config и blob_storage_config, так как они управляются вручную и не должны быть частью динамической конфигурации.

  6. Разместить полученный файл config.yaml (это будет ваша статическая конфигурация V1) в файловую систему каждого узла кластера.

  7. Перезапустить все узлы кластера с помощью процедуры rolling-restart, указав путь к статическому конфигурационному файлу через опцию ydbd --yaml-config и убрав опцию ydbd --config-dir:

    При ручном запуске добавьте опцию --yaml-config к команде ydbd server, не указывая опцию --config-dir:

    ydbd server --yaml-config /opt/ydb/cfg/config.yaml
    

    При использовании systemd добавьте опцию --yaml-config к команде ydbd server в конфигурационный файл systemd, а также удалите опцию --config-dir:

    ExecStart=/opt/ydb/bin/ydbd server --yaml-config /opt/ydb/config/config.yaml
    

    После обновления файла systemd выполните следующую команду, чтобы применить изменения:

    sudo systemctl daemon-reload
    

Убедиться в успешном завершении миграции можно, проверив версию конфигурации на узлах кластера одним из способов, описанных в статье Проверка версии конфигурации. На всех узлах кластера должна использоваться конфигурация v1.

Результат

В результате проделанных действий кластер будет переведён в режим конфигурации V1. Конфигурация состоит из двух частей: статической и динамической, управление статической группой и State Storage осуществляется вручную.