[Документация Yandex Cloud](../../../index.md) > [Yandex Cloud Stackland](../../index.md) > [Пошаговые инструкции](../index.md) > Базы данных > Managed Service for PostgreSQL > Восстановить кластер

# Восстановить кластер

Если вы утратили кластер [PostgreSQL](../../concepts/components/postgresql.md) в [проекте](../projects/create-project.md)), вы можете восстановить его из резервной копии.

## Параметр restoreClusterSpec

При восстановлении из резервной копии можно задать, откуда брать конфигурацию кластера (количество инстансов, размер хранилища, версия PostgreSQL и т.д.) — из самой резервной копии или из манифеста:

* **`restoreClusterSpec: true`** (значение по умолчанию) — конфигурация кластера подтягивается из резервной копии. Восстановленный кластер будет иметь те же `spec.instances`, `spec.storage`, `spec.version` и прочие параметры, что и исходный кластер на момент бэкапа. Параметр можно не указывать в манифесте.

* **`restoreClusterSpec: false`** — конфигурация кластера берётся из вашего манифеста. Данные восстанавливаются из выбранной копии, но число инстансов, объём хранилища, версия PostgreSQL и другие параметры задаются в манифесте. Используйте этот режим, если нужно восстановить данные в кластер с другой конфигурацией (например, с меньшим числом инстансов или меньшим объёмом диска).

Параметр задаётся в `spec.bootstrap.recovery.restoreClusterSpec`.

## Через CLI

1. Создайте файл ресурса `PostgresqlCluster`. Например, с помощью команды `touch postgresqlcluster-from-backup.yaml`.
1. Откройте файл и вставьте конфигурацию для восстановления:

    {% list tabs %}

    - Из резервной копии (конфигурация из бэкапа)

        Подставьте в параметр `spec.bootstrap.recovery.fromBackup` — название резервной копии, из которой будет восстановлен кластер. Список резервных копий: `kubectl get PostgresqlBackups -n <название проекта>`. Конфигурация кластера (instances, storage, version и т.д.) будет взята из резервной копии (по умолчанию `restoreClusterSpec: true`).

        ```yaml
        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` и т.д.) — данные восстановятся из копии, но кластер будет создан с указанными параметрами.

        ```yaml
        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, до которого нужно восстановить данные.

        ```yaml
        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
        ```

    {% endlist %}

1. Примените манифест: `kubectl apply -f postgresqlcluster-from-backup.yaml -n <название проекта>`. При необходимости можно прописать название проекта в параметр ресурса `metadata.namespace` и не использовать в команде.

## Через консоль управления

1. Если вы еще не открыли проект, выберите проект.
1. В левом меню выберите **PostgreSQL Clusters**.
1. Перейдите на вкладку **Резервные копии**.
1. Выберите копию и нажмите **Восстановить из резервной копии**.
1. Проверьте настройки кластера и измените их при необходимости:

    * **Время восстановления**. Время, до которого будет восстановлен кластер.
    * **Название кластера**. Только строчные буквы, цифры и дефисы.
    * **Количество инстансов**, количество копий кластера.
    * **Версия PostgreSQL**, выберите из списка доступных версий.
    * **Вычислительные ресурсы**, где **Лимиты** — верхняя граница, **Запросы** — нижняя граница.
    * **Хранилище**, где **Тип диска** — это Storage Class (`stackland-nvme`, `stackland-ssd`, `stackland-hdd`, `stackland-other`). Подробнее о Storage Classes см. в разделе [Дисковая подсистема](../../concepts/components/disk-storage.md#storage-classes).
    * **База данных**, раздел с данными для аутентификации.
    * **Менеджер соединений**, сервис для записи и чтения, используется для всех операций изменения данных и критически важных транзакций.
    * **Резервные копии**, настройки копирования базы данных в S3-бакет.

1. Нажмите **Создать**.

Готово, кластер восстановлен и виден в списке кластеров проекта.