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

В этой статье:

  • Создать кластер
  • Создать копию кластера
  • Примеры
  • Создание кластера с одним хостом
  • Создание кластера из нескольких хостов
  1. Пошаговые инструкции
  2. Кластеры
  3. Создание кластера

Создание кластера MySQL®

Статья создана
Yandex Cloud
Улучшена
Обновлена 2 октября 2025 г.
  • Создать кластер
  • Создать копию кластера
  • Примеры
    • Создание кластера с одним хостом
    • Создание кластера из нескольких хостов

Примечание

В регионе Казахстан доступны только платформы standard-v3 (Intel Ice Lake) и standard-v3-t4i (Intel Ice Lake with T4i). Другие типы платформ, кластеры GPU и выделенные хосты недоступны.

Кластер MySQL® — один или несколько хостов базы данных. В кластерах из более чем одного хоста автоматически настраивается полусинхронная репликация.

Подробнее об устройстве кластера Managed Service for MySQL® см. в разделе Взаимосвязь ресурсов сервиса.

Примечание

  • Количество хостов, которые можно создать вместе с кластером MySQL®, зависит от выбранного типа диска и класса хостов.
  • Доступные типы диска зависят от выбранного класса хостов.

Создать кластерСоздать кластер

Для создания кластера Managed Service for MySQL® нужна роль vpc.user и роль managed-mysql.editor или выше. О том, как назначить роль, см. документацию Identity and Access Management.

Консоль управления
CLI
Terraform
REST API
gRPC API

Смотреть видео в Yandex Cloud Video.

Чтобы создать кластер Managed Service for MySQL®:

  1. В консоли управления выберите каталог, в котором нужно создать кластер БД.

  2. Выберите сервис Managed Service for MySQL.

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

  4. Введите имя кластера Managed Service for MySQL® в поле Имя кластера. Имя кластера должно быть уникальным в рамках каталога.

  5. Выберите окружение, в котором нужно создать кластер Managed Service for MySQL® (после создания кластера окружение изменить невозможно):

    • PRODUCTION — для стабильных версий ваших приложений.
    • PRESTABLE — для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
  6. Выберите версию СУБД.

  7. Выберите класс хостов — он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. Все доступные варианты перечислены в разделе Классы хостов. При изменении класса хостов для кластера Managed Service for MySQL® меняются характеристики всех уже созданных хостов.

  8. В блоке Размер хранилища:

    • Выберите тип диска.

      От выбранного типа зависит, с каким шагом можно будет изменить размер диска:

      • Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
      • Локальные SSD-диски:
        • для платформ Intel Broadwell и Intel Cascade Lake — с шагом 100 ГБ;
        • для платформы Intel Ice Lake — с шагом 368 ГБ.
      • Нереплицируемые SSD-диски и cверхбыстрые сетевые SSD-диски с тремя репликами — с шагом 93 ГБ.
    • Выберите объем, который будет использоваться для данных и резервных копий. Подробнее о том, как занимают пространство резервные копии, см. раздел Резервные копии.

      Примечание

      Если хранилище БД заполнится на 95%, кластер Managed Service for MySQL® перейдет в режим «только чтение». Увеличивайте размер хранилища заранее.

    • (Опционально) Выберите опцию Зашифрованный диск, чтобы зашифровать диск пользовательским ключом KMS.

      • Чтобы создать новый ключ, нажмите кнопку Создать.

      • Чтобы использовать созданный ранее ключ, выберите его в поле Ключ KMS.

      Подробнее о шифровании дисков см. в разделе Хранилище.

  9. (Опционально) В блоке Автоматическое увеличение размера хранилища:

    • Выберите опцию В окно обслуживания при заполненности более и укажите процент от текущего размера хранилища, при достижении которого хранилище будет увеличено в следующее окно обслуживания.

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

    • В поле Максимальный размер хранилища укажите максимальный размер хранилища, который может быть достигнут при автоматическом увеличении.

    Важно

    • Автоматическое увеличение размера хранилища не поддерживается на выделенных хостах.
    • Если выбрано увеличение размера хранилища в окно обслуживания, настройте расписание окна обслуживания.

    Подробнее об автоматическом увеличении размера хранилища.

  10. В блоке База данных укажите атрибуты БД:

    • Имя БД. Это имя должно быть уникальным в рамках каталога.

      Имя базы может содержать латинские буквы, цифры, дефис и подчеркивание. Максимальная длина имени 63 символа. Имена mysql, sys, information_schema и performance_schema зарезервированы для собственных нужд Managed Service for MySQL®. Создавать БД с этими именами нельзя.

    • Имя пользователя — владельца БД.

      Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания. Длина от 1 до 32 символов.

    • Пароль пользователя. Длина пароля — от 8 до 128 символов.

  11. В блоке Сетевые настройки выберите:

    • Облачную сеть для размещения кластера.
    • Группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности, чтобы можно было подключаться к кластеру Managed Service for MySQL®.
  12. В блоке Хосты нажмите на значок и выберите параметры хостов БД, создаваемых вместе с кластером Managed Service for MySQL®:

    • Зону доступности.

    • Подсеть хоста — по умолчанию каждый хост создается в отдельной подсети.

    • Опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.

    • Приоритет назначения хоста мастером.

    • Приоритет хоста как MySQL®-реплики для создания резервной копии.

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

    • два хоста, если выбран тип диска network-ssd, network-hdd или network-ssd-io-m3.
    • три хоста, если выбран тип диска local-ssd или network-ssd-nonreplicated.

    Важно

    Не рекомендуется создавать кластер из одного хоста. Такой кластер обходится дешевле, но не обеспечивает высокую доступность.

    После создания кластера Managed Service for MySQL® в него можно добавить дополнительные хосты, если для этого достаточно ресурсов каталога.

  13. При необходимости задайте дополнительные настройки кластера Managed Service for MySQL®:

    • Начало резервного копирования (UTC) — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию — 22:00 - 23:00 UTC.

    • Срок хранения автоматических резервных копий, дней

      Автоматические резервные копии будут храниться указанное количество дней.

    • Окно обслуживания — настройки времени технического обслуживания:

      • Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
      • Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.

      Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.

    • Доступ из DataLens — разрешает анализировать данные из кластера в сервисе Yandex DataLens.

      Подробнее о настройке подключения см. в разделе Подключение к DataLens.

    • Доступ из консоли управления — разрешает выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud.

    • Доступ из Yandex Query — разрешает выполнять YQL-запросы к базам данных кластера из сервиса Yandex Query. Функциональность находится на стадии Preview. Значение по умолчанию — false.

    • Сбор статистики — включите эту опцию, чтобы воспользоваться инструментом Диагностика производительности в кластере.

    • Защита от удаления — управляет защитой кластера от непреднамеренного удаления.

      Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.

  14. При необходимости задайте настройки СУБД уровня кластера.

    Примечание

    Некоторые настройки MySQL® зависят от выбранного класса хостов.

  15. Нажмите кнопку Создать кластер.

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

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

