Управление резервными копиями в Managed Service for MySQL®
Вы можете создавать резервные копии и восстанавливать кластеры из имеющихся резервных копий, в том числе на указанный момент времени. Подробнее см. в разделе Резервные копии.
Также Managed Service for MySQL® ежедневно создает автоматическую резервную копию. Вы можете задать время начала резервного копирования и срок хранения для нее.
Получить список резервных копий
Чтобы получить список резервных копий кластера:
- Перейдите в сервис Managed Service for MySQL.
- Нажмите на имя нужного кластера и выберите вкладку
Резервные копии.
Чтобы получить список всех резервных копий в каталоге:
- Перейдите в сервис Managed Service for MySQL.
- На панели слева выберите
Резервные копии.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить список резервных копий кластеров MySQL®, доступных в каталоге по умолчанию, выполните команду:
yc managed-mysql backup list
Результат:
+--------------------------+---------------------+----------------------+---------------------+
| ID | CREATED AT | SOURCE CLUSTER ID | STARTED AT |
+--------------------------+---------------------+----------------------+---------------------+
| c9qgo11pud7kb3c******** | 2020-08-10 12:00:00 | c9qgo11pud7k******** | 2020-08-10 11:55:17 |
| ... |
+--------------------------+---------------------+----------------------+---------------------+
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Чтобы получить список резервных копий кластера:
-
Воспользуйтесь методом Cluster.listBackups и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<идентификатор_кластера>/backups'Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
-
Чтобы получить список резервных копий всех кластеров в каталоге:
-
Воспользуйтесь методом Backup.list и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/backups' \ --url-query folderId=<идентификатор_каталога>Идентификатор каталога можно запросить со списком каталогов в облаке.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Чтобы получить список резервных копий кластера:
-
Воспользуйтесь вызовом ClusterService/ListBackups и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.ListBackupsИдентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
-
Чтобы получить список резервных копий всех кластеров в каталоге:
-
Воспользуйтесь вызовом BackupService/List и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/backup_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "folder_id": "<идентификатор_каталога>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.BackupService.ListИдентификатор каталога можно запросить со списком каталогов в облаке.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получить информацию о резервной копии
Чтобы получить информацию о резервной копии существующего кластера:
- Перейдите в сервис Managed Service for MySQL.
- Нажмите на имя нужного кластера и выберите вкладку
Резервные копии.
Чтобы получить информацию о резервной копии удаленного ранее кластера:
- Перейдите в сервис Managed Service for MySQL.
- На панели слева выберите
Резервные копии.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить данные о резервной копии кластера MySQL®, выполните команду:
yc managed-mysql backup get <идентификатор_резервной_копии>
Идентификатор резервной копии можно получить со списком резервных копий.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Backup.get и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/backups/<идентификатор_резервной_копии>'Идентификатор резервной копии можно запросить со списком резервных копий.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом BackupService/Get и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/backup_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "backup_id": "<идентификатор_резервной_копии>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.BackupService.GetИдентификатор резервной копии можно запросить со списком резервных копий.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать резервную копию
- Перейдите в сервис Managed Service for MySQL.
- Нажмите на имя нужного кластера и выберите вкладку
Резервные копии. - Нажмите кнопку Создать резервную копию.
Сервис начнет создавать резервную копию без дополнительного подтверждения.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы создать резервную копию кластера:
-
Посмотрите описание команды CLI для создания резервной копии кластера MySQL®:
yc managed-mysql cluster backup --help -
Запросите создание резервной копии, указав идентификатор или имя кластера:
yc managed-mysql cluster backup <имя_или_идентификатор_кластера>Идентификатор и имя кластера можно получить со списком кластеров.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.backup и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<идентификатор_кластера>:backup'Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService/Backup и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.BackupИдентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Во время создания резервной копии производительность кластера может снижаться.
В кластерах из одного хоста резервная копия создается чтением данных с хоста-мастера, а в многохостовых кластерах — с одной из реплик. При этом можно задать приоритет использования хостов при создании резервных копий.
Восстановить кластер из резервной копии
Важно
Для кластеров с неподдерживаемой версией СУБД восстановление из резервных копий недоступно.
Для нового кластера необходимо задать все параметры, обязательные при создании, кроме типа кластера.
Перед началом работы назначьте вашему аккаунту в Yandex Cloud роль managed-mysql.restorer или выше на каталог размещения резервной копии и каталог, где будет развернут новый кластер.
Чтобы восстановить из резервной копии существующий кластер:
-
Перейдите в сервис Managed Service for MySQL.
-
Нажмите на имя нужного кластера и выберите вкладку
Резервные копии. -
Нажмите на значок
для нужной резервной копии, затем нажмите Восстановить кластер. -
Задайте настройки нового кластера. В списке Каталог можно выбрать каталог для нового кластера.
-
Чтобы восстановить состояние кластера на требуемый момент времени после создания этой резервной копии (Point-in-Time-Recovery), задайте нужное значение настройки Дата и время восстановления (UTC).
Если оставить настройку без изменений, кластер будет восстановлен в состояние на момент завершения создания резервной копии.
-
Нажмите кнопку Восстановить кластер.
Чтобы восстановить из резервной копии удаленный ранее кластер:
-
Перейдите в сервис Managed Service for MySQL.
-
На панели слева выберите
Резервные копии. -
Найдите нужную резервную копию по времени создания и идентификатору кластера. В колонке Идентификатор содержатся идентификаторы в формате
<идентификатор_кластера>:<идентификатор_резервной_копии>. -
Нажмите на значок
для нужной резервной копии, затем нажмите Восстановить кластер. -
Задайте настройки нового кластера. В списке Каталог можно выбрать каталог для нового кластера.
-
Чтобы восстановить состояние кластера на требуемый момент времени после создания этой резервной копии, задайте нужное значение настройки Дата и время восстановления (UTC). Значение можно ввести вручную или выбрать из выпадающего календаря.
Если оставить настройку без изменений, кластер будет восстановлен в состояние на момент завершения создания резервной копии.
-
Нажмите кнопку Восстановить кластер.
Managed Service for MySQL® запустит операцию создания кластера из резервной копии.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы восстановить кластер из резервной копии:
-
Посмотрите описание команды CLI для восстановления кластера MySQL®:
yc managed-mysql cluster restore --help -
Получите список доступных резервных копий кластеров MySQL®:
yc managed-mysql backup listРезультат:
+--------------------------+---------------------+----------------------+---------------------+ | ID | CREATED AT | SOURCE CLUSTER ID | STARTED AT | +--------------------------+---------------------+----------------------+---------------------+ | c9qgo11pud7kb3c******** | 2020-08-10 12:00:00 | c9qgo11pud7k******** | 2020-08-10 11:55:17 | | ... | +--------------------------+---------------------+----------------------+---------------------+Время завершения создания резервной копии указано в столбце
CREATED ATсписка доступных резервных копий в форматеyyyy-mm-dd hh:mm:ss(2020-08-10 12:00:00в примере выше). Вы можете восстановить состояние кластера на любой момент времени, начиная от создания резервной копии. -
Запросите создание кластера из резервной копии:
yc managed-mysql cluster restore \ --backup-id=<идентификатор_резервной_копии> \ --time=<время> \ --name=<имя_кластера> \ --environment=<окружение> \ --network-name=<имя_сети> \ --host zone-id=<зона_доступности>,` `subnet-name=<имя_подсети>,` `assign-public-ip=<разрешить_публичный_доступ_к_хосту> \ --resource-preset=<класс_хоста> \ --disk-size=<размер_хранилища_ГБ> \ --disk-type=<тип_диска>Где:
-
--backup-id— идентификатор резервной копии. -
--time— момент времени, на который нужно восстановить состояние кластера MySQL®, в форматеyyyy-mm-ddThh:mm:ssZ. -
--name— имя кластера. -
--environment— окружение:PRESTABLE— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.PRODUCTION— для стабильных версий ваших приложений.
-
--network-name— имя сети. -
--host— параметры хоста:-
zone-id— зона доступности. -
subnet-name— имя подсети. Необходимо указывать, если в выбранной зоне доступности создано две или больше подсетей. -
assign-public-ip— флаг, который указывается, если для хоста нужен публичный доступ:trueилиfalse.
-
-
--resource-preset— класс хоста. -
--disk-size— размер хранилища в гигабайтах. -
--disk-type— тип диска:network-hdd;network-ssd;local-ssd;network-ssd-nonreplicated;network-ssd-io-m3.
-
Используйте Terraform для восстановления:
- Существующего кластера из резервной копии.
- Кластера, созданного и удаленного через Консоль управления, CLI или API.
Для восстановления потребуется ID резервной копии. Получите список доступных резервных копий кластеров MySQL® с помощью CLI:
yc managed-mysql backup list
Результат:
+--------------------------+---------------------+----------------------+---------------------+
| ID | CREATED AT | SOURCE CLUSTER ID | STARTED AT |
+--------------------------+---------------------+----------------------+---------------------+
| c9qgo11pud7kb3c******** | 2020-08-10 12:00:00 | c9qgo11pud7k******** | 2020-08-10 11:55:17 |
| ... |
+--------------------------+---------------------+----------------------+---------------------+
Чтобы восстановить из резервной копии существующий кластер:
-
Создайте конфигурационный файл Terraform для нового кластера.
При этом не используйте ресурсы баз данных (
yandex_mdb_mysql_database) и пользователей (yandex_mdb_mysql_user) — они будут восстановлены из резервной копии. -
Добавьте в этот конфигурационный файл блок
restore:resource "yandex_mdb_mysql_cluster" "<имя_кластера>" { ... restore { backup_id = "<идентификатор_резервной_копии>" time = "<время>" } }В параметре
timeукажите момент времени в форматеyyyy-mm-ddThh:mm:ss, на который нужно восстановить состояние кластера MySQL®, начиная со времени создания выбранной резервной копии.Примечание
Параметр
timeне является обязательным. Если его не указывать, кластер будет восстановлен на момент запуска процесса восстановления. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Terraform создаст копию существующего кластера. Базы данных и пользователи будут развернуты из выбранной резервной копии.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL®:
- создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
- изменение кластера, в том числе обновление версии MySQL®, — 60 минут;
- удаление кластера — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Чтобы восстановить из резервной копии удаленный ранее кластер:
-
Создайте конфигурационный файл Terraform для нового кластера.
При этом не используйте ресурсы баз данных (
yandex_mdb_mysql_database) и пользователей (yandex_mdb_mysql_user) — они будут восстановлены из резервной копии. -
Добавьте в этот конфигурационный файл блок
restoreс именем резервной копии, из которой нужно восстановиться:resource "yandex_mdb_mysql_cluster" "<имя_кластера>" { ... restore { backup_id = "<идентификатор_резервной_копии>" } } -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Terraform создаст новый кластер. Базы данных и пользователи будут развернуты из резервной копии.
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL®:
- создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
- изменение кластера, в том числе обновление версии MySQL®, — 60 минут;
- удаление кластера — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "backupId": "<идентификатор_резервной_копии>", "time": "<время>", "folderId": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "networkId": "<идентификатор_сети>", "configSpec": { "version": "<версия_MySQL®>", "resources": { "resourcePresetId": "<класс_хостов>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" } }, "hostSpecs": [ { "zoneId": "<зона_доступности>", "subnetId": "<идентификатор_подсети>", "assignPublicIp": <разрешить_публичный_доступ_к_хосту> } ] }Где:
-
backupId— идентификатор резервной копии. Его можно запросить со списком резервных копий. -
time— момент времени, на который нужно восстановить состояние кластера MySQL®, в форматеyyyy-mm-ddThh:mm:ssZ. -
folderId— идентификатор каталога, где будет восстановлен кластер. Идентификатор можно запросить со списком каталогов в облаке. -
name— имя кластера. -
environment— окружение:PRESTABLE— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.PRODUCTION— для стабильных версий ваших приложений.
-
networkId— идентификатор сети. -
configSpec— настройки кластера:-
version— версия MySQL®. -
resources— ресурсы кластера:resourcePresetId— класс хостов;diskSize— размер диска в байтах;diskTypeId— тип диска.
-
-
hostSpecs— настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:zoneId— зона доступности;subnetId— идентификатор подсети;assignPublicIp— разрешение на подключение к хосту из интернета:trueилиfalse.
-
-
Воспользуйтесь методом Cluster.restore и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters:restore' \ --data "@body.json" -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "backup_id": "<идентификатор_резервной_копии>", "time": "<время>", "folder_id": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "network_id": "<идентификатор_сети>", "config_spec": { "version": "<версия_MySQL®>", "resources": { "resource_preset_id": "<класс_хостов>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" } }, "host_specs": [ { "zone_id": "<зона_доступности>", "subnet_id": "<идентификатор_подсети>", "assign_public_ip": <разрешить_публичный_доступ_к_хосту> } ] }Где:
-
backup_id— идентификатор резервной копии. Его можно запросить со списком резервных копий. -
time— момент времени, на который нужно восстановить состояние кластера MySQL®, в форматеyyyy-mm-ddThh:mm:ssZ. -
folder_id— идентификатор каталога, где будет восстановлен кластер. Идентификатор можно запросить со списком каталогов в облаке. -
name— имя кластера. -
environment— окружение:PRESTABLE— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.PRODUCTION— для стабильных версий ваших приложений.
-
network_id— идентификатор сети. -
config_spec— настройки кластера:-
version— версия MySQL®. -
resources— ресурсы кластера:resource_preset_id— класс хостов;disk_size— размер диска в байтах;disk_type_id— тип диска.
-
-
host_specs— настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:zone_id— зона доступности;subnet_id— идентификатор подсети;assign_public_ip— разрешение на подключение к хосту из интернета:trueилиfalse.
-
-
Воспользуйтесь вызовом ClusterService/Restore и выполните запрос, например, с помощью 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.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.Restore \ < body.json -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Задать время начала резервного копирования
В консоли управления
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Задать время начала резервного копирования в существующем кластере можно с помощью команды update:
yc managed-mysql cluster update <имя_или_идентификатор_кластера> \
--backup-window-start=<время>
Где backup-window-start — время начала резервного копирования, по UTC в формате HH:MM:SS.
Идентификатор и имя кластера можно получить со списком кластеров.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера Managed Service for MySQL® блок
backup_window_start:resource "yandex_mdb_mysql_cluster" "<имя_кластера>" { ... backup_window_start { hours = <час> minutes = <минута> } }Где:
hours— час начала резервного копирования (UTC).minutes— минута начала резервного копирования (UTC).
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL®:
- создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
- изменение кластера, в том числе обновление версии MySQL®, — 60 минут;
- удаление кластера — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.backupWindowStart", "configSpec": { "backupWindowStart": { "hours": "<часы>", "minutes": "<минуты>", "seconds": "<секунды>", "nanos": "<наносекунды>" } } }'Где:
-
updateMask— перечень изменяемых параметров в одну строку через запятую.В данном случае передается только один параметр.
-
configSpec.backupWindowStart— настройки окна резервного копирования.В параметре укажите время, когда начинать резервное копирование. Возможные значения параметров:
hours— от0до23часов;minutes— от0до59минут;seconds— от0до59секунд;nanos— от0до999999999наносекунд.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService/Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask(в виде массива строкpaths[]).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "config_spec.backup_window_start" ] }, "config_spec": { "backup_window_start": { "hours": "<часы>", "minutes": "<минуты>", "seconds": "<секунды>", "nanos": "<наносекунды>" } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.UpdateГде:
-
update_mask— перечень изменяемых параметров в виде массива строкpaths[].В данном случае передается только один параметр.
-
config_spec.backup_window_start— настройки окна резервного копирования.В параметре укажите время, когда начинать резервное копирование. Возможные значения параметров:
hours— от0до23часов;minutes— от0до59минут;seconds— от0до59секунд;nanos— от0до999999999наносекунд.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Задать срок хранения автоматических резервных копий
В консоли управления
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы задать срок хранения автоматических резервных копий, передайте нужное значение в аргументе --backup-retain-period-days команды изменения кластера:
yc managed-mysql cluster update <имя_или_идентификатор_кластера> \
--backup-retain-period-days=<срок_хранения_в_днях>
Допустимые значения: от 7 до 60. Значение по умолчанию — 7.
Идентификатор и имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации кластера Managed Service for MySQL® см. в документации провайдера Terraform.
-
Чтобы задать срок хранения автоматических резервных копий, добавьте к описанию кластера Managed Service for MySQL® блок
backup_retain_period_days:resource "yandex_mdb_mysql_cluster" "<имя_кластера>" { ... backup_window_start: <срок_хранения_в_днях> } -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MySQL®:
- создание кластера, в том числе путем восстановления из резервной копии, — 15 минут;
- изменение кластера, в том числе обновление версии MySQL®, — 60 минут;
- удаление кластера — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_mysql_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.backupRetainPeriodDays", "configSpec": { "backupRetainPeriodDays": <срок_хранения_в_днях> } }'Где:
-
updateMask— перечень изменяемых параметров в одну строку через запятую.В данном случае передается только один параметр.
-
configSpec.backupRetainPeriodDays— срок хранения автоматических резервных копий.Допустимые значения — от
7до60. Значение по умолчанию —7.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService/Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask(в виде массива строкpaths[]).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "config_spec.backup_retain_period_days" ] }, "config_spec": { "backup_retain_period_days": <число_дней> } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.UpdateГде:
-
update_mask— перечень изменяемых параметров в виде массива строкpaths[].В данном случае передается только один параметр.
-
config_spec.backup_retain_period_days— срок хранения автоматических резервных копий.Допустимые значения — от
7до60. Значение по умолчанию —7.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Задать приоритет использования хостов при создании резервных копий
Минимальное значение приоритета использования хоста при создании резервных копий — 0, максимальное — 100, по умолчанию — 0. Источником резервного копирования выбирается хост-реплика с наибольшим приоритетом. Подробнее см. раздел Создание резервной копии.
В консоли управления
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы задать приоритет резервного копирования для выбранного хоста, выполните команду:
yc managed-mysql host update <имя_хоста> \
--cluster-name=<имя_кластера> \
--backup-priority=<приоритет_хоста_при_резервном_копировании>
Где backup-priority — приоритет хоста при резервном копировании: от 0 до 100.
Имя хоста можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.updateHosts и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<идентификатор_кластера>/hosts:batchUpdate' \ --data '{ "updateHostSpecs": [ { "updateMask": "backupPriority", "hostName": "<FQDN_хоста>", "backupPriority": "<приоритет_хоста_при_резервном_копировании>" } ] }'Где
updateHostSpecs— массив хостов, которым вы задаете приоритет. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:updateMask— перечень изменяемых параметров в одну строку через запятую;hostName— FQDN изменяемого хоста;backupPriority— приоритет хоста при резервном копировании: от0до100.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService/UpdateHosts и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_host_specs": [ { "update_mask": { "paths": [ "backup_priority" ] }, "host_name": "<FQDN_хоста>", "backup_priority": "<приоритет_хоста_при_резервном_копировании>" } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mysql.v1.ClusterService.UpdateHostsГде
update_host_specs— массив хостов, которым вы задаете приоритет. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:update_mask— перечень изменяемых параметров в виде массива строкpaths[];host_name— FQDN изменяемого хоста;backup_priority— приоритет хоста при резервном копировании: от0до100.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.