Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for MySQL®
  • Начало работы
    • Все инструкции
      • Информация об имеющихся кластерах
      • Создание кластера
      • Изменение кластера
      • Остановка и запуск кластера
      • Управление хостами кластера
      • Миграция хостов в другую зону доступности
      • Управление резервными копиями
      • Обновление версии MySQL®
      • Удаление кластера
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы
  1. Пошаговые инструкции
  2. Кластеры
  3. Миграция хостов в другую зону доступности

Миграция хостов кластера MySQL® в другую зону доступности

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.

Хосты кластера Managed Service for MySQL® располагаются в зонах доступности Yandex Cloud. Чтобы перенести хосты из одной зоны в другую:

  1. Создайте подсеть в зоне доступности, в которую вы переносите хосты.

  2. Добавьте хост в кластер:

    Консоль управления
    CLI
    Terraform
    REST API
    gRPC API
    1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.

    2. Нажмите на имя нужного кластера и перейдите на вкладку Хосты.

    3. Нажмите кнопку  Создать хост.

    4. Укажите параметры хоста:

      • Зону доступности, куда переносятся хосты.
      • Новую подсеть.
      • Выберите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
    5. Нажмите Сохранить.

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    Выполните команду:

    yc managed-mysql host add \
       --cluster-name <имя_кластера> \
       --host zone-id=<зона_доступности>,`
             `subnet-id=<ID_новой_подсети>,`
             `assign-public-ip=<публичный_доступ_к_хосту:_true_или_false>
    

    Имя кластера можно получить со списком кластеров в каталоге. В параметре zone-id укажите зону, куда вы переносите хосты.

    1. В конфигурационный файл Terraform с планом инфраструктуры добавьте манифест хоста:

      resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
        ...
        host {
          zone             = "<зона_доступности>"
          subnet_id        = "<идентификатор_новой_подсети>"
          assign_public_ip = <публичный_доступ_к_хосту:_true_или_false>
        }
      }
      

      В параметре zone укажите зону, куда вы переносите хосты.

    2. Проверьте корректность настроек.

      1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

      2. Выполните команду:

        terraform validate
        

        Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    3. Подтвердите изменение ресурсов.

      1. Выполните команду для просмотра планируемых изменений:

        terraform plan
        

        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

      2. Если вас устраивают планируемые изменения, внесите их:

        1. Выполните команду:

          terraform apply
          
        2. Подтвердите изменение ресурсов.

        3. Дождитесь завершения операции.

    1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

      export IAM_TOKEN="<IAM-токен>"
      
    2. Воспользуйтесь методом Cluster.addHosts и выполните запрос, например, с помощью cURL:

      curl \
         --request POST \
         --header "Authorization: Bearer $IAM_TOKEN" \
         --header "Content-Type: application/json" \
         --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<идентификатор_кластера>/hosts:batchCreate' \
         --data '{
                   "hostSpecs": [
                     {
                       "zoneId": "<зона_доступности>",
                       "subnetId": "<идентификатор_новой_подсети>",
                       "assignPublicIp": <публичный_доступ_к_хосту:_true_или_false>
                     }
                   ]
                 }'
      

      Идентификатор кластера можно запросить со списком кластеров в каталоге.

    3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

    1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

      export IAM_TOKEN="<IAM-токен>"
      
    2. Клонируйте репозиторий cloudapi:

      cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
      

      Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

    3. Воспользуйтесь вызовом ClusterService/AddHosts и выполните запрос, например, с помощью gRPCurl:

      grpcurl \
         -format json \
         -import-path ~/cloudapi/ \
         -import-path ~/cloudapi/third_party/googleapis/ \
         -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \
         -rpc-header "Authorization: Bearer $IAM_TOKEN" \
         -d '{
               "cluster_id": "<идентификатор_кластера>",
               "host_specs": [
                 {
                   "zone_id": "<зона_доступности>",
                   "subnet_id": "<идентификатор_новой_подсети>",
                   "assign_public_ip": <публичный_доступ_к_хосту:_true_или_false>
                 }
               ]
             }' \
         mdb.api.cloud.yandex.net:443 \
         yandex.cloud.mdb.mysql.v1.ClusterService.AddHosts
      

      Идентификатор кластера можно запросить со списком кластеров в каталоге.

    4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  3. Чтобы успешно выполнять подключение к базе данных после миграции, укажите FQDN нового хоста в вашем бэкенде или клиенте (например, в коде или графической IDE). Удалите FQDN прежнего хоста в первоначальной зоне.

    Чтобы узнать FQDN, получите список хостов в кластере:

    yc managed-mysql host list --cluster-name <имя_кластера>
    

    FQDN указан в выводе команды, в столбце NAME. Также вы можете использовать особый FQDN для подключения.

  4. Удалите хосты в первоначальной зоне доступности:

    Консоль управления
    CLI
    Terraform
    REST API
    gRPC API
    1. Перейдите на страницу каталога и выберите сервис Managed Service for MySQL.
    2. Нажмите на имя нужного кластера и выберите вкладку Хосты.
    3. Нажмите на значок в строке нужного хоста, выберите пункт Удалить и подтвердите удаление.

    Выполните команду для каждого хоста:

    yc managed-mysql host delete <FQDN_хоста> --cluster-name <имя_кластера>
    
    1. В конфигурационном файле Terraform с планом инфраструктуры удалите из описания кластера блоки host с первоначальной зоной доступности.

    2. Проверьте корректность настроек.

      1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

      2. Выполните команду:

        terraform validate
        

        Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    3. Введите слово yes и нажмите Enter.

      1. Выполните команду для просмотра планируемых изменений:

        terraform plan
        

        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

      2. Если вас устраивают планируемые изменения, внесите их:

        1. Выполните команду:

          terraform apply
          
        2. Подтвердите изменение ресурсов.

        3. Дождитесь завершения операции.

    1. Воспользуйтесь методом Cluster.deleteHosts и выполните запрос, например, с помощью cURL:

      curl \
         --request POST \
         --header "Authorization: Bearer $IAM_TOKEN" \
         --header "Content-Type: application/json" \
         --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<идентификатор_кластера>/hosts:batchDelete' \
         --data '{
                   "hostNames": [
                     "<FQDN_хоста>"
                   ]
                 }'
      

      Где hostNames — массив с удаляемым хостом.

      В одном запросе можно передать только один FQDN хоста. Если нужно удалить несколько хостов, выполните запрос для каждого хоста.

    2. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

    1. Воспользуйтесь вызовом ClusterService/DeleteHosts и выполните запрос, например, с помощью gRPCurl:

      grpcurl \
         -format json \
         -import-path ~/cloudapi/ \
         -import-path ~/cloudapi/third_party/googleapis/ \
         -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \
         -rpc-header "Authorization: Bearer $IAM_TOKEN" \
         -d '{
               "cluster_id": "<идентификатор_кластера>",
               "host_names": [
                 "<FQDN_хоста>"
               ]
             }' \
         mdb.api.cloud.yandex.net:443 \
         yandex.cloud.mdb.mysql.v1.ClusterService.DeleteHosts
      

      Где host_names — массив с удаляемым хостом.

      В одном запросе можно передать только один FQDN хоста. Если нужно удалить несколько хостов, выполните запрос для каждого хоста.

    2. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  5. Дождитесь, когда кластер перейдет в состояние Alive. В консоли управления перейдите на страницу каталога и выберите сервис Managed Service for MySQL. Состояние кластера отображается в столбце Доступность.