Чтобы создать кластер Managed Service for MySQL®:

  1. Проверьте, есть ли в каталоге подсети для хостов кластера Managed Service for MySQL®:

    yc vpc subnet list
    

    Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе Yandex Virtual Private Cloud.

  2. Посмотрите описание команды CLI для создания кластера Managed Service for MySQL®:

    yc managed-mysql cluster create --help
    
  3. Укажите параметры кластера Managed Service for MySQL® в команде создания:

    yc managed-mysql cluster create \
      --name=<имя_кластера> \
      --environment <окружение> \
      --network-name <имя_сети> \
      --host zone-id=<зона_доступности>,`
        `subnet-id=<идентификатор_подсети>,`
        `assign-public-ip=<разрешить_публичный_доступ_к_хосту>,`
        `priority=<приоритет_при_выборе_хоста-мастера>,`
        `backup-priority=<приоритет_для_резервного_копирования> \
      --mysql-version <версия_MySQL®> \
      --resource-preset <класс_хоста> \
      --user name=<имя_пользователя>,password=<пароль_пользователя> \
      --database name=<имя_БД> \
      --disk-size <размер_хранилища_ГБ> \
      --disk-type <network-hdd|network-ssd|network-ssd-nonreplicated|local-ssd> \
      --security-group-ids <список_идентификаторов_групп_безопасности>
    

    Идентификатор подсети subnet-id необходимо указывать, если в выбранной зоне доступности создано две и больше подсетей.

    Где:

    • --environment — окружение: prestable или production.

    • --assign-public-ip — публичный доступ к хосту: true или false.

    • --disk-type — тип диска.

    • --priority — приоритет при выборе нового хоста-мастера: от 0 до 100.

    • --backup-priority — приоритет для резервного копирования: от 0 до 100.

    • --mysql-version — версия MySQL®: 5.7 или 8.0.

    • --user — содержит имя (name) и пароль (password) пользователя MySQL®.

      Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания. Длина от 1 до 32 символов.

      Длина пароля — от 8 до 128 символов.

    При необходимости задайте дополнительные настройки кластера Managed Service for MySQL®:

    yc managed-mysql cluster create \
      ...
      --backup-window-start <время_начала_резервного_копирования> \
      --backup-retain-period-days=<срок_хранения_копий> \
      --disk-encryption-key-id <идентификатор_ключа_KMS> \
      --datalens-access=<разрешить_доступ_из_DataLens> \
      --websql-access=<разрешить_доступ_из_WebSQL> \
      --yandexquery-access=<разрешить_доступ_из_Yandex_Query> \
      --deletion-protection \
      --performance-diagnostics enabled=true,`
                               `sessions-sampling-interval=<интервал_сбора_сессий>,`
                               `statements-sampling-interval=<интервал_сбора_запросов>
      --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_ГБ>,`
                             `planned-usage-threshold=<порог_для_планового_увеличения_в_процентах>,`
                             `emergency-usage-threshold=<порог_для_незамедлительного_увеличения_в_процентах> \
      --maintenance-window type=<тип_технического_обслуживания>,`
                          `day=<день_недели>,`
                          `hour=<час_дня>
    

    Где:

    • --backup-window-start — время начала резервного копирования.

    • --backup-retain-period-days — срок хранения автоматических резервных копий в днях.

    • --disk-encryption-key-id — шифрование диска пользовательским ключом KMS.

      Примечание

      Функциональность находится на стадии Preview. Чтобы получить доступ, обратитесь в техническую поддержку или к вашему аккаунт-менеджеру.

      Подробнее о шифровании дисков см. в разделе Хранилище.

    • --datalens-access — разрешает доступ к кластеру из Yandex DataLens. Значение по умолчанию — false. Подробнее о настройке подключения см в разделе Подключение к кластеру MySQL® из DataLens.

    • --websql-access — разрешает выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud. Значение по умолчанию — false.

    • --yandexquery-access — разрешает выполнять YQL-запросы к базам данных кластера из сервиса Yandex Query. Функциональность находится на стадии Preview. Значение по умолчанию — false.

    • --deletion-protection — защита кластера от непреднамеренного удаления: true или false.

      Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.

    • --performance-diagnostics — активация сбора статистики для диагностики производительности кластера. Допустимые значения параметров sessions-sampling-interval и statements-sampling-interval — от 1 до 86400 секунд.

    • --disk-size-autoscaling — настройки автоматического увеличения размера хранилища:

      • planned-usage-threshold (опционально) — порог заполнения хранилища в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — 0 (автоматическое увеличение отключено).

        Допустимые значения: от 0 до 100.

      • emergency-usage-threshold (опционально) — порог заполнения хранилища в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — 0 (автоматическое увеличение отключено).

        Допустимые значения: от 0 до 100.

      • disk-size-limit — максимальный размер хранилища после увеличения, в гигабайтах.

      Важно

      • Автоматическое увеличение размера хранилища не поддерживается на выделенных хостах.
      • При использовании параметра planned-usage-threshold необходимо задать окно технического обслуживания в настройке --maintenance-window.

      • Если заданы оба порога, значение emergency-usage-threshold должно быть больше planned-usage-threshold.

    • --maintenance-window — настройки времени технического обслуживания (в т. ч. для выключенных кластеров), где type — тип технического обслуживания:

      • anytime (по умолчанию) — в любое время.
      • weekly — по расписанию. Для этого значения дополнительно укажите:
        • day — день недели: MON, TUE, WED, THU, FRI, SAT или SUN.
        • hour — час дня по UTC: от 1 до 24.

    При необходимости задайте настройки СУБД.

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

