Техническое обслуживание кластера 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.cloud.yandex.net/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.cloud.yandex.net: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.cloud.yandex.net/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.cloud.yandex.net: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 reschedule-maintenance --help
-
Выполните команду:
yc managed-postgresql cluster update <имя_или_идентификатор_кластера> \ --maintenance-window type=<тип_технического_обслуживания>,` `day=<день_недели>,` `hour=<час_дня>
Где
type
— тип технического обслуживания:anytime
(по умолчанию) — в любое время.weekly
— по расписанию. При задании этого значения укажите день недели и час дня:day
— день недели в форматеDDD
:MON
,TUE
,WED
,THU
,FRI
,SAT
илиSUN
.hour
— час дня по UTC в форматеHH
: от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
в форматеDDD
. Например,MON
.hour
— час дня по UTC для типаWEEKLY
в форматеHH
. Например,21
.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы 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.cloud.yandex.net/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.cloud.yandex.net: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
.
-
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.