Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Managed Service for MySQL®
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение кластера
    • Подключение к DataLens
    • Управление хостами MySQL
    • Управление базами данных
    • Управление пользователями
    • Управление правами пользователей
    • Управление резервными копиями
    • Просмотр логов кластера
    • Удаление кластера
    • Диагностика производительности
    • Мониторинг состояния кластера и хостов
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for MySQL
    • Квоты и лимиты
    • Типы хранилища
    • Резервные копии
    • Репликация
    • Техническое обслуживание
    • Права пользователей
    • Настройки MySQL
  • Практические руководства
    • Все сценарии
    • Анализ производительности и оптимизация
    • Выгрузка базы данных в Yandex Data Proc
    • Миграция базы данных в Managed Service for MySQL
    • Миграция базы данных из Managed Service for MySQL в MySQL
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • ResourcePresetService
      • UserService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • backup
        • create
        • delete
        • deleteHosts
        • get
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • move
        • rescheduleMaintenance
        • restore
        • start
        • startFailover
        • stop
        • streamLogs
        • update
        • updateHosts
      • Database
        • Overview
        • create
        • delete
        • get
        • list
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о MySQL
    • Подключение
    • Проблемы с чтением/записью в кластер
    • Проблемы с производительностью
    • Изменение кластера
    • Мониторинг и логи
    • Миграция/перенос
    • Настройки параметров MySQL
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Создание кластера

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

Статья создана
Yandex Cloud
  • Как создать кластер MySQL
  • Примеры
    • Создание кластера с одним хостом

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

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

Примечание

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

Как создать кластер MySQL

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

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

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

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

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

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

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

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

    • Выберите тип хранилища.

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

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

      Примечание

      Если хранилище баз данных заполнится на 95%, кластер перейдет в режим только чтение. Увеличивайте размер хранилища заранее.

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

    • Имя базы данных. Имя БД должно быть уникальным в рамках каталога и содержать только латинские буквы, цифры и подчеркивания.
    • Имя пользователя — владельца БД. Имя пользователя должно содержать только латинские буквы, цифры и подчеркивания.
    • Пароль пользователя, от 8 до 128 символов.
  10. В блоке Сетевые настройки выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности для того, чтобы можно было подключаться к кластеру.

  11. В блоке Хосты выберите параметры хостов БД, создаваемых вместе с кластером. Открыв блок Расширенные настройки, вы можете выбрать конкретные подсети для каждого хоста — по умолчанию каждый хост создается в отдельной подсети.

    Если в блоке Размер хранилища выбран local-ssd или network-ssd-nonreplicated, то необходимо добавить не менее трех хостов в кластер. После создания кластера в него можно добавить дополнительные хосты, если для этого достаточно ресурсов каталога.

  12. При необходимости задайте дополнительные настройки кластера:

    • Начало резервного копирования (UTC)

      Время по UTC (в 24-часовом формате), когда начинается резервное копирование кластера. Если время не задано, резервное копирование начинается в 22:00 UTC.

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

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

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

    • Доступ из DataLens

      Разрешает анализировать данные из кластера в сервисе Yandex DataLens.

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

    • Доступ из консоли управления

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

    • Доступ из Data Transfer — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме.

      Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.

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

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

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

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

    Примечание

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

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

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы создать кластер:

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

    $ yc vpc subnet list
    

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

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

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

    yc managed-mysql cluster create \
      --name=<имя кластера> \
      --environment <окружение, prestable или production> \
      --network-name <имя сети> \
      --host zone-id=<зона доступности>,subnet-id=<идентификатор подсети> \
      --mysql-version <версия MySQL: 5.7 или 8.0> \
      --resource-preset <класс хоста> \
      --user name=<имя пользователя>,password=<пароль пользователя> \
      --database name=<имя базы данных> \
      --disk-size <размер хранилища в гигабайтах> \
      --disk-type <network-hdd | network-ssd | local-ssd | network-ssd-nonreplicated> \
      --security-group-ids <список идентификаторов групп безопасности> \
      --deletion-protection=<защита от удаления кластера: true или fasle>
    

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

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

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

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

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

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

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