Чтобы создать кластер Managed Service for MySQL®:

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

    • Кластер БД — описание кластера и его хостов.

    • База данных — описание БД кластера.

      Имя базы может содержать латинские буквы, цифры, дефис и подчеркивание. Максимальная длина имени 63 символа. Имена mysql, sys, information_schema и performance_schema зарезервированы для собственных нужд Managed Service for MySQL®. Создавать БД с этими именами нельзя.

    • Пользователь — описание пользователя кластера.

    • Сеть — описание облачной сети, в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.

    • Подсети — описание подсетей, к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.

    Пример структуры конфигурационного файла:

    resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
      name                = "<имя_кластера>"
      environment         = "<окружение>"
      network_id          = "<идентификатор_сети>"
      version             = "<версия_MySQL®>"
      security_group_ids  = [ "<список_идентификаторов_групп_безопасности>" ]
      deletion_protection = <защитить_кластер_от_удаления>
    
      resources {
        resource_preset_id = "<класс_хоста>"
        disk_type_id       = "<тип_диска>"
        disk_size          = "<размер_хранилища_ГБ>"
      }
    
      host {
        zone             = "<зона_доступности>"
        subnet_id        = "<идентификатор_подсети>"
        assign_public_ip = <разрешить_публичный_доступ_к_хосту>
        priority         = <приоритет_при_выборе_хоста-мастера>
        backup_priority  = <приоритет_для_резервного_копирования>
      }
    }
    
    resource "yandex_mdb_mysql_database" "<имя_БД>" {
      cluster_id = "<идентификатор_кластера>"
      name       = "<имя_БД>"
    }
    
    resource "yandex_mdb_mysql_user" "<имя_пользователя>" {
      cluster_id = "<идентификатор_кластера>"
      name       = "<имя_пользователя>"
      password   = "<пароль_пользователя>"
      permission {
        database_name = "<имя_БД>"
        roles         = ["ALL"]
      }
    }
    
    resource "yandex_vpc_network" "<имя_сети>" { name = "<имя_сети>" }
    
    resource "yandex_vpc_subnet" "<имя_подсети>" {
      name           = "<имя_подсети>"
      zone           = "<зона_доступности>"
      network_id     = "<идентификатор_сети>"
      v4_cidr_blocks = ["<диапазон>"]
    }
    

    Где:

    • environment — окружение: PRESTABLE или PRODUCTION.

    • version — версия MySQL®: 5.7 или 8.0.

    • deletion_protection — защита кластера от непреднамеренного удаления: true или false.

      Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.

    • assign_public_ip — публичный доступ к хосту: true или false.

    • priority — приоритет при выборе нового хоста-мастера: от 0 до 100.

    • backup_priority — приоритет для резервного копирования: от 0 до 100.

    • nameи password— имя и пароль пользователя MySQL®.

      Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания. Длина от 1 до 32 символов.

      Длина пароля — от 8 до 128 символов.

    • Чтобы настроить автоматическое увеличение размера хранилища, добавьте к описанию кластера блок disk_size_autoscaling:

      resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
        ...
        disk_size_autoscaling {
          disk_size_limit           = <максимальный_размер_хранилища_в_ГиБ>
          emergency_usage_threshold = <порог_для_незамедлительного_увеличения_в_процентах>
          planned_usage_threshold   = <порог_для_планового_увеличения_в_процентах>
        }
        ...
      }
      

      Где:

      • disk_size_limit — максимальный размер хранилища после увеличения, в гибибайтах.

      • emergency_usage_threshold (опционально) — порог заполнения хранилища в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — 0 (автоматическое увеличение отключено).

        Допустимые значения: от 0 до 100.

      • planned_usage_threshold (опционально) — порог заполнения хранилища в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — 0 (автоматическое увеличение отключено).

        Допустимые значения: от 0 до 100.

      Важно

      • Автоматическое увеличение размера хранилища не поддерживается на выделенных хостах.
      • При использовании параметра planned_usage_threshold необходимо задать окно технического обслуживания в блоке maintenance_window.

      • Если заданы оба порога, значение emergency_usage_threshold должно быть больше planned_usage_threshold.

    • Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок maintenance_window:

      resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
        ...
        maintenance_window {
          type = <тип_технического_обслуживания>
          day  = <день_недели>
          hour = <час_дня>
        }
        ...
      }
      

      Где:

      • type — тип технического обслуживания. Принимает значения:
        • ANYTIME — в любое время.
        • WEEKLY — по расписанию.
      • day — день недели для типа WEEKLY: MON, TUE, WED, THU, FRI, SAT или SUN.
      • hour — час дня по UTC для типа WEEKLY: от 1 до 24.
    • Чтобы разрешить доступ из DataLens и выполнение SQL-запросов из консоли управления, добавьте к описанию кластера блок access:

      resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
        ...
        access {
          data_lens = <true_или_false>
          web_sql   = <true_или_false>
        }
        ...
      }
      
    • Чтобы задать время начала резервного копирования, добавьте к описанию кластера Managed Service for MySQL® блок backup_window_start:

      resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
        ...
        backup_window_start {
          hours   = <час>
          minutes = <минута>
        }
        ...
      }
      

      Где:

      • hours — час начала резервного копирования.
      • minutes — минута начала резервного копирования.
    • Чтобы задать срок хранения резервных копий, укажите в описании кластера Managed Service for MySQL® параметр backup_retain_period_days:

      resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
        ...
          backup_retain_period_days = <срок_хранения_копий>
          ...
      }
      

      Где backup_retain_period_days — срок хранения автоматических резервных копий в днях.

      Допустимые значения: от 7 до 60. Значение по умолчанию — 7.

    • Чтобы активировать сбор статистики для диагностики производительности кластера, добавьте к описанию кластера Managed Service for MySQL® блок performance_diagnostics:

      resource "yandex_mdb_mysql_cluster" "<название_кластера>" {
        ...
        performance_diagnostics {
          enabled = true
          sessions_sampling_interval = <интервал_сбора_сессий>
          statements_sampling_interval = <интервал_сбора_запросов>
        }
        ...
      }
      

      Допустимые значения параметров sessions_sampling_interval и statements_sampling_interval — от 1 до 86400 секунд.

    Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.

  2. Проверьте корректность конфигурационных файлов.

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

    2. Выполните проверку с помощью команды:

      terraform plan
      

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

  3. Создайте кластер Managed Service for MySQL®.

    1. Если в конфигурации нет ошибок, выполните команду:

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

    После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся IP-адреса виртуальных машин. Проверить появление ресурсов и их настройки можно в консоли управления.

    Ограничения по времени

    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL®:

    • создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
    • изменение кластера, в том числе обновление версии MySQL®, — 60 минут;
    • удаление кластера — 15 минут.

    Операции, длящиеся дольше указанного времени, прерываются.

    Как изменить эти ограничения?

    Добавьте к описанию кластера блок timeouts, например:

    resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
      ...
      timeouts {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
        delete = "30m"   # 30 минут
      }
    }
    
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Создайте файл body.json и добавьте в него следующее содержимое:

    {
        "folderId": "<идентификатор_каталога>",
        "name": "<имя_кластера>",
        "environment": "<окружение>",
        "networkId": "<идентификатор_сети>",
        "securityGroupIds": [
            "<идентификатор_группы_безопасности_1>",
            "<идентификатор_группы_безопасности_2>",
            ...
            "<идентификатор_группы_безопасности_N>"
        ],
        "deletionProtection": <защитить_кластер_от_удаления>,
        "configSpec": {
            "version": "<версия_MySQL®>",
            "resources": {
                "resourcePresetId": "<класс_хостов>",
                "diskSize": "<размер_хранилища_в_байтах>",
                "diskTypeId": "<тип_диска>"
            },
            "access": {
                "dataLens": <разрешить_доступ_из_DataLens>,
                "webSql": <разрешить_доступ_из_WebSQL>,
                "yandexQuery": <разрешить_доступ_из_Yandex_Query>
            },
            "performanceDiagnostics": {
                "enabled": <активировать_сбор_статистики>,
                "sessionsSamplingInterval": "<интервал_сбора_сессий>",
                "statementsSamplingInterval": "<интервал_сбора_запросов>"
            },
            "diskSizeAutoscaling": {
                "plannedUsageThreshold": "<порог_для_планового_увеличения_в_процентах>",
                "emergencyUsageThreshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
            }
        },
        "databaseSpecs": [
            {
                "name": "<имя_БД>"
            },
            { <аналогичный_набор_настроек_для_БД_2> },
            { ... },
            { <аналогичный_набор_настроек_для_БД_N> }
        ],
        "userSpecs": [
            {
                "name": "<имя_пользователя>",
                "password": "<пароль_пользователя>",
                "permissions": [
                    {
                        "databaseName": "<имя_БД>",
                        "roles": [
                            "<привилегия_1>", "<привилегия_2>", ..., "<привилегия_N>"
                        ]
                    }
                ]
            },
            { <аналогичный_набор_настроек_для_пользователя_2> },
            { ... },
            { <аналогичный_набор_настроек_для_пользователя_N> }
        ],
        "hostSpecs": [
            {
                "zoneId": "<зона_доступности>",
                "subnetId": "<идентификатор_подсети>",
                "assignPublicIp": <разрешить_публичный_доступ_к_хосту>
            },
            { <аналогичный_набор_настроек_для_хоста_2> },
            { ... },
            { <аналогичный_набор_настроек_для_хоста_N> }
        ],
        "maintenanceWindow": {
            "weeklyMaintenanceWindow": {
                "day": "<день_недели>",
                "hour": "<час_дня>"
            }
        }
    }
    

    Где:

    • folderId — идентификатор каталога. Его можно запросить со списком каталогов в облаке.

    • name — имя кластера.

    • environment — окружение кластера: PRODUCTION или PRESTABLE.

    • networkId — идентификатор сети, в которой будет размещен кластер.

    • securityGroupIds — идентификаторы групп безопасности.

    • deletionProtection — защита кластера от непреднамеренного удаления: true или false.

      Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.

    • configSpec — настройки кластера:

      • version — версия MySQL®.

      • resources — ресурсы кластера:

        • resourcePresetId — класс хостов;
        • diskSize — размер диска в байтах;
        • diskTypeId — тип диска.
      • access — настройки доступа к кластеру из сервисов Yandex Cloud:

        • dataLens — доступ из Yandex DataLens. Подробнее о настройке подключения см в разделе Подключение к кластеру MySQL® из DataLens.
        • webSql — выполнение SQL-запросов к базам данных кластера из консоли управления Yandex Cloud.
        • yandexQuery — выполнение YQL-запросов к базам данных кластера из сервиса Yandex Query. Функциональность находится на стадии Preview.

        Возможные значения настроек: true или false.

    • performanceDiagnostics — настройки для сбора статистики:

      • enabled — активация сбора статистики: true или false;
      • sessionsSamplingInterval — интервал сбора сессий: от 1 до 86400 секунд;
      • statementsSamplingInterval — интервал сбора запросов: от 1 до 86400 секунд.
    • diskSizeAutoscaling — настройки автоматического увеличения размера хранилища:

      • plannedUsageThreshold (опционально) — порог заполнения хранилища в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — 0 (автоматическое увеличение отключено).

        Допустимые значения: от 0 до 100.

      • emergencyUsageThreshold (опционально) — порог заполнения хранилища в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — 0 (автоматическое увеличение отключено).

        Допустимые значения: от 0 до 100.

      • diskSizeLimit — максимальный размер хранилища после увеличения, в байтах.

      Важно

      • Автоматическое увеличение размера хранилища не поддерживается на выделенных хостах.
      • При использовании параметра plannedUsageThreshold необходимо задать окно технического обслуживания в настройке maintenanceWindow.

      • Если заданы оба порога, значение emergencyUsageThreshold должно быть больше plannedUsageThreshold.

    • databaseSpecs — настройки баз данных в виде массива элементов. Каждый элемент соответствует отдельной БД и содержит параметр name — имя БД.

      Имя базы может содержать латинские буквы, цифры, дефис и подчеркивание. Максимальная длина имени 63 символа. Имена mysql, sys, information_schema и performance_schema зарезервированы для собственных нужд Managed Service for MySQL®. Создавать БД с этими именами нельзя.

    • userSpecs — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

      • name — имя пользователя.

      • password — пароль пользователя. Длина пароля — от 8 до 128 символов.

      • permissions — настройки разрешений пользователя:

        • databaseName — имя базы данных, к которой пользователь получает доступ.
        • roles — массив привилегий пользователя. Каждая привилегия представлена в виде отдельной строки в массиве. Список доступных значений см. в разделе Привилегии пользователей в кластере.

        Для каждой базы данных добавьте отдельный элемент с настройками разрешений в массив permissions.

    • hostSpecs — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:

      • zoneId — зона доступности;
      • subnetId — идентификатор подсети;
      • assignPublicIp — разрешение на подключение к хосту из интернета: true или false.
    • maintenanceWindow — настройки окна технического обслуживания (в т. ч. для выключенных кластеров). Передайте один из параметров:

      • anytime (по умолчанию) — техническое обслуживание происходит в любое время.

      • weeklyMaintenanceWindow — техническое обслуживание происходит по расписанию:

        • day — день недели в формате DDD. Допустимые значения: MON, TUE, WED, THU, FRI, SAT, SUN.
        • hour — час дня по UTC в формате HH. Допустимые значения: от 1 до 24.
  3. Воспользуйтесь методом Cluster.create и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.yandexcloud.kz/managed-mysql/v1/clusters' \
        --data "@body.json"
    
  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

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

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

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

  3. Создайте файл body.json и добавьте в него следующее содержимое:

    {
        "folder_id": "<идентификатор_каталога>",
        "name": "<имя_кластера>",
        "environment": "<окружение>",
        "network_id": "<идентификатор_сети>",
        "security_group_ids": [
            "<идентификатор_группы_безопасности_1>",
            "<идентификатор_группы_безопасности_2>",
            ...
            "<идентификатор_группы_безопасности_N>"
        ],
        "deletion_protection": <защитить_кластер_от_удаления>,
        "config_spec": {
            "version": "<версия_MySQL®>",
            "resources": {
                "resource_preset_id": "<класс_хостов>",
                "disk_size": "<размер_хранилища_в_байтах>",
                "disk_type_id": "<тип_диска>"
            },
            "access": {
                "data_lens": <разрешить_доступ_из_DataLens>,
                "web_sql": <разрешить_доступ_из_WebSQL>,
                "yandex_query": <разрешить_доступ_из_Yandex_Query>
            },
            "performance_diagnostics": {
                "enabled": <активировать_сбор_статистики>,
                "sessions_sampling_interval": "<интервал_сбора_сессий>",
                "statements_sampling_interval": "<интервал_сбора_запросов>"
            },
            "disk_size_autoscaling": {
                "planned_usage_threshold": "<порог_для_планового_увеличения_в_процентах>",
                "emergency_usage_threshold": "<порог_для_незамедлительного_увеличения_в_процентах>",
                "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
            }
        },
        "database_specs": [
              {
                  "name": "<имя_БД>"
              },
              { <аналогичный_набор_настроек_для_БД_2> },
              { ... },
              { <аналогичный_набор_настроек_для_БД_N> }
          ],
        "user_specs": [
            {
                "name": "<имя_пользователя>",
                "password": "<пароль_пользователя>",
                "permissions": [
                    {
                        "database_name": "<имя_БД>",
                        "roles": [
                            "<привилегия_1>", "<привилегия_2>", ..., "<привилегия_N>"
                        ]
                    }
                ]
            }
        ],
        "host_specs": [
            {
                "zone_id": "<зона_доступности>",
                "subnet_id": "<идентификатор_подсети>",
                "assign_public_ip": <разрешить_публичный_доступ_к_хосту>
            }
        ],
        "maintenance_window": {
          "weekly_maintenance_window": {
            "day": "<день_недели>",
            "hour": "<час_дня>"
          }
        }
    }
    

    Где:

    • folder_id — идентификатор каталога. Его можно запросить со списком каталогов в облаке.

    • name — имя кластера.

    • environment — окружение кластера: PRODUCTION или PRESTABLE.

    • network_id — идентификатор сети, в которой будет размещен кластер.

    • security_group_ids — идентификаторы групп безопасности.

    • deletion_protection — защита кластера от непреднамеренного удаления: true или false.

      Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.

    • config_spec — настройки кластера:

      • version — версия MySQL®.

      • resources — ресурсы кластера:

        • resource_preset_id — класс хостов;
        • disk_size — размер диска в байтах;
        • disk_type_id — тип диска.
      • access — настройки доступа к кластеру из сервисов Yandex Cloud:

        • data_lens — доступ из Yandex DataLens. Подробнее о настройке подключения см в разделе Подключение к кластеру MySQL® из DataLens.
        • web_sql — выполнение SQL-запросов к базам данных кластера из консоли управления Yandex Cloud.
        • yandex_query — выполнение YQL-запросов к базам данных кластера из сервиса Yandex Query. Функциональность находится на стадии Preview.

        Возможные значения настроек: true или false.

    • performance_diagnostics — настройки для сбора статистики:

      • enabled — активация сбора статистики: true или false;
      • sessions_sampling_interval — интервал сбора сессий: от 1 до 86400 секунд;
      • statements_sampling_interval — интервал сбора запросов: от 60 до 86400 секунд.
    • disk_size_autoscaling — настройки автоматического увеличения размера хранилища:

      • planned_usage_threshold (опционально) — порог заполнения хранилища в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию — 0 (автоматическое увеличение отключено).

        Допустимые значения: от 0 до 100.

      • emergency_usage_threshold (опционально) — порог заполнения хранилища в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию — 0 (автоматическое увеличение отключено).

        Допустимые значения: от 0 до 100.

      • disk_size_limit — максимальный размер хранилища после увеличения, в байтах.

      Важно

      • Автоматическое увеличение размера хранилища не поддерживается на выделенных хостах.
      • При использовании параметра planned_usage_threshold необходимо задать окно технического обслуживания в настройке maintenance_window.

      • Если заданы оба порога, значение emergency_usage_threshold должно быть больше planned_usage_threshold.

    • database_specs — настройки баз данных в виде массива элементов. Каждый элемент соответствует отдельной БД и содержит параметр name — имя БД.

    • user_specs — настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:

      • name — имя пользователя.

      • password — пароль пользователя. Длина пароля — от 8 до 128 символов.

      • permissions — настройки разрешений пользователя:

        • database_name — имя базы данных, к которой пользователь получает доступ.
        • roles — массив привилегий пользователя. Каждая привилегия представлена в виде отдельной строки в массиве. Список доступных значений см. в разделе Привилегии пользователей в кластере.

        Для каждой базы данных добавьте отдельный элемент с настройками разрешений в массив permissions.

    • host_specs — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:

      • zone_id — зона доступности;
      • subnet_id — идентификатор подсети;
      • assign_public_ip — разрешение на подключение к хосту из интернета: true или false.
    • maintenance_window — настройки окна технического обслуживания (в т. ч. для выключенных кластеров). Передайте один из параметров:

      • anytime (по умолчанию) — техническое обслуживание происходит в любое время.

      • weekly_maintenance_window — техническое обслуживание происходит по расписанию:

        • day — день недели в формате DDD. Допустимые значения: MON, TUE, WED, THU, FRI, SAT, SUN.
        • hour — час дня по UTC в формате HH. Допустимые значения: от 1 до 24.
  4. Воспользуйтесь вызовом ClusterService/Create и выполните запрос, например, с помощью 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 @ \
        mdb.api.yandexcloud.kz:443 \
        yandex.cloud.mdb.mysql.v1.ClusterService.Create \
        < body.json
    
  5. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Важно

