Управление дисковым пространством
При заполнении хранилища более чем на 97% хост автоматически переходит в режим read-only.
Чтобы избежать проблем с операциями записи в базу данных, воспользуйтесь одним из способов:
-
Настройте алерты в Yandex Monitoring, чтобы отслеживать степень заполнения хранилища.
-
Выведите кластер из режима read-only вручную и освободите место в хранилище, удалив часть данных.
-
Увеличьте размер хранилища, чтобы снять режим read-only автоматически.
Настроить алерты в Yandex Monitoring
-
Перейдите на страницу каталога и выберите сервис Monitoring.
-
Выберите сервис Managed Service for PostgreSQL.
-
Создайте алерт со следующими параметрами:
-
Метрики — задайте параметры метрики:
-
облако;
-
каталог;
-
сервис Managed Service for PostgreSQL;
-
идентификатор кластера Managed Service for PostgreSQL;
Идентификатор кластера можно получить со списком кластеров в каталоге.
-
метка
disk.free_bytes
.
-
-
Условия срабатывания — задайте условие
Меньше или равно
для процента заполнения свободного дискового пространства, при котором сработает алерт:- Функция агрегации —
Минимум
(минимальное значение метрики за период). - Warning —
90
(90% от размера хранилища). - Alarm —
95
(95% от размера хранилища). - Окно вычисления — желаемый период, с которым будет обновляться значение метрики.
- Функция агрегации —
-
Добавьте созданный ранее канал уведомлений.
-
Вывести кластер из режима read-only вручную
Внимание
Не допускайте, чтобы во время выполнения указанных ниже действий свободное дисковое пространство уменьшилось до нуля. Поскольку предохранительный механизм отключен, PostgreSQL в этом случае аварийно завершит работу, а кластер станет неработоспособным.
Чтобы отключить режим read-only:
-
Подключитесь к БД любым удобным способом.
-
Откройте транзакцию и внутри нее выполните команду:
SET LOCAL transaction_read_only TO off;
-
В рамках этой же транзакции удалите ненужные данные с помощью операторов
DROP
илиTRUNCATE
. Не используйте операторDELETE
— при его использовании строки отмечаются как удаленные, но не удаляются из базы физически. -
Зафиксируйте транзакцию и перезапустите все подключения к базе.
Например, если ваша база содержит ненужную таблицу
ExcessDataTable1
, удалите ее с помощью транзакции:
BEGIN; SET LOCAL transaction_read_only TO off; DROP TABLE ExcessDataTable1; COMMIT;
Увеличить размер хранилища
Примечание
Некоторые настройки PostgreSQL зависят от размера хранилища.
Проверьте, что в облаке достаточно квот для увеличения хранилища. Откройте страницу Квоты
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут недоступны.
Чтобы увеличить размер хранилища для кластера:
- Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
- Выберите кластер и нажмите кнопку
Изменить кластер на панели сверху. - В блоке Размер хранилища укажите необходимое значение.
- Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы увеличить размер хранилища для кластера:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-postgresql cluster update --help
-
Укажите нужный размер хранилища в команде изменения кластера (должен быть не меньше, чем значение
disk_size
в свойствах кластера):yc managed-postgresql cluster update <имя_или_идентификатор_кластера> \ --disk-size <размер_хранилища_ГБ>
Чтобы увеличить размер хранилища для кластера:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform
. -
Измените в описании кластера Managed Service for PostgreSQL значение атрибута
disk_size
в блокеconfig.resources
:resource "yandex_mdb_postgresql_cluster" "<имя_кластера>" { ... config { resources { disk_size = <размер_хранилища_в_гигабайтах> ... } } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы 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 минут } }
-
Чтобы увеличить размер хранилища для кластера, воспользуйтесь методом REST API update для ресурса Cluster или вызовом gRPC API ClusterService/Update и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор кластера, получите список кластеров в каталоге. - Новый размер хранилища в параметре
configSpec.resources.diskSize
. - Список настроек, которые необходимо изменить (в данном случае —
configSpec.resources.diskSize
), в параметреupdateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Настроить автоматическое увеличение размера хранилища
Примечание
Некоторые настройки PostgreSQL зависят от размера хранилища.
Проверьте, что в облаке достаточно квот для увеличения хранилища. Откройте страницу Квоты
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут недоступны.
-
Перейдите на страницу каталога и выберите сервис Managed Service for PostgreSQL.
-
Выберите кластер и нажмите кнопку Изменить кластер на панели сверху.
-
В блоке Автоматическое увеличение размера хранилища:
-
В поле Увеличивать размер задайте процент заполнения хранилища, при превышении которого хранилище будет увеличено. Можно задать правила для увеличения:
- в следующее окно обслуживания;
- незамедлительно.
Можно задать оба правила, но порог для незамедлительного увеличения должен быть выше порога для увеличения в окно обслуживания.
-
В поле Максимальный размер хранилища укажите максимальный размер хранилища, который может быть установлен при автоматическом увеличении размера хранилища.
-
-
Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы настроить автоматическое увеличение размера хранилища:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-postgresql cluster update --help
-
Укажите максимальный размер хранилища и условия для его увеличения в команде изменения кластера.
Максимальный размер хранилища должен быть больше, чем значение
disk_size
в свойствах кластера. Процент для незамедлительного увеличения хранилища должен быть больше процента для увеличения в следующее окно обслуживания.yc managed-postgresql cluster update <идентификатор_или_имя_кластера> \ --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_байтах>,` `planned-usage-threshold=<процент_для_планового_увеличения>,` `emergency-usage-threshold=<процент_для_незамедлительного_увеличения>
Чтобы разрешить автоматическое увеличение размера хранилища, воспользуйтесь методом REST API update для ресурса Cluster или вызовом gRPC API ClusterService/Update и передайте в запросе:
-
Процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания, в параметре
configSpec.diskSizeAutoscaling.plannedUsageThreshold
.Значение задается в процентах от
0
до100
. По умолчанию —0
(автоматическое расширение отключено). -
Процент заполнения хранилища, при котором хранилище будет увеличено немедленно, в параметре
configSpec.diskSizeAutoscaling.emergencyUsageThreshold
.Значение задается в процентах от
0
до100
. По умолчанию —0
(автоматическое расширение отключено). Если значение больше0
, то оно не может быть меньше значения, переданного в параметреconfigSpec.diskSizeAutoscaling.plannedUsageThreshold
. -
Максимальный размер хранилища (в байтах), который может быть установлен при достижении одного из заданных процентов заполнения, в параметре
configSpec.diskSizeAutoscaling.diskSizeLimit
.
Если настроено увеличение хранилища в окно обслуживания, настройте расписание окна обслуживания.
При выполнении одного из заданных условий размер хранилища будет увеличен:
- Для сетевых HDD- и SSD-дисков — на наибольшее из двух значений: 20 ГБ или 20% от текущего размера диска.
- Для нереплицируемых SSD-дисков — на 93 ГБ.
- Для локальных SSD-дисков:
- В кластере на платформе Intel Broadwell или Intel Cascade Lake — на 100 ГБ.
- В кластере на платформе Intel Ice Lake — на 368 ГБ.
Размер хранилища будет автоматически увеличиваться при повторных срабатываниях, пока не достигнет заданного максимума. После этого вы можете задать новый максимальный размер хранилища вручную.