Восстановить кластер
Если вы утратили кластер PostgreSQL в проекте), вы можете восстановить его из резервной копии.
Параметр restoreClusterSpec
При восстановлении из резервной копии можно задать, откуда брать конфигурацию кластера (количество инстансов, размер хранилища, версия PostgreSQL и т.д.) — из самой резервной копии или из манифеста:
-
restoreClusterSpec: true(значение по умолчанию) — конфигурация кластера подтягивается из резервной копии. Восстановленный кластер будет иметь те жеspec.instances,spec.storage,spec.versionи прочие параметры, что и исходный кластер на момент бэкапа. Параметр можно не указывать в манифесте. -
restoreClusterSpec: false— конфигурация кластера берётся из вашего манифеста. Данные восстанавливаются из выбранной копии, но число инстансов, объём хранилища, версия PostgreSQL и другие параметры задаются в манифесте. Используйте этот режим, если нужно восстановить данные в кластер с другой конфигурацией (например, с меньшим числом инстансов или меньшим объёмом диска).
Параметр задаётся в spec.bootstrap.recovery.restoreClusterSpec.
Через CLI
-
Создайте файл ресурса
PostgresqlCluster. Например, с помощью командыtouch postgresqlcluster-from-backup.yaml. -
Откройте файл и вставьте конфигурацию для восстановления:
Из резервной копии (конфигурация из бэкапа)Из резервной копии с собственной конфигурациейНа определенный момент времениПодставьте в параметр
spec.bootstrap.recovery.fromBackup— название резервной копии, из которой будет восстановлен кластер. Список резервных копий:kubectl get PostgresqlBackups -n <название проекта>. Конфигурация кластера (instances, storage, version и т.д.) будет взята из резервной копии (по умолчаниюrestoreClusterSpec: true).apiVersion: postgresql.stackland.yandex.cloud/v1alpha1 kind: PostgresqlCluster metadata: name: cluster-restored annotations: pgcl.io/description: "PostgreSQL Cluster restored from backup" spec: bootstrap: recovery: fromBackup: cluster-backup backup: storage: type: stackland-storageУкажите
spec.bootstrap.recovery.fromBackupиspec.bootstrap.recovery.restoreClusterSpec: false. В манифесте задайте нужную конфигурацию кластера (spec.instances,spec.storage,spec.versionи т.д.) — данные восстановятся из копии, но кластер будет создан с указанными параметрами.apiVersion: postgresql.stackland.yandex.cloud/v1alpha1 kind: PostgresqlCluster metadata: name: cluster-restored-custom-spec annotations: pgcl.io/description: "PostgreSQL Cluster restored from backup with custom spec" spec: instances: 1 storage: size: 2Gi version: "17" bootstrap: recovery: fromBackup: cluster-backup restoreClusterSpec: false backup: storage: type: stackland-storageДля восстановления на момент времени (PITR) укажите в параметре
spec.bootstrap.recovery.fromBackup— имя резервной копии (PostgresqlBackup), из которой выполняется восстановление. Список резервных копий:kubectl get PostgresqlBackups -n <название проекта>. В параметреspec.bootstrap.recovery.recoveryTarget.targetTimeукажите время в формате RFC3339, до которого нужно восстановить данные.apiVersion: postgresql.stackland.yandex.cloud/v1alpha1 kind: PostgresqlCluster metadata: name: cluster-restored-from-pitr annotations: pgcl.io/description: "PostgreSQL Cluster restored with PITR" spec: instances: 1 storage: size: 2Gi version: "17" postgresConfiguration: logLevel: info bootstrap: recovery: fromBackup: cluster-backup recoveryTarget: targetTime: "2025-02-25T10:00:00Z" backup: storage: type: stackland-storage -
Примените манифест:
kubectl apply -f postgresqlcluster-from-backup.yaml -n <название проекта>. При необходимости можно прописать название проекта в параметр ресурсаmetadata.namespaceи не использовать в команде.
Через консоль управления
-
Если вы еще не открыли проект, выберите проект.
-
В левом меню выберите PostgreSQL Clusters.
-
Перейдите на вкладку Резервные копии.
-
Выберите копию и нажмите Восстановить из резервной копии.
-
Проверьте настройки кластера и измените их при необходимости:
- Время восстановления. Время, до которого будет восстановлен кластер.
- Название кластера. Только строчные буквы, цифры и дефисы.
- Количество инстансов, количество копий кластера.
- Версия PostgreSQL, выберите из списка доступных версий.
- Вычислительные ресурсы, где Лимиты — верхняя граница, Запросы — нижняя граница.
- Хранилище, где Тип диска — это Storage Class (
stackland-nvme,stackland-ssd,stackland-hdd,stackland-other). Подробнее о Storage Classes см. в разделе Дисковая подсистема. - База данных, раздел с данными для аутентификации.
- Менеджер соединений, сервис для записи и чтения, используется для всех операций изменения данных и критически важных транзакций.
- Резервные копии, настройки копирования базы данных в S3-бакет.
-
Нажмите Создать.
Готово, кластер восстановлен и виден в списке кластеров проекта.