Если вы указали идентификаторы групп безопасности при создании кластера Managed Service for MySQL®, для подключения к нему может потребоваться дополнительная настройка групп безопасности.

Создать копию кластераСоздать копию кластера

Вы можете создать кластер MySQL®, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера MySQL® импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер MySQL® обладает множеством настроек и нужно создать похожий на него кластер.

Чтобы создать копию кластера MySQL®:

Terraform
  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

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

  5. В той же рабочей директории разместите файл с расширением .tf и содержимым:

    resource "yandex_mdb_mysql_cluster" "old" { }
    
  6. Запишите идентификатор первоначального кластера MySQL® в переменную окружения:

    export MYSQL_CLUSTER_ID=<идентификатор_кластера>
    

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

  7. Импортируйте настройки первоначального кластера MySQL® в конфигурацию Terraform:

    terraform import yandex_mdb_mysql_cluster.old ${MYSQL_CLUSTER_ID}
    
  8. Получите импортированную конфигурацию:

    terraform show
    
  9. Скопируйте ее из терминала и вставьте в файл с расширением .tf.

  10. Расположите файл в новой директории imported-cluster.

  11. Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:

    • Укажите новое имя кластера в строке resource и параметре name.
    • Удалите параметры created_at, health, id и status.
    • В блоках host удалите параметры fqdn.
    • Если в блоке maintenance_window указано значение параметра type = "ANYTIME", удалите параметр hour.
    • (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
  12. В директории imported-cluster получите данные для аутентификации.

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

  14. Поместите конфигурационный файл в директорию imported-cluster и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

  15. Проверьте корректность файлов конфигурации Terraform:

    terraform validate
    

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

  16. Создайте необходимую инфраструктуру:

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

      terraform plan
      

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

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

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

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

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

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

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL®:

  • создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
  • изменение кластера, в том числе обновление версии MySQL®, — 60 минут;
  • удаление кластера — 15 минут.

Операции, длящиеся дольше указанного времени, прерываются.

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
    delete = "30m"   # 30 минут
  }
}

