Создание кластера MySQL
Кластер MySQL — один или несколько хостов базы данных. В кластерах из более чем одного хоста автоматически настраивается полусинхронная репликация.
Подробнее об устройстве кластера Managed Service for MySQL см. в разделе Взаимосвязь ресурсов сервиса.
Примечание
- Количество хостов, которые можно создать вместе с кластером MySQL, зависит от выбранного типа диска и класса хостов.
- Доступные типы диска зависят от выбранного класса хостов.
Создать кластер
-
В консоли управления
выберите каталог, в котором нужно создать кластер БД. -
Выберите сервис Managed Service for MySQL.
-
Нажмите кнопку Создать кластер.
-
Введите имя кластера Managed Service for MySQL в поле Имя кластера. Имя кластера должно быть уникальным в рамках каталога.
-
Выберите окружение, в котором нужно создать кластер Managed Service for MySQL (после создания кластера окружение изменить невозможно):
PRODUCTION
— для стабильных версий ваших приложений.PRESTABLE
— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
Выберите версию СУБД.
-
Выберите класс хостов — он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. Все доступные варианты перечислены в разделе Классы хостов. При изменении класса хостов для кластера Managed Service for MySQL меняются характеристики всех уже созданных хостов.
-
В блоке Размер хранилища:
-
Выберите тип диска.
От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
- Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
- Локальные SSD-диски:
- для платформ Intel Broadwell и Intel Cascade Lake — с шагом 100 ГБ;
- для платформы Intel Ice Lake — с шагом 368 ГБ.
- Нереплицируемые SSD-диски — с шагом 93 ГБ.
-
Выберите объем, который будет использоваться для данных и резервных копий. Подробнее о том, как занимают пространство резервные копии, см. раздел Резервные копии.
Примечание
Если хранилище БД заполнится на 95%, кластер Managed Service for MySQL перейдет в режим «только чтение». Увеличивайте размер хранилища заранее.
-
-
В блоке База данных укажите атрибуты БД:
-
Имя БД. Это имя должно быть уникальным в рамках каталога.
Имя базы может содержать латинские буквы, цифры, дефис и нижнее подчеркивание. Максимальная длина имени 63 символа. Имена
mysql
,sys
,information_schema
иperformance_schema
зарезервированы для собственных нужд Managed Service for MySQL. Создавать БД с этими именами нельзя. -
Имя пользователя—владельца БД и пароль.
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и нижнее подчеркивание, но должно начинаться с буквы, цифры или нижнего подчеркивания. Длина от 1 до 32 символов.
Длина пароля от 8 до 128 символов.
-
-
В блоке Сетевые настройки выберите:
- Облачную сеть для размещения кластера Managed Service for MySQL.
- Группы безопасности для сетевого трафика кластера Managed Service for MySQL. Может потребоваться дополнительная настройка групп безопасности, чтобы можно было подключаться к кластеру Managed Service for MySQL.
-
В блоке Хосты нажмите на значок
и выберите параметры хостов БД, создаваемых вместе с кластером Managed Service for MySQL:- Зону доступности.
- Подсеть хоста — по умолчанию каждый хост создается в отдельной подсети.
- Опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
- Приоритет назначения хоста мастером.
- Приоритет хоста как MySQL-реплики для создания резервной копии.
Если в блоке Размер хранилища выбран
local-ssd
илиnetwork-ssd-nonreplicated
, необходимо добавить не менее трех хостов в кластер Managed Service for MySQL. После создания кластера Managed Service for MySQL в него можно добавить дополнительные хосты, если для этого достаточно ресурсов каталога. -
При необходимости задайте дополнительные настройки кластера Managed Service for MySQL:
-
Начало резервного копирования (UTC) — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию —
22:00 - 23:00
UTC. -
Срок хранения автоматических резервных копий, дней
Автоматические резервные копии будут храниться указанное количество дней.
-
Окно обслуживания — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Доступ из DataLens
Разрешает анализировать данные из кластера в сервисе Yandex DataLens.
Подробнее о настройке подключения см. в разделе Подключение к DataLens.
-
Доступ из консоли управления
Разрешает выполнять SQL-запросы к базам кластера из консоли управления Yandex Cloud.
-
Доступ из Data Transfer в режиме Serverless — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме.
Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.
-
Сбор статистики — включите эту опцию, чтобы воспользоваться инструментом Диагностика производительности в кластере.
-
Защита от удаления — управляет защитой кластера, его баз данных и пользователей от непреднамеренного удаления.
Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
-
-
При необходимости задайте настройки СУБД уровня кластера.
Примечание
Некоторые настройки MySQL зависят от выбранного класса хостов.
-
Нажмите кнопку Создать кластер.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать кластер Managed Service for MySQL:
-
Проверьте, есть ли в каталоге подсети для хостов кластера Managed Service for MySQL:
yc vpc subnet list
Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе Yandex Virtual Private Cloud.
-
Посмотрите описание команды CLI для создания кластера Managed Service for MySQL:
yc managed-mysql cluster create --help
-
Укажите параметры кластера 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 <тип_диска> \ --security-group-ids <список_идентификаторов_групп_безопасности>
Идентификатор подсети
subnet-id
необходимо указывать, если в выбранной зоне доступности создано две и больше подсетей.Где:
-
environment
— окружение:prestable
илиproduction
. -
assign-public-ip
— публичный доступ к хосту:true
илиfalse
. -
priority
— приоритет при выборе нового хоста-мастера: от0
до100
. -
backup-priority
— приоритет для резервного копирования: от0
до100
. -
mysql-version
— версия MySQL:5.7 или 8.0
.
При необходимости задайте дополнительные настройки кластера Managed Service for MySQL:
yc managed-mysql cluster create \ ... --backup-window-start <время_начала_резервного_копирования> \ --backup-retain-period-days=<срок_хранения_копий> \ --datalens-access=<доступ_из_DataLens> \ --websql-access=<запросы_из_консоли_управления> \ --deletion-protection=<защита_от_удаления> \ --performance-diagnostics enabled=true,` `sessions-sampling-interval=<интервал_сбора_сессий>,` `statements-sampling-interval=<интервал_сбора_запросов>
Где:
-
backup-window-start
— время начала резервного копирования. -
backup-retain-period-days
— срок хранения автоматических резервных копий в днях. -
datalens-access
— доступ к кластеру из DataLens:true
илиfalse
. -
websql-access
— запросы из консоли управления:true
илиfalse
. -
deletion-protection
— защита от удаления кластера:true
илиfalse
. -
performance-diagnostics
— активация сбора статистики для диагностики производительности кластера. Допустимые значения параметровsessions-sampling-interval
иstatements-sampling-interval
— от1
до86400
секунд.
Имя базы может содержать латинские буквы, цифры, дефис и нижнее подчеркивание. Максимальная длина имени 63 символа. Имена
mysql
,sys
,information_schema
иperformance_schema
зарезервированы для собственных нужд Managed Service for MySQL. Создавать БД с этими именами нельзя.Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
При необходимости задайте настройки СУБД.
Примечание
По умолчанию при создании кластера устанавливается режим технического обслуживания
anytime
— в любое время. Вы можете установить конкретное время обслуживания при изменении настроек кластера. -
Terraform
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать кластер Managed Service for MySQL:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
-
Кластер БД — описание кластера и его хостов.
-
База данных — описание БД кластера.
Имя базы может содержать латинские буквы, цифры, дефис и нижнее подчеркивание. Максимальная длина имени 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
.
Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
-
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок
maintenance_window
:resource "yandex_mdb_mysql_cluster" "<имя_кластера>" { ... maintenance_window { type = <тип_технического_обслуживания> day = <день_недели> hour = <час_дня> } ... }
Где:
type
— тип технического обслуживания. Принимает значения:ANYTIME
— в любое время.WEEKLY
— по расписанию.
day
— день недели для типаWEEKLY
в форматеDDD
. Например,MON
.hour
— час дня по UTC для типаWEEKLY
в форматеHH
. Например,21
.
-
Чтобы активировать доступ из DataLens и доступ к SQL-запросам из консоли управления, добавьте к описанию кластера Managed Service for MySQL блок
access
:resource "yandex_mdb_mysql_cluster" "<имя_кластера>" { ... access { web_sql = <доступ_из_консоли_управления> data_lens = <доступ_из_DataLens> ... } ... }
Где:
-
web_sql
— выполнение SQL-запросов из консоли управления:true
илиfalse
. -
data_lens
— доступ из DataLens: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, см. в документации провайдера
. -
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в каталог, в котором создан конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. Это проверочный этап: ресурсы не будут созданы.
-
-
Создайте кластер Managed Service for MySQL.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся 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 минут } }
-
Чтобы создать кластер MySQL, воспользуйтесь методом REST API create для ресурса Cluster или вызовом gRPC API ClusterService/Create и передайте в запросе:
-
Идентификатор каталога, в котором должен быть размещен кластер Managed Service for MySQL, в параметре
folderId
. -
Имя кластера Managed Service for MySQL в параметре
name
. Имя кластера должно быть уникальным в рамках каталога. -
Окружение кластера Managed Service for MySQL в параметре
environment
. -
Конфигурацию кластера Managed Service for MySQL в параметре
configSpec
. -
Конфигурацию БД в одном или нескольких параметрах
databaseSpecs
.Имя базы может содержать латинские буквы, цифры, дефис и нижнее подчеркивание. Максимальная длина имени 63 символа. Имена
mysql
,sys
,information_schema
иperformance_schema
зарезервированы для собственных нужд Managed Service for MySQL. Создавать БД с этими именами нельзя. -
Настройки пользователей в одном или нескольких параметрах
userSpecs
. -
Конфигурацию хостов кластера Managed Service for MySQL в одном или нескольких параметрах
hostSpecs
. -
Идентификатор сети в параметре
networkId
. -
Идентификаторы групп безопасности в параметре
securityGroupIds
.
При необходимости передайте время начала резервного копирования в параметре configSpec.backupWindowStart
и срок хранения автоматических резервных копий (в днях) в параметре configSpec.backupRetainPeriodDays
. Допустимые значения: от 7
до 60
. Значение по умолчанию — 7
.
Чтобы разрешить подключение к хостам кластера из интернета, передайте значение true
в параметре hostSpecs.assignPublicIp
.
Чтобы разрешить доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме, передайте значение true
для параметра configSpec.access.dataTransfer
.
Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.
Чтобы активировать доступ к кластеру из DataLens, передайте значение true
для параметра configSpec.access.dataLens
.
Чтобы активировать сбор статистики для диагностики производительности кластера, передайте значение true
в параметре configSpec.performanceDiagnostics.enabled
. Опционально добавьте параметры:
configSpec.performanceDiagnostics.sessionsSamplingInterval
— интервал сбора сессий. Допустимые значения — от1
до86400
секунд.configSpec.performanceDiagnostics.statementsSamplingInterval
— интервал сбора запросов. Допустимые значения — от1
до86400
секунд.
Важно
Если вы указали идентификаторы групп безопасности при создании кластера Managed Service for MySQL, для подключения к нему может потребоваться дополнительная настройка групп безопасности.
Создать копию кластера
Вы можете создать кластер MySQL, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера MySQL импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер MySQL обладает множеством настроек и нужно создать похожий на него кластер.
Чтобы создать копию кластера MySQL:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
В той же рабочей директории разместите файл с расширением
.tf
и содержимым:resource "yandex_mdb_mysql_cluster" "old" { }
-
Запишите идентификатор первоначального кластера MySQL в переменную окружения:
export MYSQL_CLUSTER_ID=<идентификатор_кластера>
Идентификатор можно запросить вместе со списком кластеров в каталоге.
-
Импортируйте настройки первоначального кластера MySQL в конфигурацию Terraform:
terraform import yandex_mdb_mysql_cluster.old ${MYSQL_CLUSTER_ID}
-
Получите импортированную конфигурацию:
terraform show
-
Скопируйте ее из терминала и вставьте в файл с расширением
.tf
. -
Расположите файл в новой директории
imported-cluster
. -
Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:
- Укажите новое имя кластера в строке
resource
и параметреname
. - Удалите параметры
created_at
,health
,id
иstatus
. - В блоках
host
удалите параметрыfqdn
. - Если в блоке
maintenance_window
указано значение параметраtype = "ANYTIME"
, удалите параметрhour
. - (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
- Укажите новое имя кластера в строке
-
В директории
imported-cluster
получите данные для аутентификации. -
В этой же директории настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в директорию
imported-cluster
и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле. -
Проверьте корректность файлов конфигурации Terraform:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL:
- создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
- изменение кластера, в том числе обновление версии MySQL, — 60 минут;
- удаление кластера — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Примеры
Создание кластера с одним хостом
Чтобы создать кластер Managed Service for MySQL с одним хостом, передайте один параметр --host
.
Создайте кластер Managed Service for MySQL с тестовыми характеристиками:
- С именем
my-mysql
. - Версии
8.0
. - В окружении
production
. - В сети
default
. - В группе безопасности с идентификатором
enp6saqnq4ie********
. - С одним хостом класса
s2.micro
в подсетиb0rcctk2rvtr********
, в зоне доступностиru-central1-a
. - С хранилищем на сетевых SSD-дисках (
network-ssd
) объемом 20 ГБ. - С одним пользователем (
user1
), с паролемuser1user1
. - С одной БД
db1
, в которой пользовательuser1
имеет полные права (эквивалентGRANT ALL PRIVILEGES on db1.*
). - С защитой от случайного удаления кластера.
-
Запустите команду создания кластера 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=true
-
Запустите команду изменения привилегий пользователя
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
, в зоне доступностиru-central1-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.
Конфигурационный файл для такого кластера 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 = "ru-central1-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 = "ru-central1-a"
network_id = yandex_vpc_network.mynet.id
v4_cidr_blocks = ["10.5.0.0/24"]
}
Создание кластера из нескольких хостов
Чтобы создать кластер 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
, зона доступностиru-central1-a
.subnet-b
:10.6.0.0/24
, зона доступностиru-central1-b
.subnet-d
:10.7.0.0/24
, зона доступностиru-central1-d
.
Хосту в подсети
subnet-b
будет присвоен приоритет резервного копирования. Резервные копии будут создаваться из данных с этого хоста, если он не выбран хостом-мастером. -
С хранилищем на сетевых SSD-дисках (
network-ssd
) объемом 32 ГБ. -
С одним пользователем (
user1
), с паролемuser1user1
. -
С одной БД
db1
, в которой пользовательuser1
имеет полные права (эквивалентGRANT ALL PRIVILEGES on db1.*
).
-
Запустите команду создания кластера 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=ru-central1-a,` `subnet-name=subnet-a,` `assign-public-ip=true \ --host zone-id=ru-central1-b,` `subnet-name=subnet-b,` `backup-priority=10,` `assign-public-ip=true \ --host zone-id=ru-central1-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
-
Запустите команду изменения привилегий пользователя
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
, зона доступностиru-central1-a
.mysubnet-b
:10.6.0.0/24
, зона доступностиru-central1-b
.mysubnet-d
:10.7.0.0/24
, зона доступностиru-central1-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 = "ru-central1-a"
subnet_id = yandex_vpc_subnet.mysubnet-a.id
assign_public_ip = true
}
host {
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.mysubnet-b.id
assign_public_ip = true
backup_priority = 10
}
host {
zone = "ru-central1-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 = "ru-central1-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 = "ru-central1-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 = "ru-central1-d"
network_id = yandex_vpc_network.mynet.id
v4_cidr_blocks = ["10.7.0.0/24"]
}