Примечание

Для кластеров, хосты которых располагаются в зоне доступности ru-central1-d, недоступно:

  • использование платформы Intel Broadwell;
  • хранилище на локальных SSD-дисках при использовании платформы Intel Cascade Lake.

Особенности миграции в сервисе Yandex Data TransferОсобенности миграции в сервисе Yandex Data Transfer

Если кластер выступает в роли эндпоинта при передаче данных с помощью сервиса Data Transfer и используется тип трансфера Репликация или Копирование и репликация, перезапустите трансфер после миграции кластера. Так трансфер получит сведения о новой топологии кластера.

Трансферы типа Копирование перезапускать не нужно, так как во время их активации информация о новой топологии передается автоматически.

Чтобы перезапустить трансфер, выберите один из двух способов:

  • Деактивируйте трансфер и дождитесь его перехода в статус Остановлен. Затем активируйте трансфер и дождитесь его перехода в статус Реплицируется.
  • Измените какую-либо настройку трансфера или эндпоинта.

Подробнее см. в разделе Миграция эндпоинтов и трансфера Data Transfer в другую зону доступности.

Примечание

Для кластера MySQL®, выступающего в трансфере в качестве эндпоинта-источника, включите GTID-режим (GTID-MODE = ON).

Была ли статья полезна?

Предыдущая
Управление хостами кластера
Следующая
Управление резервными копиями
Проект Яндекса
© 2025 ООО «Яндекс.Облако»