ПримерыПримеры

Создание кластера с одним хостомСоздание кластера с одним хостом

CLI
Terraform

Чтобы создать кластер Managed Service for MySQL® с одним хостом, передайте один параметр --host.

Создайте кластер Managed Service for MySQL® с тестовыми характеристиками:

  • С именем my-mysql.
  • Версии 8.0.
  • В окружении production.
  • В сети default.
  • В группе безопасности с идентификатором enp6saqnq4ie********.
  • С одним хостом класса s2.micro в подсети b0rcctk2rvtr********, в зоне доступности kz1-a.
  • С хранилищем на сетевых SSD-дисках (network-ssd) объемом 20 ГБ.
  • С одним пользователем (user1), с паролем user1user1.
  • С одной БД db1, в которой пользователь user1 имеет полные права (эквивалент GRANT ALL PRIVILEGES on db1.*).
  • С защитой от непреднамеренного удаления.
  1. Запустите команду создания кластера Managed Service for MySQL®:

    yc managed-mysql cluster create \
      --name="my-mysql" \
      --mysql-version 8.0 \
      --environment=production \
      --network-name=default \
      --security-group-ids enp6saqnq4ie******** \
      --host zone-id=ru-central1-a,subnet-id=b0rcctk2rvtr******** \
      --resource-preset s2.micro \
      --disk-type network-ssd \
      --disk-size 20 \
      --user name=user1,password="user1user1" \
      --database name=db1 \
      --deletion-protection
    
  2. Запустите команду изменения привилегий пользователя user1.

    yc managed-mysql user grant-permission user1 \
      --cluster-name="my-mysql" \
      --database=db1 \
      --permissions ALL
    