Чтобы создать кластер:

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

    • Кластер базы данных — описание кластера и его хостов.

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

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

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

    terraform {
      required_providers {
        yandex = {
          source = "yandex-cloud/yandex"
        }
      }
    }
    
    provider "yandex" {
      token     = "<OAuth или статический ключ сервисного аккаунта>"
      cloud_id  = "<идентификатор облака>"
      folder_id = "<идентификатор каталога>"
      zone      = "<зона доступности>"
    }
    
    resource "yandex_mdb_mysql_cluster" "<имя кластера>" {
      name                = "<имя кластера>"
      environment         = "<окружение, PRESTABLE или PRODUCTION>"
      network_id          = "<идентификатор сети>"
      version             = "<версия MySQL: 5.7 или 8.0>"
      security_group_ids  = [ "<список групп безопасности>" ]
      deletion_protection = <защита от удаления кластера: true или false>
    
      resources {
        resource_preset_id = "<класс хоста>"
        disk_type_id       = "<тип хранилища>"
        disk_size          = "<размер хранилища в гигабайтах>"
      }
    
      database {
        name = "<имя базы данных>"
      }
    
      user {
        name     = "<имя пользователя>"
        password = "<пароль пользователя>"
        permission {
          database_name = "<имя базы данных>"
          roles         = ["ALL"]
        }
      }
    
      host {
        zone      = "<зона доступности>"
        subnet_id = "<идентификатор подсети>"
      }
    }
    
    resource "yandex_vpc_network" "<имя сети>" { name = "<имя сети>" }
    
    resource "yandex_vpc_subnet" "<имя подсети>" {
      name           = "<имя подсети>"
      zone           = "<зона доступности>"
      network_id     = "<идентификатор сети>"
      v4_cidr_blocks = ["<диапазон>"]
    }
    

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

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

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

      Где:

      • type — тип технического обслуживания:
        • ANYTIME — в любое время.
        • WEEKLY — по расписанию.
      • day — день недели для типа WEEKLY в формате DDD. Например, MON.
      • hour — час дня по UTC для типа WEEKLY в формате HH. Например, 21.

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

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

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

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

      terraform plan
      

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

  3. Создайте кластер.

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

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

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

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

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

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

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

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

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

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

Воспользуйтесь методом API create и передайте в запросе:

  • Идентификатор каталога, в котором должен быть размещен кластер, в параметре folderId.
  • Имя кластера в параметре name. Имя кластера должно быть уникальным в рамках каталога.
  • Окружение кластера в параметре environment.
  • Конфигурацию кластера в параметре configSpec.
  • Конфигурацию баз данных в одном или нескольких параметрах databaseSpecs.
  • Настройки пользователей в одном или нескольких параметрах userSpecs.
  • Конфигурацию хостов кластера в одном или нескольких параметрах hostSpecs.
  • Идентификатор сети в параметре networkId.
  • Идентификаторы групп безопасности в параметре securityGroupIds.

Чтобы разрешить доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме, передайте значение true для параметра configSpec.access.dataTransfer.

Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.

Важно

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

Примеры

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

CLI
Terraform

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

Допустим, нужно создать MySQL-кластер со следующими характеристиками:

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

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

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

Допустим, нужно создать MySQL-кластер и сеть для него со следующими характеристиками:

  • С именем my-mysql.
  • Версии 8.0.
  • В окружении PRESTABLE.
  • В облаке с идентификатором b1gq90dgh25bebiu75o.
  • В каталоге с идентификатором b1gia87mbaomkfvsleds.
  • В новой сети mynet.
  • С одним хостом класса s2.micro в новой подсети mysubnet, в зоне доступности ru-central1-a. Подсеть mysubnet будет иметь диапазон 10.5.0.0/24.
  • В новой группе безопасности mysql-sg, разрешающей подключение к кластеру из интернета через порт 3306.
  • С хранилищем на сетевых SSD-дисках (network-ssd) объемом 20 ГБ.
  • С одним пользователем (user1), с паролем user1user1.
  • С одной базой данных db1, в которой пользователь user1 имеет полные права (эквивалент GRANT ALL PRIVILEGES on db1.*).
  • С защитой от случайного удаления кластера.

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

terraform {
  required_providers {
    yandex = {
      source = "yandex-cloud/yandex"
    }
  }
}

provider "yandex" {
  token     = "<OAuth или статический ключ сервисного аккаунта>"
  cloud_id  = "b1gq90dgh25bebiu75o"
  folder_id = "b1gia87mbaomkfvsleds"
  zone      = "ru-central1-a"
}

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
  }

  database {
    name = "db1"
  }

  user {
    name     = "user1"
    password = "user1user1"
    permission {
      database_name = "db1"
      roles         = ["ALL"]
    }
  }

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

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           = "ru-central1-a"
  network_id     = yandex_vpc_network.mynet.id
  v4_cidr_blocks = ["10.5.0.0/24"]
}

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Как создать кластер MySQL
  • Примеры
  • Создание кластера с одним хостом