Техническое обслуживание кластера PostgreSQL
Вы можете управлять техническим обслуживанием кластера Yandex Managed Service for PostgreSQL.
Получить список обслуживаний
- Перейдите в сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Техническое обслуживание.
Чтобы просмотреть обслуживания с определенным статусом, нажмите кнопку Статус над списком обслуживаний и в выпадающем меню выберите нужный статус. Вы также можете найти обслуживание по его идентификатору или имени задания – используйте поле над списком обслуживаний.
Получить логи кластера, относящиеся к техническому обслуживанию
- Перейдите в сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Техническое обслуживание.
- Нажмите на идентификатор нужного обслуживания.
- Нажмите ссылку Логи задания.
Перенести запланированное обслуживание
Обслуживания, имеющие статус Запланировано, назначены на определенную дату и время, которые указаны в столбце Дата начала. При необходимости их можно перенести на новую дату и время.
Чтобы перенести обслуживание на новую дату и время:
- Перейдите в сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Техническое обслуживание.
- Нажмите на значок
справа в строке обслуживания со статусом Запланировано. - В выпадающем меню выберите
Перенести. - В открывшемся окне:
- Чтобы перенести обслуживание вперед на следующее окно обслуживания, нажмите На следующее окно и затем Перенести.
- Чтобы перенести обслуживание вперед или назад на определенную дату и время по UTC, нажмите Выбрать дату (UTC), затем выберите новую дату и интервал времени и нажмите Перенести.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы перенести обслуживание на новую дату и время:
-
Посмотрите описание команды CLI для переноса обслуживания:
yc managed-postgresql cluster reschedule-maintenance --help -
Чтобы перенести обслуживание на ближайшее окно, выполните команду, указав тип переноса
next-available-window. Чтобы перенести на определенную дату и время, укажите тип переносаspecific-time:yc managed-postgresql cluster reschedule-maintenance <имя_или_идентификатор_кластера> \ --reschedule-type <тип_переноса> \ --delayed-until <временная_метка>Временная метка должна иметь один из следующих форматов:
- RFC-3339
- ЧЧ:ММ:СС
- количество часов и минут, на которые нужно сдвинуть обслуживание.
Например:
2006-01-02T15:04:05Z,15:04:05,2hили3h30m ago. При выборе типа переносаnext-available-windowпараметр--delayed-untilуказывать не нужно. - RFC-3339
Имя кластера можно получить со списком кластеров в каталоге.
Чтобы перенести обслуживание на новую дату и время:
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.rescheduleMaintenance и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>:rescheduleMaintenance' \ --data '{ "rescheduleType": <тип_переноса>, "delayedUntil": <временная_метка> }'Где
rescheduleType— тип переноса, принимает одно из двух значений:NEXT_AVAILABLE_WINDOW— перенести обслуживание на ближайшее окно;SPECIFIC_TIME— перенести обслуживание на определенную дату и время.
Временная метка должна иметь формат RFC-3339
, например:2006-01-02T15:04:05Z. При выборе типа переносаNEXT_AVAILABLE_WINDOWпараметрdelayedUntilуказывать не нужно.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.RescheduleMaintenance и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "reschedule_type": <тип_переноса>, "delayed_until": <временная_метка> }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.RescheduleMaintenanceГде
reschedule_type— тип переноса, принимает одно из двух значений:NEXT_AVAILABLE_WINDOW— перенести обслуживание на ближайшее окно;SPECIFIC_TIME— перенести обслуживание на определенную дату и время.
Временная метка должна иметь формат RFC-3339
, например:2006-01-02T15:04:05Z. При выборе типа переносаNEXT_AVAILABLE_WINDOWпараметрdelayed_untilуказывать не нужно.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Провести запланированное обслуживание немедленно
Обслуживания со статусом Запланировано при необходимости можно провести немедленно, не дожидаясь момента, указанного в столбце Дата начала.
Чтобы провести запланированное обслуживание кластера немедленно:
- Перейдите в сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Техническое обслуживание.
- Нажмите на значок
справа в строке обслуживания. - В выпадающем меню выберите
Провести сейчас.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы провести запланированное обслуживание кластера немедленно:
-
Посмотрите описание команды CLI для переноса обслуживания:
yc managed-postgresql cluster reschedule-maintenance --help -
Выполните команду, указав тип переноса
immediate:yc managed-postgresql cluster reschedule-maintenance <имя_или_идентификатор_кластера> \ --reschedule-type immediate
Имя кластера можно получить со списком кластеров в каталоге.
Чтобы провести запланированное обслуживание кластера немедленно:
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.rescheduleMaintenance и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>:rescheduleMaintenance' \ --data '{ "rescheduleType": "IMMEDIATE" }'Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.RescheduleMaintenance и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "reschedule_type": "IMMEDIATE" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.RescheduleMaintenanceИдентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Настроить окно обслуживания
По умолчанию техническое обслуживание может быть запланировано на любое время. Вы можете выбрать определенный день недели и час, на который будет планироваться техническое обслуживание. Например, можно указать время, когда кластер наименее загружен.
Важно
При выборе нового интервала обслуживания будет автоматически отменено запланированное обслуживание, если оно не попадает на новый интервал.
- Перейдите в сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера и выберите вкладку Техническое обслуживание.
- Нажмите кнопку
Настроить окно обслуживания. - В открывшемся окне:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы разрешить проведение технического обслуживания раз в неделю в определенное время суток, выберите пункт по расписанию и укажите день недели и час по UTC.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды CLI для изменения окна обслуживания:
yc managed-postgresql cluster update --help -
Выполните команду:
yc managed-postgresql cluster update <имя_или_идентификатор_кластера> \ --maintenance-window type=<тип_технического_обслуживания>,` `day=<день_недели>,` `hour=<час_дня>Где
type— тип технического обслуживания:anytime(по умолчанию) — в любое время.weekly— по расписанию. Для этого значения дополнительно укажите:day— день недели:MON,TUE,WED,THU,FRI,SATилиSUN.hour— час дня по UTC: от1до24.
Имя кластера можно получить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.
-
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок
maintenance_window:resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" { ... maintenance_window { type = <тип_технического_обслуживания> day = <день_недели> hour = <час_дня> } ... }Где:
type— тип технического обслуживания. Принимает значения:ANYTIME— в любое время.WEEKLY— по расписанию.
day— день недели для типаWEEKLY:MON,TUE,WED,THU,FRI,SATилиSUN.hour— час дня по UTC для типаWEEKLY: от1до24.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for PostgreSQL:
- создание, в том числе путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут;
- удаление — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок
timeouts, например:resource "yandex_mdb_postgresql_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.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "maintenanceWindow", "maintenanceWindow": { "weeklyMaintenanceWindow": { "day": "<день_недели>", "hour": "<час>" } } }'Где:
-
updateMask— перечень изменяемых параметров в одну строку через запятую.В данном случае передается только один параметр.
-
maintenanceWindow— настройки времени технического обслуживания (в т. ч. для выключенных кластеров). ВmaintenanceWindowпередайте один из двух параметров:-
anytime— техническое обслуживание может быть запланировано на любое время. -
weeklyMaintenanceWindow— техническое обслуживание может запланировано только на выбранный день недели и час:day— день недели в форматеDDD:MON,TUE,WED,THU,FRI,SATилиSUN;hour— час дня по UTC в форматеHH: от1до24.
-
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите 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/postgresql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": ["maintenance_window"] }, "maintenance_window": { "weekly_maintenance_window": { "day": "<день_недели>", "hour": "<час>" } } }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.UpdateГде:
-
update_mask— перечень изменяемых параметров в виде массива строкpaths[].В данном случае передается только один параметр.
-
maintenance_window— настройки времени технического обслуживания (в т. ч. для выключенных кластеров). Вmaintenance_windowпередайте один из двух параметров:-
anytime— техническое обслуживание может быть запланировано на любое время. -
weekly_maintenance_window— техническое обслуживание может запланировано только на выбранный день недели и час:day— день недели в форматеDDD:MON,TUE,WED,THU,FRI,SATилиSUN;hour— час дня по UTC в форматеHH: от1до24.
-
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.