Создайте кластер Managed Service for MySQL® и сеть для него с тестовыми характеристиками:

  • С именем my-mysql.

  • Версии 8.0.

  • В окружении PRESTABLE.

  • В облаке с идентификатором b1gq90dgh25********.

  • В каталоге с идентификатором b1gia87mbaom********.

  • В новой сети mynet.

  • С одним хостом класса s2.micro в новой подсети mysubnet, в зоне доступности kz1-a. Подсеть mysubnet будет иметь диапазон 10.5.0.0/24.

  • В новой группе безопасности mysql-sg, разрешающей подключение к кластеру Managed Service for MySQL® из интернета через порт 3306.

  • С хранилищем на сетевых SSD-дисках (network-ssd) объемом 20 ГБ.

  • С одним пользователем (user1), с паролем user1user1.

  • С одной БД db1, в которой пользователь user1 имеет полные права (эквивалент GRANT ALL PRIVILEGES on db1.*).

  • С защитой от непреднамеренного удаления.

Конфигурационный файл для такого кластера Managed Service for MySQL® выглядит так:

resource "yandex_mdb_mysql_cluster" "my-mysql" {
  name                = "my-mysql"
  environment         = "PRESTABLE"
  network_id          = yandex_vpc_network.mynet.id
  version             = "8.0"
  security_group_ids  = [ yandex_vpc_security_group.mysql-sg.id ]
  deletion_protection = true

  resources {
    resource_preset_id = "s2.micro"
    disk_type_id       = "network-ssd"
    disk_size          = 20
  }

  host {
    zone      = "kz1-a"
    subnet_id = yandex_vpc_subnet.mysubnet.id
  }
}

