Управление резервными копиями в Managed Service for MySQL®
Вы можете создавать резервные копии и восстанавливать кластеры из имеющихся резервных копий, в том числе на указанный момент времени. Подробнее см. в разделе Резервные копии.
Также Managed Service for MySQL® ежедневно создает автоматическую резервную копию. Вы можете задать время начала резервного копирования и срок хранения для нее.
Получить список резервных копий
Чтобы получить список резервных копий кластера:
- Перейдите на страницу каталога
и выберите сервис Managed Service for MySQL. - Нажмите на имя нужного кластера и выберите вкладку
Резервные копии.
Чтобы получить список всех резервных копий в каталоге:
- Перейдите на страницу каталога
и выберите сервис Managed Service for MySQL. - На панели слева выберите
Резервные копии.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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. Вы можете указать другой каталог с помощью параметра --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. Вы можете указать другой каталог с помощью параметра --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
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Во время создания резервной копии производительность кластера может снижаться.
В кластерах из одного хоста резервная копия создается чтением данных с хоста-мастера, а в многохостовых кластерах — с одной из реплик. При этом можно задать приоритет использования хостов при создании резервных копий.
Восстановить кластер из резервной копии
Для нового кластера необходимо задать все параметры, обязательные при создании, кроме типа кластера.
Чтобы восстановить из резервной копии существующий кластер:
-
Перейдите на страницу каталога
и выберите сервис Managed Service for MySQL. -
Нажмите на имя нужного кластера и выберите вкладку
Резервные копии. -
Нажмите на значок
для нужной резервной копии, затем нажмите Восстановить кластер. -
Задайте настройки нового кластера. В списке Каталог можно выбрать каталог для нового кластера.
-
Чтобы восстановить состояние кластера на требуемый момент времени после создания этой резервной копии (Point-in-Time-Recovery), задайте нужное значение настройки Дата и время восстановления (UTC).
Если оставить настройку без изменений, кластер будет восстановлен в состояние на момент завершения создания резервной копии.
-
Нажмите кнопку Восстановить кластер.
Чтобы восстановить из резервной копии удаленный ранее кластер:
-
Перейдите на страницу каталога
и выберите сервис Managed Service for MySQL. -
На панели слева выберите
Резервные копии. -
Найдите нужную резервную копию по времени создания и идентификатору кластера. В колонке Идентификатор содержатся идентификаторы в формате
<идентификатор_кластера>:<идентификатор_резервной_копии>
. -
Нажмите на значок
для нужной резервной копии, затем нажмите Восстановить кластер. -
Задайте настройки нового кластера. В списке Каталог можно выбрать каталог для нового кластера.
-
Чтобы восстановить состояние кластера на требуемый момент времени после создания этой резервной копии, задайте нужное значение настройки Дата и время восстановления (UTC). Значение можно ввести вручную или выбрать из выпадающего календаря.
Если оставить настройку без изменений, кластер будет восстановлен в состояние на момент завершения создания резервной копии.
-
Нажмите кнопку Восстановить кластер.
Managed Service for MySQL® запустит операцию создания кластера из резервной копии.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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
.
-
Используйте 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": "<версия_PostgreSQL>", "resources": { "resourcePresetId": "<класс_хостов>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" } }, "hostSpecs": [ { "zoneId": "<зона_доступности>", "subnetId": "<идентификатор_подсети>", "assignPublicIp": <публичный_адрес_хоста:_true_или_false> } ] }
Где:
-
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
— разрешение на подключение к хосту из интернета.
-
-
Воспользуйтесь методом 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": <публичный_адрес_хоста:_true_или_false> } ] }
Где:
-
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
— разрешение на подключение к хосту из интернета.
-
-
Воспользуйтесь вызовом 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. Вы можете указать другой каталог с помощью параметра --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. Вы можете указать другой каталог с помощью параметра --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. Вы можете указать другой каталог с помощью параметра --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
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.