resource "yandex_mdb_mysql_database" "db1" {
  cluster_id = yandex_mdb_mysql_cluster.my-mysql.id
  name       = "db1"
}

resource "yandex_mdb_mysql_user" "<имя_пользователя>" {
  cluster_id = yandex_mdb_mysql_cluster.my-mysql.id
  name       = "user1"
  password   = "user1user1"
  permission {
    database_name = yandex_mdb_mysql_database.db1.name
    roles         = ["ALL"]
  }
}

resource "yandex_vpc_network" "mynet" {
  name = "mynet"
}

resource "yandex_vpc_security_group" "mysql-sg" {
  name       = "mysql-sg"
  network_id = yandex_vpc_network.mynet.id

  ingress {
    description    = "MySQL®"
    port           = 3306
    protocol       = "TCP"
    v4_cidr_blocks = [ "0.0.0.0/0" ]
  }
}

resource "yandex_vpc_subnet" "mysubnet" {
  name           = "mysubnet"
  zone           = "kz1-a"
  network_id     = yandex_vpc_network.mynet.id
  v4_cidr_blocks = ["10.5.0.0/24"]
}

Создание кластера из нескольких хостовСоздание кластера из нескольких хостов

Примечание

В регионе Казахстан доступна только зона доступности kz1-a.

CLI
Terraform

Чтобы создать кластер Managed Service for MySQL® из нескольких хостов, передайте столько параметров --host, сколько должно быть хостов в кластере.

Создайте кластер Managed Service for MySQL® с тестовыми характеристиками:

  • С именем my-mysql-3.

  • Версии 8.0.

  • В окружении prestable.

  • В сети default.

  • В группе безопасности с идентификатором enp6saqnq4ie********.

  • С тремя хостами класса s2.micro с публичным доступом к ним.

    По одному хосту будет размещено в подсетях сети default:

    • subnet-a: 10.5.0.0/24, зона доступности kz1-a.
    • subnet-b: 10.6.0.0/24, зона доступности kz1-b.
    • subnet-d: 10.7.0.0/24, зона доступности kz1-d.

    Хосту в подсети subnet-b будет присвоен приоритет резервного копирования. Резервные копии будут создаваться из данных с этого хоста, если он не выбран хостом-мастером.

  • С хранилищем на сетевых SSD-дисках (network-ssd) объемом 32 ГБ.

  • С одним пользователем (user1), с паролем user1user1.

  • С одной БД db1, в которой пользователь user1 имеет полные права (эквивалент GRANT ALL PRIVILEGES on db1.*).

  1. Запустите команду создания кластера Managed Service for MySQL®:

    yc managed-mysql cluster create \
      --name="my-mysql-3" \
      --mysql-version 8.0 \
      --environment=prestable \
      --network-name=default \
      --security-group-ids enp6saqnq4ie******** \
      --host zone-id=kz1-a,`
             `subnet-name=subnet-a,`
             `assign-public-ip=true \
      --host zone-id=kz1-b,`
             `subnet-name=subnet-b,`
             `backup-priority=10,`
             `assign-public-ip=true \
      --host zone-id=kz1-d,`
             `subnet-name=subnet-d,`
             `assign-public-ip=true \
      --resource-preset s2.micro \
      --disk-type network-ssd \
      --disk-size 32 \
      --user name=user1,password="user1user1" \
      --database name=db1
    
  2. Запустите команду изменения привилегий пользователя user1.

    yc managed-mysql user grant-permission user1 \
      --cluster-name="my-mysql-3" \
      --database=db1 \
      --permissions ALL
    

Создайте кластер Managed Service for MySQL® и сеть для него с тестовыми характеристиками:

  • С именем my-mysql-3.

  • Версии 8.0.

  • В окружении PRESTABLE.

  • В облаке с идентификатором b1gq90dgh25********.

  • В каталоге с идентификатором b1gia87mbaom********.

  • В новой сети mynet.

  • С тремя хостами класса s2.micro с публичным доступом к ним.

    По одному хосту будет размещено в новых подсетях:

    • mysubnet-a: 10.5.0.0/24, зона доступности kz1-a.
    • mysubnet-b: 10.6.0.0/24, зона доступности kz1-b.
    • mysubnet-d: 10.7.0.0/24, зона доступности kz1-d.

    Эти подсети будут принадлежать сети mynet.

    Хосту в подсети mysubnet-b будет присвоен приоритет резервного копирования. Резервные копии будут создаваться из данных с этого хоста, если он не выбран хостом-мастером.

  • В новой группе безопасности mysql-sg, разрешающей подключение к кластеру Managed Service for MySQL® из интернета через порт 3306.

  • С хранилищем на сетевых SSD-дисках (network-ssd) объемом 32 ГБ.

  • С одним пользователем (user1), с паролем user1user1.

  • С одной БД db1, в которой пользователь user1 имеет полные права (эквивалент GRANT ALL PRIVILEGES on db1.*).

Конфигурационный файл для такого кластера Managed Service for MySQL® выглядит так:

resource "yandex_mdb_mysql_cluster" "my-mysql-3" {
  name                = "my-mysql-3"
  environment         = "PRESTABLE"
  network_id          = yandex_vpc_network.mynet.id
  version             = "8.0"
  security_group_ids  = [ yandex_vpc_security_group.mysql-sg.id ]

  resources {
    resource_preset_id = "s2.micro"
    disk_type_id       = "network-ssd"
    disk_size          = 32
  }

  host {
    zone             = "kz1-a"
    subnet_id        = yandex_vpc_subnet.mysubnet-a.id
    assign_public_ip = true
  }

  host {
    zone             = "kz1-b"
    subnet_id        = yandex_vpc_subnet.mysubnet-b.id
    assign_public_ip = true
    backup_priority  = 10
  }

  host {
    zone             = "kz1-d"
    subnet_id        = yandex_vpc_subnet.mysubnet-d.id
    assign_public_ip = true
  }
}

resource "yandex_mdb_mysql_database" "db1" {
  cluster_id = yandex_mdb_mysql_cluster.my-mysql-3.id
  name       = "db1"
}

resource "yandex_mdb_mysql_user" "user1" {
  cluster_id = yandex_mdb_mysql_cluster.my-mysql-3.id
  name       = "user1"
  password   = "user1user1"
  permission {
    database_name = yandex_mdb_mysql_database.db1.name
    roles         = ["ALL"]
  }
}

resource "yandex_vpc_network" "mynet" {
  name = "mynet"
}

resource "yandex_vpc_security_group" "mysql-sg" {
  name       = "mysql-sg"
  network_id = yandex_vpc_network.mynet.id

  ingress {
    description    = "MySQL®"
    port           = 3306
    protocol       = "TCP"
    v4_cidr_blocks = [ "0.0.0.0/0" ]
  }
}

resource "yandex_vpc_subnet" "mysubnet-a" {
  name             = "mysubnet-a"
  zone             = "kz1-a"
  network_id       = yandex_vpc_network.mynet.id
  v4_cidr_blocks   = ["10.5.0.0/24"]
}

resource "yandex_vpc_subnet" "mysubnet-b" {
  name             = "mysubnet-b"
  zone             = "kz1-b"
  network_id       = yandex_vpc_network.mynet.id
  v4_cidr_blocks   = ["10.6.0.0/24"]
}

resource "yandex_vpc_subnet" "mysubnet-d" {
  name             = "mysubnet-d"
  zone             = "kz1-d"
  network_id       = yandex_vpc_network.mynet.id
  v4_cidr_blocks   = ["10.7.0.0/24"]
}

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

Предыдущая
Информация об имеющихся кластерах
Следующая
Изменение кластера
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»