[Документация Yandex Cloud](../../index.md) > [Yandex StoreDoc](../index.md) > [Пошаговые инструкции](index.md) > Кластеры > Управление резервными копиями

# Управление резервными копиями в Yandex StoreDoc

Вы можете создавать [резервные копии](../concepts/backup.md) и восстанавливать кластеры из имеющихся резервных копий.

Также Yandex StoreDoc ежедневно создает автоматическую резервную копию. Вы можете [задать время начала резервного копирования и срок хранения](update.md#change-additional-settings) для нее.

## Восстановить кластер из резервной копии {#restore}

{% note warning %}

Для кластеров с неподдерживаемой версией СУБД восстановление из резервных копий недоступно.

{% endnote %}


Перед началом работы [назначьте](../../iam/operations/roles/grant.md) вашему аккаунту в Yandex Cloud роль [managed-mongodb.restorer](../../iam/roles-reference.md#managed-mongodb-restorer) или выше на каталог размещения резервной копии и каталог, где будет развернут новый кластер.


{% list tabs group=instructions %}

- Консоль управления {#console}

  Чтобы восстановить из резервной копии существующий кластер:

  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex StoreDoc**.

  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../_assets/console-icons/archive.svg) **Резервные копии**.

  1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужной резервной копии и выберите **Восстановить кластер**.

      Чтобы восстановить шардированный кластер, используйте [шардированную резервную копию](../concepts/backup.md#size). Такие копии имеют больший размер.

  1. Задайте настройки нового кластера. В списке **Каталог** можно выбрать каталог для нового кластера.

  1. Чтобы восстановить состояние кластера на требуемый момент времени после создания этой резервной копии, задайте нужное значение настройки **Дата и время восстановления (UTC)**. Значение можно ввести вручную или выбрать из выпадающего календаря.

      Если оставить настройку без изменений, кластер будет восстановлен в состояние на момент завершения создания резервной копии.

  1. Нажмите кнопку **Восстановить кластер**.

  Чтобы восстановить из резервной копии удаленный ранее кластер:

  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex StoreDoc**.

  1. На панели слева выберите ![image](../../_assets/console-icons/archive.svg) **Резервные копии**.

  1. Найдите нужную резервную копию по времени создания и идентификатору кластера. В колонке **Идентификатор** содержатся идентификаторы в формате `<идентификатор_кластера>:<идентификатор_резервной_копии>`.

      Если вы хотите восстановить шардированный кластер, найдите [шардированную резервную копию](../concepts/backup.md#size). Такие копии имеют больший размер.

  1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужной резервной копии и выберите **Восстановить кластер**.

  1. Задайте настройки нового кластера. В списке **Каталог** можно выбрать каталог для нового кластера.

  1. Чтобы восстановить состояние кластера на требуемый момент времени после создания этой резервной копии, задайте нужное значение настройки **Дата и время восстановления (UTC)**. Значение можно ввести вручную или выбрать из выпадающего календаря.

      Если оставить настройку без изменений, кластер будет восстановлен в состояние на момент завершения создания резервной копии.

  1. Нажмите кнопку **Восстановить кластер**.

  Yandex StoreDoc запустит операцию создания кластера из резервной копии.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы восстановить кластер из резервной копии:

  1. Посмотрите описание команды CLI для восстановления кластера Yandex StoreDoc:

      ```bash
      yc managed-mongodb cluster restore --help
      ```

  1. Получите список доступных резервных копий кластеров Yandex StoreDoc:

     ```bash
     yc managed-mongodb backup list
     ```

     Результат:

     ```text
     +--------------------------+---------------------+----------------------+---------------------+--------+-----------+
     |            ID            |     CREATED AT      |  SOURCE CLUSTER ID   |     STARTED AT      |  SIZE  |   TYPE    |
     +--------------------------+---------------------+----------------------+---------------------+--------+-----------+
     | c9qlk4v13uq7********:... | 2020-08-10 12:00:00 | c9qlk4v13uq7******** | 2020-08-10 11:55:17 | 3.3 KB | AUTOMATED |
     | ...                                                                                         |                    |
     +--------------------------+---------------------+----------------------+---------------------+--------+-----------+
     ```

     Время завершения создания резервной копии указано в столбце `CREATED AT` списка доступных резервных копий в формате `yyyy-mm-dd hh:mm:ss` (`2020-08-10 12:00:00` в примере выше). Вы можете восстановить состояние кластера на любой момент времени, начиная с момента создания резервной копии.

  1. Выполните команду создания нового кластера из резервной копии (в примерах приведены только некоторые параметры).

      
      Для нешардированного кластера:

      ```bash
      yc managed-mongodb cluster restore \
         --backup-id <идентификатор_резервной_копии> \
         --recovery-target-timestamp <момент_времени> \
         --mongodb-version <версия_Yandex_StoreDoc> \
         --name <имя_нового_кластера> \
         --environment <окружение> \
         --network-name <имя_сети> \
         --host zone-id=<зона_доступности>,`
               `subnet-id=<идентификатор_подсети> \
         --mongod-resource-preset <класс_хоста> \
         --mongod-disk-size <размер_хранилища_в_ГБ> \
         --mongod-disk-type <тип_диска> \
         --disk-size-autoscaling mongod-disk-size-limit=<максимальный_размер_хранилища_в_ГБ>,`
                                `mongod-planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `mongod-emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
         --maintenance-window type=<тип_технического_обслуживания>,`
                             `day=<день_недели>,`
                             `hour=<порядковый_номер_часового_интервала> \
         --performance-diagnostics=<включить_диагностику>
      ```

      Для шардированного кластера:

      ```bash
      yc managed-mongodb cluster restore \
         --backup-id <идентификатор_резервной_копии> \
         --recovery-target-timestamp <момент_времени> \
         --mongodb-version <версия_Yandex_StoreDoc> \
         --name <имя_нового_кластера> \
         --environment <окружение> \
         --network-name <имя_сети> \
         --host zone-id=<зона_доступности>,`
               `subnet-id=<идентификатор_подсети>,`
               `type=mongod,`
               `shard-name=<имя_шарда> \
         --mongod-resource-preset <класс_хоста> \
         --mongod-disk-size <размер_хранилища_в_ГБ> \
         --mongod-disk-type <тип_диска> \
         --host zone-id=<зона_доступности>,`
               `subnet-id=<идентификатор_подсети>,`
               `type=<тип_хоста> \
         ...
         --host zone-id=<зона_доступности>,`
               `subnet-id=<идентификатор_подсети>,`
               `type=<тип_хоста> \
         --<тип_хоста>-resource-preset <класс_хоста> \
         --<тип_хоста>-disk-size <размер_хранилища_в_ГБ> \
         --<тип_хоста>-disk-type <тип_диска> \
         --disk-size-autoscaling mongod-disk-size-limit=<максимальный_размер_хранилища_в_ГБ>,`
                                `mongod-planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `mongod-emergency-usage-threshold=<процент_для_незамедлительного_увеличения>,`
                                 ...
                                `<тип_хоста>-disk-size-limit=<максимальный_размер_хранилища_в_ГБ>,`
                                `<тип_хоста>-planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `<тип_хоста>-emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
         --maintenance-window type=<тип_технического_обслуживания>,`
                             `day=<день_недели>,`
                             `hour=<порядковый_номер_часового_интервала> \
         --performance-diagnostics=<включить_диагностику>
      ```


      Где:

      * `--backup-id` — идентификатор резервной копии. Чтобы восстановить шардированный кластер, укажите идентификатор [шардированной резервной копии](../concepts/backup.md#size). Такие копии имеют больший размер.
      
          Чтобы узнать идентификатор, [получите список резервных копий в каталоге](#list-backups).
      
      * `--recovery-target-timestamp` — момент времени, на который нужно восстановить состояние кластера Yandex StoreDoc, в формате [UNIX time](https://ru.wikipedia.org/wiki/Unix-время). Если параметр не задан, восстановится состояние кластера на момент завершения создания резервной копии.
      
      * `--mongodb-version` — версия Yandex StoreDoc.
      
      * `--name` — имя нового кластера.
      
      * `--environment` — окружение: `PRESTABLE` или `PRODUCTION`.
      
      * `--network-name` — имя [сети](../../vpc/concepts/network.md#network), в которой будет размещен кластер.
      
      * `--mongod-resource-preset` — [класс хостов](../concepts/instance-types.md) MONGOD.
      
      * `--mongod-disk-size` — размер хранилища в гигабайтах для хостов MONGOD.
      
      * `--mongod-disk-type` — тип диска для хостов MONGOD: `network-hdd`, `network-ssd` или `network-ssd-io-m3`.
      
      
      * `--<тип_хоста>-resource-preset`, `--<тип_хоста>-disk-size`, `--<тип_хоста>-disk-type` — параметры хостов, которые управляют шардированием в кластере. `<тип_хоста>` может принимать значения: `mongoinfra`, `mongocfg`, `mongos`.
      
      * `--disk-size-autoscaling` — параметры автоматического масштабирования хранилища. `<тип_хоста>` может принимать значения: `mongod` — для шардированного и нешардированного кластера, `mongoinfra`, `mongocfg`, `mongos` — только для шардированного кластера.
      
          * `<тип_хоста>-planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
      
              Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
      
              Если вы указали значение больше `0`, настройте расписание технического обслуживания.
      
          * `<тип_хоста>-emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
      
              Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `<тип_хоста>-planned-usage-threshold`.
      
          * `<тип_хоста>-disk-size-limit` — максимальный размер хранилища в гигабайтах, который может быть установлен при достижении одного из заданных процентов заполнения.
      
              Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
      
      * `--maintenance-window` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). В `--maintenance-window` передайте один из двух параметров:
      
          * `anytime` (по умолчанию) — в любое время.
          * `weekly` — по расписанию. Для этого значения дополнительно укажите:
              * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
              * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
          
                > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
      
      * `--performance-diagnostics` — включить диагностику производительности кластера: `true` или `false`.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "folderId": "<идентификатор_каталога>",
          "backupId": "<идентификатор_резервной_копии>",
          "name": "<имя_нового_кластера>",
          "environment": "<окружение>",
          "networkId": "<идентификатор_сети>",
          "recoveryTargetSpec": {
            "timestamp": "<момент_времени>"
          },
          "configSpec": {
            "version": "<версия_Yandex_StoreDoc>",
            "mongodb": {
              "<тип_хоста_Yandex_StoreDoc>": {
                "resources": {
                  "resourcePresetId": "<класс_хостов>",
                  "diskSize": "<размер_хранилища_в_байтах>",
                  "diskTypeId": "<тип_диска>"
                },
                "diskSizeAutoscaling": {
                  "plannedUsageThreshold": "<процент_для_планового_увеличения>",
                  "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>",
                  "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                }
              },
              ...
              "<тип_хоста_Yandex_StoreDoc>": {
                "resources": {
                  "resourcePresetId": "<класс_хостов>",
                  "diskSize": "<размер_хранилища_в_байтах>",
                  "diskTypeId": "<тип_диска>"
                },
                "diskSizeAutoscaling": {
                  "plannedUsageThreshold": "<процент_для_планового_увеличения>",
                  "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>",
                  "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                }
              }
            }
          },
          "hostSpecs": [
            {
              "zoneId": "<зона_доступности>",
              "subnetId": "<идентификатор_подсети>",
              "assignPublicIp": <разрешить_публичный_доступ_к_хосту>,
              "type": "<тип_хоста>",
              "shardName": "<имя_шарда>",
              "hidden": <скрыть_хост>,
              "secondaryDelaySecs": "<задержка_в_секундах>",
              "priority": "<приоритет_назначения_хоста_мастером>",
              "tags": "<метки_хоста>"
            }
          ],
          "maintenanceWindow": {
            "weeklyMaintenanceWindow": {
              "day": "<день_недели>",
              "hour": "<порядковый_номер_часового_интервала>"
            }
          }
        }
        ```

        Где:

        * `folderId` — идентификатор каталога. Его можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).
        * `backupId` — идентификатор резервной копии. Чтобы восстановить шардированный кластер, укажите идентификатор [шардированной резервной копии](../concepts/backup.md#size). Такие копии имеют больший размер.
        
            Чтобы узнать идентификатор, [получите список резервных копий в каталоге](cluster-backups.md#list-backups).
        
        * `name` — имя нового кластера.
        * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
        * `networkId` — идентификатор [сети](../../vpc/concepts/network.md#network), в которой будет размещен кластер.
        * `recoveryTargetSpec.timestamp` — момент времени, на который нужно восстановить состояние кластера Yandex StoreDoc, в формате [UNIX time](https://ru.wikipedia.org/wiki/Unix-время). Если параметр не задан, восстановится состояние кластера на момент завершения создания резервной копии.
        
        * `configSpec` — настройки кластера:
        
            * `version` — версия Yandex StoreDoc: 5.0, 6.0 или 7.0.
            * Тип хоста Yandex StoreDoc — зависит от [типа шардирования](../concepts/sharding.md). Доступные значения: `mongod`, `mongocfg`, `mongos`, `mongoinfra`. Если кластер нешардированный, укажите `mongod`.
        
                * `resources` — ресурсы кластера:
        
                    * `resourcePresetId` — [класс хостов](../concepts/instance-types.md).
                    * `diskSize` — размер диска в байтах.
                    * `diskTypeId` — [тип диска](../concepts/storage.md).
        
                * `diskSizeAutoscaling` — параметры автоматического масштабирования хранилища:
        
                    * `plannedUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
        
                        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
        
                        Если вы указали значение больше `0`, настройте расписание технического обслуживания.
        
                    * `emergencyUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
        
                        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `plannedUsageThreshold`.
        
                    * `diskSizeLimit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
        
                        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
        
        * `hostSpecs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:
        
            * `zoneId` — [зона доступности](../../overview/concepts/geo-scope.md).
            * `subnetId` — [идентификатор подсети](../../vpc/concepts/network.md#subnet).
            * `assignPublicIp` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`.
            * `type` — тип хоста в шардированном кластере: `MONGOD`, `MONGOINFRA`, `MONGOS` или `MONGOCFG`. Если кластер нешардированный, укажите `MONGOD`.
            * `shardName` — имя шарда в шардированном кластере.
            * `hidden` — будет ли хост виден (`false`) или скрыт (`true`).
            * `secondaryDelaySecs` — время отставания хоста от мастера.
            * `priority` — приоритет назначения хоста мастером при [выходе из строя основного мастера](../concepts/replication.md#master-failover).
            * `tags` — метки хоста.
        
        * `maintenanceWindow` — настройки времени технического обслуживания (в т. ч. для выключенных кластеров). В `maintenanceWindow` передайте один из двух параметров:
          
          * `anytime` — техническое обслуживание происходит в любое время.
          * `weeklyMaintenanceWindow` — техническое обслуживание происходит раз в неделю, в указанное время:
          
              * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
              * `hour` — порядковый номер часового интервала по UTC: от `1` до `24` часов.
          
                > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

    1. Воспользуйтесь методом [Cluster.Restore](../api-ref/Cluster/restore.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
            --request POST \
            --header "Authorization: Bearer $IAM_TOKEN" \
            --header "Content-Type: application/json" \
            --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters:restore' \
            --data "@body.json"
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/restore.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "folder_id": "<идентификатор_каталога>",
          "backup_id": "<идентификатор_резервной_копии>",
          "name": "<имя_нового_кластера>",
          "environment": "<окружение>",
          "network_id": "<идентификатор_сети>",
          "recovery_target_spec": {
            "timestamp": "<момент_времени>"
          },
          "config_spec": {
            "version": "<версия_Yandex_StoreDoc>",
            "mongodb": {
              "<тип_хоста_Yandex_StoreDoc>": {
                "resources": {
                  "resource_preset_id": "<класс_хостов>",
                  "disk_size": "<размер_хранилища_в_байтах>",
                  "disk_type_id": "<тип_диска>"
                },
                "disk_size_autoscaling": {
                  "planned_usage_threshold": "<процент_для_планового_увеличения>",
                  "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>",
                  "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                }
              },
              ...
              "<тип_хоста_Yandex_StoreDoc>": {
                "resources": {
                  "resource_preset_id": "<класс_хостов>",
                  "disk_size": "<размер_хранилища_в_байтах>",
                  "disk_type_id": "<тип_диска>"
                },
                "disk_size_autoscaling": {
                  "planned_usage_threshold": "<процент_для_планового_увеличения>",
                  "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>",
                  "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                }
              }
            }
          },
          "host_specs": [
            {
              "zone_id": "<зона_доступности>",
              "subnet_id": "<идентификатор_подсети>",
              "assign_public_ip": <разрешить_публичный_доступ_к_хосту>,
              "type": "<тип_хоста>",
              "shard_name": "<имя_шарда>",
              "hidden": <скрыть_хост>,
              "secondary_delay_secs": "<задержка_в_секундах>",
              "priority": "<приоритет_назначения_хоста_мастером>",
              "tags": "<метки_хоста>"
            }
          ],
          "maintenance_window": {
            "weekly_maintenance_window": {
              "day": "<день_недели>",
              "hour": "<порядковый_номер_часового_интервала>"
            }
          }
        }
        ```

        Где:

        * `folder_id` — идентификатор каталога. Его можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).
        * `backup_id` — идентификатор резервной копии. Чтобы восстановить шардированный кластер, укажите идентификатор [шардированной резервной копии](../concepts/backup.md#size). Такие копии имеют больший размер.
        
            Чтобы узнать идентификатор, [получите список резервных копий в каталоге](cluster-backups.md#list-backups).
        
        * `name` — имя нового кластера.
        * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
        * `network_id` — идентификатор [сети](../../vpc/concepts/network.md#network), в которой будет размещен кластер.
        * `recovery_target_spec.timestamp` — момент времени, на который нужно восстановить состояние кластера Yandex StoreDoc, в формате [UNIX time](https://ru.wikipedia.org/wiki/Unix-время). Если параметр не задан, восстановится состояние кластера на момент завершения создания резервной копии
        
        * `config_spec` — настройки кластера:
        
            * `version` — версия Yandex StoreDoc: 5.0, 6.0 или 7.0.
            * Тип хоста Yandex StoreDoc — зависит от [типа шардирования](../concepts/sharding.md). Доступные значения: `mongod`, `mongocfg`, `mongos`, `mongoinfra`. Если кластер нешардированный, укажите `mongod`.
        
                * `resources` — ресурсы кластера:
        
                    * `resource_preset_id` — [класс хостов](../concepts/instance-types.md).
                    * `disk_size` — размер диска в байтах.
                    * `disk_type_id` — [тип диска](../concepts/storage.md).
        
                * `disk_size_autoscaling` — параметры автоматического масштабирования хранилища:
        
                    * `planned_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
        
                        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
        
                        Если вы указали значение больше `0`, настройте расписание технического обслуживания.
        
                    * `emergency_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
        
                        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned_usage_threshold`.
        
                    * `disk_size_limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
        
                        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
        
        * `host_specs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:
        
            * `zone_id` — [зона доступности](../../overview/concepts/geo-scope.md).
            * `subnet_id` — [идентификатор подсети](../../vpc/concepts/network.md#subnet).
            * `assign_public_ip` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`.
            * `type` — тип хоста в шардированном кластере: `MONGOD`, `MONGOINFRA`, `MONGOS` или `MONGOCFG`. Если кластер нешардированный, укажите `MONGOD`.
            * `shard_name` — имя шарда в шардированном кластере.
            * `hidden` — будет ли хост виден (`false`) или скрыт (`true`).
            * `secondary_delay_secs` — время отставания хоста от мастера.
            * `priority` — приоритет назначения хоста мастером при [выходе из строя основного мастера](../concepts/replication.md#master-failover).
            * `tags` — метки хоста.
        
        * `maintenance_window` — настройки времени технического обслуживания (в т. ч. для выключенных кластеров). В `maintenance_window` передайте один из двух параметров:
          
          * `anytime` — техническое обслуживание происходит в любое время.
          * `weekly_maintenance_window` — техническое обслуживание происходит раз в неделю, в указанное время:
          
              * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
              * `hour` — порядковый номер часового интервала по UTC: от `1` до `24` часов.
          
                > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

    1. Воспользуйтесь вызовом [ClusterService.Restore](../api-ref/grpc/Cluster/restore.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
            -format json \
            -import-path ~/cloudapi/ \
            -import-path ~/cloudapi/third_party/googleapis/ \
            -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
            -rpc-header "Authorization: Bearer $IAM_TOKEN" \
            -d @ \
            mdb.api.cloud.yandex.net:443 \
            yandex.cloud.mdb.mongodb.v1.ClusterService.Restore \
            < body.json
        ```

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/restore.md#yandex.cloud.operation.Operation).
          

{% endlist %}

## Восстановить отдельные базы и коллекции из резервной копии {#restore-database}

{% list tabs group=instructions %}

- Консоль управления {#console}

  Чтобы восстановить из резервной копии базы данных и коллекции существующего кластера:

  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex StoreDoc**.

  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../_assets/console-icons/archive.svg) **Резервные копии**.

  1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужной резервной копии и выберите **Восстановить кластер**.

      Чтобы восстановить шардированный кластер, используйте [шардированную резервную копию](../concepts/backup.md#size). Такие копии имеют больший размер.

  1. Задайте настройки нового кластера. В списке **Каталог** можно выбрать каталог для нового кластера.

  1. Чтобы восстановить состояние кластера на требуемый момент времени после создания этой резервной копии, задайте нужное значение настройки **Дата и время восстановления (UTC)**. Значение можно ввести вручную или выбрать из выпадающего календаря.

      Если оставить настройку без изменений, кластер будет восстановлен в состояние на момент завершения создания резервной копии.

  1. Включите опцию **Частичное восстановление** и задайте дополнительные настройки:

      1. Выберите действие **Восстановить** и укажите список восстанавливаемых баз данных или коллекций.
      1. Выберите действие **Исключить** и укажите список баз данных или коллекций, исключаемых из восстановления.

      Имена баз данных вводятся вручную. Коллекции можно выбрать из выпадающего списка или ввести вручную в формате: `<имя_БД>.<имя_коллекции>`. Примеры: `db1`, `db2.collection1`.
      
      Базы данных и коллекции можно указать только для одного действия или для обоих сразу. Например, если для восстановления указаны базы данных, то можно указать исключения отдельных коллекций из этих баз. Если выбрано только действие **Исключить**, будут восстановлены все базы и коллекции, кроме указанных для исключения.
      
      Базы данных и коллекции, выбранные для восстановления, отображаются зеленым цветом, для исключения — серым.

  1. Если в восстанавливаемом кластере включено автомасштабирование, задайте в настройке **Обслуживание** время [технического обслуживания](../concepts/maintenance.md) (день недели и порядковый номер часового интервала по UTC).

  1. Нажмите кнопку **Восстановить кластер**.

  Чтобы восстановить из резервной копии базы данных и коллекции удаленного ранее кластера:

  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex StoreDoc**.

  1. На панели слева выберите ![image](../../_assets/console-icons/archive.svg) **Резервные копии**.

  1. Найдите нужную резервную копию по времени создания и идентификатору кластера. В колонке **Идентификатор** содержатся идентификаторы в формате `<идентификатор_кластера>:<идентификатор_резервной_копии>`.

      Если вы хотите восстановить шардированный кластер, найдите [шардированную резервную копию](../concepts/backup.md#size). Такие копии имеют больший размер.

  1. Нажмите на значок ![image](../../_assets/console-icons/ellipsis.svg) в строке нужной резервной копии и выберите **Восстановить кластер**.

  1. Задайте настройки нового кластера. В списке **Каталог** можно выбрать каталог для нового кластера.

  1. Чтобы восстановить состояние кластера на требуемый момент времени после создания этой резервной копии, задайте нужное значение настройки **Дата и время восстановления (UTC)**. Значение можно ввести вручную или выбрать из выпадающего календаря.

      Если оставить настройку без изменений, кластер будет восстановлен в состояние на момент завершения создания резервной копии.

  1. Включите опцию **Частичное восстановление** и задайте дополнительные настройки:

      1. Выберите действие **Восстановить** и укажите список восстанавливаемых баз данных или коллекций.
      1. Выберите действие **Исключить** и укажите список баз данных или коллекций, исключаемых из восстановления.

      Имена баз данных вводятся вручную. Коллекции можно выбрать из выпадающего списка или ввести вручную в формате: `<имя_БД>.<имя_коллекции>`. Примеры: `db1`, `db2.collection1`.
      
      Базы данных и коллекции можно указать только для одного действия или для обоих сразу. Например, если для восстановления указаны базы данных, то можно указать исключения отдельных коллекций из этих баз. Если выбрано только действие **Исключить**, будут восстановлены все базы и коллекции, кроме указанных для исключения.
      
      Базы данных и коллекции, выбранные для восстановления, отображаются зеленым цветом, для исключения — серым.

  1. Если в восстанавливаемом кластере включено автомасштабирование, задайте в настройке **Обслуживание** время [технического обслуживания](../concepts/maintenance.md) (день недели и порядковый номер часового интервала по UTC).

  1. Нажмите кнопку **Восстановить кластер**.

  Yandex StoreDoc запустит операцию создания кластера из резервной копии.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы восстановить отдельные базы и коллекции из резервной копии:

  1. Посмотрите описание команды CLI для восстановления кластера Yandex StoreDoc:

      ```bash
      yc managed-mongodb cluster restore --help
      ```

  1. Получите список доступных резервных копий кластеров Yandex StoreDoc:

     ```bash
     yc managed-mongodb backup list
     ```

     Результат:

     ```text
     +--------------------------+---------------------+----------------------+---------------------+--------+-----------+
     |            ID            |     CREATED AT      |  SOURCE CLUSTER ID   |     STARTED AT      |  SIZE  |   TYPE    |
     +--------------------------+---------------------+----------------------+---------------------+--------+-----------+
     | c9qlk4v13uq7********:... | 2020-08-10 12:00:00 | c9qlk4v13uq7******** | 2020-08-10 11:55:17 | 3.3 KB | AUTOMATED |
     | ...                                                                                         |                    |
     +--------------------------+---------------------+----------------------+---------------------+--------+-----------+
     ```

     Время завершения создания резервной копии указано в столбце `CREATED AT` списка доступных резервных копий в формате `yyyy-mm-dd hh:mm:ss` (`2020-08-10 12:00:00` в примере выше). Вы можете восстановить состояние кластера на любой момент времени, начиная с момента создания резервной копии.

  1. Выполните команду создания нового кластера из резервной копии, указав в ней восстанавливаемые базы данных и коллекции в параметре `--whitelist` или исключения в параметре `--blacklist`.

      
      Для нешардированного кластера:

      ```bash
      yc managed-mongodb cluster restore \
         --backup-id <идентификатор_резервной_копии> \
         --recovery-target-timestamp <момент_времени> \
         --mongodb-version <версия_Yandex_StoreDoc> \
         --name <имя_нового_кластера> \
         --environment <окружение> \
         --network-name <имя_сети> \
         --host zone-id=<зона_доступности>,`
               `subnet-id=<идентификатор_подсети> \
         --mongod-resource-preset <класс_хоста> \
         --mongod-disk-size <размер_хранилища_в_ГБ> \
         --mongod-disk-type <тип_диска> \
         --disk-size-autoscaling mongod-disk-size-limit=<максимальный_размер_хранилища_в_ГБ>,`
                                `mongod-planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `mongod-emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
         --maintenance-window type=<тип_технического_обслуживания>,`
                             `day=<день_недели>,`
                             `hour=<порядковый_номер_часового_интервала> \
         --performance-diagnostics=<включить_диагностику> \
         --whitelist <список_баз_и_коллекций_для_восстановления> \
         --blacklist <список_баз_и_коллекций_для_исключения_из_восстановления>
      ```

      Для шардированного кластера:

      ```bash
      yc managed-mongodb cluster restore \
         --backup-id <идентификатор_резервной_копии> \
         --recovery-target-timestamp <момент_времени> \
         --mongodb-version <версия_Yandex_StoreDoc> \
         --name <имя_нового_кластера> \
         --environment <окружение> \
         --network-name <имя_сети> \
         --host zone-id=<зона_доступности>,`
               `subnet-id=<идентификатор_подсети>,`
               `type=mongod,`
               `shard-name=<имя_шарда> \
         --mongod-resource-preset <класс_хоста> \
         --mongod-disk-size <размер_хранилища_в_ГБ> \
         --mongod-disk-type <тип_диска> \
         --host zone-id=<зона_доступности>,`
               `subnet-id=<идентификатор_подсети>,`
               `type=<тип_хоста> \
         ...
         --host zone-id=<зона_доступности>,`
               `subnet-id=<идентификатор_подсети>,`
               `type=<тип_хоста> \
         --<тип_хоста>-resource-preset <класс_хоста> \
         --<тип_хоста>-disk-size <размер_хранилища_в_ГБ> \
         --<тип_хоста>-disk-type <тип_диска> \
         --disk-size-autoscaling mongod-disk-size-limit=<максимальный_размер_хранилища_в_ГБ>,`
                                `mongod-planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `mongod-emergency-usage-threshold=<процент_для_незамедлительного_увеличения>,`
                                 ...
                                `<тип_хоста>-disk-size-limit=<максимальный_размер_хранилища_в_ГБ>,`
                                `<тип_хоста>-planned-usage-threshold=<процент_для_планового_увеличения>,`
                                `<тип_хоста>-emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \
         --maintenance-window type=<тип_технического_обслуживания>,`
                             `day=<день_недели>,`
                             `hour=<порядковый_номер_часового_интервала> \
         --performance-diagnostics=<включить_диагностику>
         --whitelist <список_баз_и_коллекций_для_восстановления> \
         --blacklist <список_баз_и_коллекций_для_исключения_из_восстановления>
      ```


      Где:

      * `--backup-id` — идентификатор резервной копии. Чтобы восстановить шардированный кластер, укажите идентификатор [шардированной резервной копии](../concepts/backup.md#size). Такие копии имеют больший размер.
      
          Чтобы узнать идентификатор, [получите список резервных копий в каталоге](#list-backups).
      
      * `--recovery-target-timestamp` — момент времени, на который нужно восстановить состояние кластера Yandex StoreDoc, в формате [UNIX time](https://ru.wikipedia.org/wiki/Unix-время). Если параметр не задан, восстановится состояние кластера на момент завершения создания резервной копии.
      
      * `--mongodb-version` — версия Yandex StoreDoc.
      
      * `--name` — имя нового кластера.
      
      * `--environment` — окружение: `PRESTABLE` или `PRODUCTION`.
      
      * `--network-name` — имя [сети](../../vpc/concepts/network.md#network), в которой будет размещен кластер.
      
      * `--mongod-resource-preset` — [класс хостов](../concepts/instance-types.md) MONGOD.
      
      * `--mongod-disk-size` — размер хранилища в гигабайтах для хостов MONGOD.
      
      * `--mongod-disk-type` — тип диска для хостов MONGOD: `network-hdd`, `network-ssd` или `network-ssd-io-m3`.
      
      
      * `--<тип_хоста>-resource-preset`, `--<тип_хоста>-disk-size`, `--<тип_хоста>-disk-type` — параметры хостов, которые управляют шардированием в кластере. `<тип_хоста>` может принимать значения: `mongoinfra`, `mongocfg`, `mongos`.
      
      * `--disk-size-autoscaling` — параметры автоматического масштабирования хранилища. `<тип_хоста>` может принимать значения: `mongod` — для шардированного и нешардированного кластера, `mongoinfra`, `mongocfg`, `mongos` — только для шардированного кластера.
      
          * `<тип_хоста>-planned-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
      
              Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
      
              Если вы указали значение больше `0`, настройте расписание технического обслуживания.
      
          * `<тип_хоста>-emergency-usage-threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
      
              Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `<тип_хоста>-planned-usage-threshold`.
      
          * `<тип_хоста>-disk-size-limit` — максимальный размер хранилища в гигабайтах, который может быть установлен при достижении одного из заданных процентов заполнения.
      
              Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
      
      * `--maintenance-window` — настройки времени [технического обслуживания](../concepts/maintenance.md) (в т. ч. для выключенных кластеров). В `--maintenance-window` передайте один из двух параметров:
      
          * `anytime` (по умолчанию) — в любое время.
          * `weekly` — по расписанию. Для этого значения дополнительно укажите:
              * `day` — день недели: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
              * `hour` — порядковый номер часового интервала по UTC: от `1` до `24`.
          
                > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.
      
      * `--performance-diagnostics` — включить диагностику производительности кластера: `true` или `false`.

      * Настройки восстановления отдельных баз и коллекций:

          * `--whitelist` — список баз и коллекций для восстановления. Например: `"db1","db2.collection1"`.
          * `--blacklist` — список баз и коллекций, исключаемых из восстановления. Например: `"db1.collection1"`.

          Если в параметре `--whitelist` указаны базы, то в параметре `--blacklist` можно указать исключения коллекций из этих баз.
          Если параметр `--whitelist` не указан, будут восстановлены все базы и коллекции, кроме указанных в параметре `--blacklist`.

- REST API {#api}

    1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

        ```bash
        export IAM_TOKEN="<IAM-токен>"
        ```

    1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "folderId": "<идентификатор_каталога>",
          "backupId": "<идентификатор_резервной_копии>",
          "name": "<имя_нового_кластера>",
          "environment": "<окружение>",
          "networkId": "<идентификатор_сети>",
          "recoveryTargetSpec": {
            "timestamp": "<момент_времени>"
          },
          "configSpec": {
            "version": "<версия_Yandex_StoreDoc>",
            "mongodb": {
              "<тип_хоста_Yandex_StoreDoc>": {
                "resources": {
                  "resourcePresetId": "<класс_хостов>",
                  "diskSize": "<размер_хранилища_в_байтах>",
                  "diskTypeId": "<тип_диска>"
                },
                "diskSizeAutoscaling": {
                  "plannedUsageThreshold": "<процент_для_планового_увеличения>",
                  "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>",
                  "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                }
              },
              ...
              "<тип_хоста_Yandex_StoreDoc>": {
                "resources": {
                  "resourcePresetId": "<класс_хостов>",
                  "diskSize": "<размер_хранилища_в_байтах>",
                  "diskTypeId": "<тип_диска>"
                },
                "diskSizeAutoscaling": {
                  "plannedUsageThreshold": "<процент_для_планового_увеличения>",
                  "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>",
                  "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>"
                }
              }
            }
          },
          "hostSpecs": [
            {
              "zoneId": "<зона_доступности>",
              "subnetId": "<идентификатор_подсети>",
              "assignPublicIp": <разрешить_публичный_доступ_к_хосту>,
              "type": "<тип_хоста>",
              "shardName": "<имя_шарда>",
              "hidden": <скрыть_хост>,
              "secondaryDelaySecs": "<задержка_в_секундах>",
              "priority": "<приоритет_назначения_хоста_мастером>",
              "tags": "<метки_хоста>"
            }
          ],
          "maintenanceWindow": {
            "weeklyMaintenanceWindow": {
              "day": "<день_недели>",
              "hour": "<порядковый_номер_часового_интервала>"
            }
          },
          "partialRestoreSpec": {
            "whitelist": [<список_баз_и_коллекций_для_восстановления>],
            "blacklist": [<список_баз_и_коллекций_для_исключения_из_восстановления>]
          }
        }
        ```

        Где:

        * `folderId` — идентификатор каталога. Его можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).
        * `backupId` — идентификатор резервной копии. Чтобы восстановить шардированный кластер, укажите идентификатор [шардированной резервной копии](../concepts/backup.md#size). Такие копии имеют больший размер.
        
            Чтобы узнать идентификатор, [получите список резервных копий в каталоге](cluster-backups.md#list-backups).
        
        * `name` — имя нового кластера.
        * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
        * `networkId` — идентификатор [сети](../../vpc/concepts/network.md#network), в которой будет размещен кластер.
        * `recoveryTargetSpec.timestamp` — момент времени, на который нужно восстановить состояние кластера Yandex StoreDoc, в формате [UNIX time](https://ru.wikipedia.org/wiki/Unix-время). Если параметр не задан, восстановится состояние кластера на момент завершения создания резервной копии.
        
        * `configSpec` — настройки кластера:
        
            * `version` — версия Yandex StoreDoc: 5.0, 6.0 или 7.0.
            * Тип хоста Yandex StoreDoc — зависит от [типа шардирования](../concepts/sharding.md). Доступные значения: `mongod`, `mongocfg`, `mongos`, `mongoinfra`. Если кластер нешардированный, укажите `mongod`.
        
                * `resources` — ресурсы кластера:
        
                    * `resourcePresetId` — [класс хостов](../concepts/instance-types.md).
                    * `diskSize` — размер диска в байтах.
                    * `diskTypeId` — [тип диска](../concepts/storage.md).
        
                * `diskSizeAutoscaling` — параметры автоматического масштабирования хранилища:
        
                    * `plannedUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
        
                        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
        
                        Если вы указали значение больше `0`, настройте расписание технического обслуживания.
        
                    * `emergencyUsageThreshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
        
                        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `plannedUsageThreshold`.
        
                    * `diskSizeLimit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
        
                        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
        
        * `hostSpecs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:
        
            * `zoneId` — [зона доступности](../../overview/concepts/geo-scope.md).
            * `subnetId` — [идентификатор подсети](../../vpc/concepts/network.md#subnet).
            * `assignPublicIp` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`.
            * `type` — тип хоста в шардированном кластере: `MONGOD`, `MONGOINFRA`, `MONGOS` или `MONGOCFG`. Если кластер нешардированный, укажите `MONGOD`.
            * `shardName` — имя шарда в шардированном кластере.
            * `hidden` — будет ли хост виден (`false`) или скрыт (`true`).
            * `secondaryDelaySecs` — время отставания хоста от мастера.
            * `priority` — приоритет назначения хоста мастером при [выходе из строя основного мастера](../concepts/replication.md#master-failover).
            * `tags` — метки хоста.
        
        * `maintenanceWindow` — настройки времени технического обслуживания (в т. ч. для выключенных кластеров). В `maintenanceWindow` передайте один из двух параметров:
          
          * `anytime` — техническое обслуживание происходит в любое время.
          * `weeklyMaintenanceWindow` — техническое обслуживание происходит раз в неделю, в указанное время:
          
              * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
              * `hour` — порядковый номер часового интервала по UTC: от `1` до `24` часов.
          
                > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

        * `partialRestoreSpec` — настройки восстановления отдельных баз и коллекций:

            * `whitelist` — список баз и коллекций для восстановления. Например: `["db1", "db2.collection1"]`.
            * `blacklist` — список баз и коллекций, исключаемых из восстановления. Например: `["db1.collection1"]`.

            Если в параметре `whitelist` указаны базы, то в параметре `blacklist` можно указать исключения коллекций из этих баз.
            Если параметр `whitelist` не указан, будут восстановлены все базы и коллекции, кроме указанных в параметре `blacklist`.

    1. Воспользуйтесь методом [Cluster.Restore](../api-ref/Cluster/restore.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
            --request POST \
            --header "Authorization: Bearer $IAM_TOKEN" \
            --header "Content-Type: application/json" \
            --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters:restore' \
            --data "@body.json"
        ```

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/restore.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
  1. Создайте файл `body.json` и добавьте в него следующее содержимое:

        ```json
        {
          "folder_id": "<идентификатор_каталога>",
          "backup_id": "<идентификатор_резервной_копии>",
          "name": "<имя_нового_кластера>",
          "environment": "<окружение>",
          "network_id": "<идентификатор_сети>",
          "recovery_target_spec": {
            "timestamp": "<момент_времени>"
          },
          "config_spec": {
            "version": "<версия_Yandex_StoreDoc>",
            "mongodb": {
              "<тип_хоста_Yandex_StoreDoc>": {
                "resources": {
                  "resource_preset_id": "<класс_хостов>",
                  "disk_size": "<размер_хранилища_в_байтах>",
                  "disk_type_id": "<тип_диска>"
                },
                "disk_size_autoscaling": {
                  "planned_usage_threshold": "<процент_для_планового_увеличения>",
                  "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>",
                  "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                }
              },
              ...
              "<тип_хоста_Yandex_StoreDoc>": {
                "resources": {
                  "resource_preset_id": "<класс_хостов>",
                  "disk_size": "<размер_хранилища_в_байтах>",
                  "disk_type_id": "<тип_диска>"
                },
                "disk_size_autoscaling": {
                  "planned_usage_threshold": "<процент_для_планового_увеличения>",
                  "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>",
                  "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>"
                }
              }
            }
          },
          "host_specs": [
            {
              "zone_id": "<зона_доступности>",
              "subnet_id": "<идентификатор_подсети>",
              "assign_public_ip": <разрешить_публичный_доступ_к_хосту>,
              "type": "<тип_хоста>",
              "shard_name": "<имя_шарда>",
              "hidden": <скрыть_хост>,
              "secondary_delay_secs": "<задержка_в_секундах>",
              "priority": "<приоритет_назначения_хоста_мастером>",
              "tags": "<метки_хоста>"
            }
          ],
          "maintenance_window": {
            "weekly_maintenance_window": {
              "day": "<день_недели>",
              "hour": "<порядковый_номер_часового_интервала>"
            }
          },
          "partial_restore_spec": {
            "whitelist": [<список_баз_и_коллекций_для_восстановления>],
            "blacklist": [<список_баз_и_коллекций_для_исключения_из_восстановления>]
          }
        }
        ```

        Где:

        * `folder_id` — идентификатор каталога. Его можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).
        * `backup_id` — идентификатор резервной копии. Чтобы восстановить шардированный кластер, укажите идентификатор [шардированной резервной копии](../concepts/backup.md#size). Такие копии имеют больший размер.
        
            Чтобы узнать идентификатор, [получите список резервных копий в каталоге](cluster-backups.md#list-backups).
        
        * `name` — имя нового кластера.
        * `environment` — окружение кластера: `PRODUCTION` или `PRESTABLE`.
        * `network_id` — идентификатор [сети](../../vpc/concepts/network.md#network), в которой будет размещен кластер.
        * `recovery_target_spec.timestamp` — момент времени, на который нужно восстановить состояние кластера Yandex StoreDoc, в формате [UNIX time](https://ru.wikipedia.org/wiki/Unix-время). Если параметр не задан, восстановится состояние кластера на момент завершения создания резервной копии
        
        * `config_spec` — настройки кластера:
        
            * `version` — версия Yandex StoreDoc: 5.0, 6.0 или 7.0.
            * Тип хоста Yandex StoreDoc — зависит от [типа шардирования](../concepts/sharding.md). Доступные значения: `mongod`, `mongocfg`, `mongos`, `mongoinfra`. Если кластер нешардированный, укажите `mongod`.
        
                * `resources` — ресурсы кластера:
        
                    * `resource_preset_id` — [класс хостов](../concepts/instance-types.md).
                    * `disk_size` — размер диска в байтах.
                    * `disk_type_id` — [тип диска](../concepts/storage.md).
        
                * `disk_size_autoscaling` — параметры автоматического масштабирования хранилища:
        
                    * `planned_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено в следующее [окно технического обслуживания](../concepts/maintenance.md#maintenance-window).
        
                        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено).
        
                        Если вы указали значение больше `0`, настройте расписание технического обслуживания.
        
                    * `emergency_usage_threshold` — процент заполнения хранилища, при котором хранилище будет увеличено немедленно.
        
                        Значение задается в процентах от `0` до `100`. По умолчанию — `0` (автоматическое расширение отключено). Должно быть не меньше значения `planned_usage_threshold`.
        
                    * `disk_size_limit` — максимальный размер хранилища в байтах, который может быть установлен при достижении одного из заданных процентов заполнения.
        
                        Если указать значение `0`, автоматическое увеличение размера хранилища будет отключено.
        
        * `host_specs` — настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:
        
            * `zone_id` — [зона доступности](../../overview/concepts/geo-scope.md).
            * `subnet_id` — [идентификатор подсети](../../vpc/concepts/network.md#subnet).
            * `assign_public_ip` — доступность хоста из интернета по публичному IP-адресу: `true` или `false`.
            * `type` — тип хоста в шардированном кластере: `MONGOD`, `MONGOINFRA`, `MONGOS` или `MONGOCFG`. Если кластер нешардированный, укажите `MONGOD`.
            * `shard_name` — имя шарда в шардированном кластере.
            * `hidden` — будет ли хост виден (`false`) или скрыт (`true`).
            * `secondary_delay_secs` — время отставания хоста от мастера.
            * `priority` — приоритет назначения хоста мастером при [выходе из строя основного мастера](../concepts/replication.md#master-failover).
            * `tags` — метки хоста.
        
        * `maintenance_window` — настройки времени технического обслуживания (в т. ч. для выключенных кластеров). В `maintenance_window` передайте один из двух параметров:
          
          * `anytime` — техническое обслуживание происходит в любое время.
          * `weekly_maintenance_window` — техническое обслуживание происходит раз в неделю, в указанное время:
          
              * `day` — день недели в формате `DDD`: `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT` или `SUN`.
              * `hour` — порядковый номер часового интервала по UTC: от `1` до `24` часов.
          
                > Например, `1` соответствует интервалу с `00:00` до `01:00`, `5` — с `04:00` до `05:00`.

        * `partial_restore_spec` — настройки восстановления отдельных баз и коллекций:

            * `whitelist` — список баз и коллекций для восстановления. Например: `["db1", "db2.collection1"]`. 
            * `blacklist` — список баз и коллекций, исключаемых из восстановления. Например: `["db1.collection1"]`.

            Если в параметре `whitelist` указаны базы, то в параметре `blacklist` можно указать исключения коллекций из этих баз.
            Если параметр `whitelist` не указан, будут восстановлены все базы и коллекции, кроме указанных в параметре `blacklist`.

    1. Воспользуйтесь вызовом [ClusterService.Restore](../api-ref/grpc/Cluster/restore.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

        ```bash
        grpcurl \
            -format json \
            -import-path ~/cloudapi/ \
            -import-path ~/cloudapi/third_party/googleapis/ \
            -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
            -rpc-header "Authorization: Bearer $IAM_TOKEN" \
            -d @ \
            mdb.api.cloud.yandex.net:443 \
            yandex.cloud.mdb.mongodb.v1.ClusterService.Restore \
            < body.json
        ```

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/restore.md#yandex.cloud.operation.Operation).

{% endlist %}

## Создать резервную копию {#create-backup}

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex StoreDoc**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../_assets/console-icons/archive.svg) **Резервные копии**.
  1. Нажмите кнопку **Создать резервную копию**.

  Сервис начнет создавать резервную копию без дополнительного подтверждения.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы создать резервную копию кластера:

  1. Посмотрите описание команды CLI для создания резервной копии Yandex StoreDoc:

      ```bash
      yc managed-mongodb cluster backup --help
      ```

  1. Запросите создание резервной копии, указав идентификатор или имя кластера:

      ```bash
      yc managed-mongodb cluster backup <имя_или_идентификатор_кластера>
      ```

      Идентификатор и имя кластера можно получить со [списком кластеров](cluster-list.md#list-clusters).

- REST API {#api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Воспользуйтесь методом [Cluster.Backup](../api-ref/Cluster/backup.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

      ```bash
      curl \
          --request POST \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --header "Content-Type: application/json" \
          --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>:backup'
      ```

      Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/backup.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
  1. Воспользуйтесь вызовом [ClusterService.Backup](../api-ref/grpc/Cluster/backup.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

      ```bash
      grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d '{
                "cluster_id": "<идентификатор_кластера>"
              }' \
          mdb.api.cloud.yandex.net:443 \
          yandex.cloud.mdb.mongodb.v1.ClusterService.Backup
      ```

      Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/backup.md#yandex.cloud.operation.Operation).

{% endlist %}

Во время создания резервной копии производительность кластера может снижаться.

## Получить список резервных копий {#list-backups}

{% list tabs group=instructions %}

- Консоль управления {#console}

  Чтобы получить список резервных копий кластера:

  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex StoreDoc**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../_assets/console-icons/archive.svg) **Резервные копии**.

  Чтобы получить список всех резервных копий в каталоге:

  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex StoreDoc**.
  1. На панели слева выберите ![image](../../_assets/console-icons/archive.svg) **Резервные копии**.

  В этих списках содержится следующая информация:

  * Имя резервной копии.
  * Шард-источник.
  * Размер резервной копии.
  * Тип резервной копии: автоматическая (`Automated`) или ручная (`Manual`).
  * Время начала создания резервной копии по UTC (Coordinated Universal Time).
  * Время окончания создания резервной копии по UTC.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы получить список резервных копий кластеров Yandex StoreDoc, доступных в каталоге по умолчанию, выполните команду:

  ```bash
  yc managed-mongodb backup list
  ```

  Результат:

  ```text
  +--------------------------+---------------------+----------------------+---------------------+--------+-----------+
  |            ID            |     CREATED AT      |  SOURCE CLUSTER ID   |     STARTED AT      |  SIZE  |   TYPE    |
  +--------------------------+---------------------+----------------------+---------------------+--------+-----------+
  | c9qlk4v13uq7********:... | 2020-08-10 12:00:00 | c9qlk4v13uq7******** | 2020-08-10 11:55:17 | 3.3 KB | AUTOMATED |
  | c9qpm90p3pcg********:... | 2020-08-09 22:01:04 | c9qpm90p3pcg******** | 2020-08-09 21:30:00 | 30 KB  | MANUAL    |
  +--------------------------+---------------------+----------------------+---------------------+--------+-----------+
  ```

  В выведенной таблице содержится следующая информация:
  * Идентификатор резервной копии.
  * Время окончания создания резервной копии по UTC (Coordinated Universal Time).
  * Идентификатор кластера, для которого создавалась эта резервная копия.
  * Время начала создания резервной копии по UTC.
  * Размер резервной копии.
  * Тип резервной копии: автоматическая (`AUTOMATED`) или ручная (`MANUAL`).

- REST API {#api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

     ```bash
     export IAM_TOKEN="<IAM-токен>"
     ```

  1. Чтобы получить список резервных копий кластера:

     1. Воспользуйтесь методом [Cluster.ListBackups](../api-ref/Cluster/listBackups.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
           --request GET \
           --header "Authorization: Bearer $IAM_TOKEN" \
           --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>/backups'
        ```

        Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

     1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/listBackups.md#yandex.cloud.mdb.mongodb.v1.ListClusterBackupsResponse).

  1. Чтобы получить список резервных копий всех кластеров в каталоге:

     1. Воспользуйтесь методом [Backup.List](../api-ref/Backup/list.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

        ```bash
        curl \
           --request GET \
           --header "Authorization: Bearer $IAM_TOKEN" \
           --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/backups'
           --url-query folderId=<идентификатор_каталога>
        ```

        
        Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


     1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Backup/list.md#yandex.cloud.mdb.mongodb.v1.ListBackupsResponse).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
  1. Чтобы получить список резервных копий кластера:

      1. Воспользуйтесь вызовом [ClusterService.ListBackups](../api-ref/grpc/Cluster/listBackups.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

          ```bash
          grpcurl \
              -format json \
              -import-path ~/cloudapi/ \
              -import-path ~/cloudapi/third_party/googleapis/ \
              -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
              -rpc-header "Authorization: Bearer $IAM_TOKEN" \
              -d '{
                    "cluster_id": "<идентификатор_кластера>"
                  }' \
              mdb.api.cloud.yandex.net:443 \
              yandex.cloud.mdb.mongodb.v1.ClusterService.ListBackups
          ```

          Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

      1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/listBackups.md#yandex.cloud.mdb.mongodb.v1.ListClusterBackupsResponse).

  1. Чтобы получить список резервных копий всех кластеров в каталоге:

      1. Воспользуйтесь вызовом [BackupService.List](../api-ref/grpc/Backup/list.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

          ```bash
          grpcurl \
              -format json \
              -import-path ~/cloudapi/ \
              -import-path ~/cloudapi/third_party/googleapis/ \
              -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/backup_service.proto \
              -rpc-header "Authorization: Bearer $IAM_TOKEN" \
              -d '{
                    "folder_id": "<идентификатор_каталога>"
                  }' \
              mdb.api.cloud.yandex.net:443 \
              yandex.cloud.mdb.mongodb.v1.BackupService.List
          ```

          
          Идентификатор каталога можно запросить со [списком каталогов в облаке](../../resource-manager/operations/folder/get-id.md).


      1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Backup/list.md#yandex.cloud.mdb.mongodb.v1.ListBackupsResponse).


{% endlist %}

## Получить информацию о резервной копии {#get-backup}

{% list tabs group=instructions %}

- Консоль управления {#console}

  Чтобы получить информацию о резервной копии существующего кластера:
  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex StoreDoc**.
  1. Нажмите на имя нужного кластера и выберите вкладку ![image](../../_assets/console-icons/archive.svg) **Резервные копии**.

  Чтобы получить информацию о резервной копии удаленного ранее кластера:
  1. Перейдите на [страницу каталога](https://console.yandex.cloud).
  1. Перейдите в сервис **Yandex StoreDoc**.
  1. На панели слева выберите ![image](../../_assets/console-icons/archive.svg) **Резервные копии**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы получить данные о резервной копии кластера Yandex StoreDoc, выполните команду:

  ```bash
  yc managed-mongodb backup get <идентификатор_резервной_копии>
  ```

  Идентификатор резервной копии можно получить со [списком резервных копий](#list-backups).

- REST API {#api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

     ```bash
     export IAM_TOKEN="<IAM-токен>"
     ```

  1. Воспользуйтесь методом [Backup.Get](../api-ref/Backup/get.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

     ```bash
     curl \
        --request GET \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/backups/<идентификатор_резервной_копии>'
     ```

     Идентификатор резервной копии можно запросить со [списком резервных копий](#list-backups).

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Backup/get.md#yandex.cloud.mdb.mongodb.v1.Backup).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

     ```bash
     export IAM_TOKEN="<IAM-токен>"
     ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
  1. Воспользуйтесь вызовом [BackupService.Get](../api-ref/grpc/Backup/get.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

     ```bash
     grpcurl \
       -format json \
       -import-path ~/cloudapi/ \
       -import-path ~/cloudapi/third_party/googleapis/ \
       -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/backup_service.proto \
       -rpc-header "Authorization: Bearer $IAM_TOKEN" \
       -d '{
             "backup_id": "<идентификатор_резервной_копии>"
           }' \
       mdb.api.cloud.yandex.net:443 \
       yandex.cloud.mdb.mongodb.v1.BackupService.Get
     ```

     Идентификатор резервной копии можно запросить со [списком резервных копий](#list-backups).

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Backup/get.md#yandex.cloud.mdb.mongodb.v1.Backup).

{% endlist %}

## Задать срок хранения автоматических резервных копий {#set-backup-retain}

{% list tabs group=instructions %}

- Консоль управления {#console}

  В [консоли управления](https://console.yandex.cloud) задать срок хранения автоматических резервных копий можно при [создании](cluster-create.md) или [изменении кластера](update.md).

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы задать срок хранения автоматических резервных копий, передайте нужное значение в аргументе `--backup-retain-period-days` команды изменения кластера:

    ```bash
    yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \
       --backup-retain-period-days=<срок_хранения_в_днях>
    ```

  Допустимые значения: от `7` до `35`. Значение по умолчанию — `7`.

  Идентификатор и имя кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

- Terraform {#tf}

    1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

        О том, как создать такой файл, читайте в разделе [Создание кластера](cluster-create.md).

        Полный список доступных для изменения полей конфигурации кластера Yandex StoreDoc в [документации провайдера Terraform](../../terraform/resources/mdb_mongodb_cluster.md).

    1. Добавьте к описанию кластера Yandex StoreDoc блок `backup_retain_period_days` в секции `cluster_config`:

        ```hcl
          resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
            ...
            cluster_config {
              ...
              backup_retain_period_days = <срок_хранения_в_днях>
              }
              ...
            }
            ...
        ```

       Где `backup_retain_period_days` — срок хранения автоматических резервных копий. 
       
       Допустимые значения: от `7` до `35`. Значение по умолчанию — `7`.

  1. Проверьте корректность настроек.

        1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
        1. Выполните команду:
        
           ```bash
           terraform validate
           ```
        
           Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  1. Подтвердите изменение ресурсов.

        1. Выполните команду для просмотра планируемых изменений:
        
           ```bash
           terraform plan
           ```
        
           Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
        
        1. Если вас устраивают планируемые изменения, внесите их:
           1. Выполните команду:
        
              ```bash
              terraform apply
              ```
        
           1. Подтвердите изменение ресурсов.
           1. Дождитесь завершения операции.

        {% note warning "Ограничения по времени" %}
        
        Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex StoreDoc:
        
        * создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
        * изменение — 60 минут.
        
        Операции, длящиеся дольше указанного времени, прерываются.
        
        {% cut "Как изменить эти ограничения?" %}
        
        Добавьте к описанию кластера блок `timeouts`, например:
        
        ```hcl
        resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
          ...
          timeouts {
            create = "1h30m" # Полтора часа
            update = "2h"    # 2 часа
          }
        }
        ```
        
        {% endcut %}
        
        {% endnote %}

- REST API {#api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Воспользуйтесь методом [Cluster.Update](../api-ref/Cluster/update.md) и выполните запрос, например с помощью [cURL](https://curl.se/):

      {% note warning %}
      
      Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `updateMask` (одной строкой через запятую).
      
      {% endnote %}

      ```bash
      curl \
          --request PATCH \
          --header "Authorization: Bearer $IAM_TOKEN" \
          --header "Content-Type: application/json" \
          --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>' \
          --data '{
                    "updateMask": "configSpec.backupRetainPeriodDays",
                    "configSpec": {
                      "backupRetainPeriodDays": <время_хранения_резервных_копий_в_днях>
                    }
                  }'
      ```

      Где:

      * `updateMask` — перечень изменяемых параметров в одну строку через запятую.

          В данном случае передается только один параметр.

      * `configSpec.backupRetainPeriodDays` — срок хранения автоматических резервных копий в днях.

          Допустимые значения — от `7` до `35`. Значение по умолчанию — `7`.

      Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

    1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/Cluster/update.md#yandex.cloud.operation.Operation).

- gRPC API {#grpc-api}

  1. [Получите IAM-токен для аутентификации в API](../api-ref/authentication.md) и поместите токен в переменную среды окружения:

      ```bash
      export IAM_TOKEN="<IAM-токен>"
      ```

  1. Клонируйте репозиторий [cloudapi](https://github.com/yandex-cloud/cloudapi):
     
     ```bash
     cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
     ```
     
     Далее предполагается, что содержимое репозитория находится в директории `~/cloudapi/`.
  
  1. Воспользуйтесь вызовом [ClusterService.Update](../api-ref/grpc/Cluster/update.md) и выполните запрос, например с помощью [gRPCurl](https://github.com/fullstorydev/grpcurl):

      {% note warning %}
      
      Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре `update_mask` (в виде массива строк `paths[]`).
      
      {% cut "Формат перечисления настроек" %}
      
      ```yaml
      "update_mask": {
          "paths": [
              "<настройка_1>",
              "<настройка_2>",
              ...
              "<настройка_N>"
          ]
      }
      ```
      
      {% endcut %}
      
      {% endnote %}

      ```bash
      grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d '{
                "cluster_id": "<идентификатор_кластера>",
                "update_mask": {
                  "paths": [
                    "config_spec.backup_retain_period_days"
                  ]
                },
                "config_spec": {
                  "backup_retain_period_days": <время_хранения_резервных_копий_в_днях>
                }
              }' \
          mdb.api.cloud.yandex.net:443 \
          yandex.cloud.mdb.mongodb.v1.ClusterService.Update
      ```

      Где:

      * `update_mask` — перечень изменяемых параметров в виде массива строк `paths[]`.

          В данном случае передается только один параметр.

      * `config_spec.backup_retain_period_days` — срок хранения автоматических резервных копий в днях.

          Допустимые значения — от `7` до `35`. Значение по умолчанию — `7`.

      Идентификатор кластера можно запросить со [списком кластеров в каталоге](cluster-list.md#list-clusters).

  1. Убедитесь, что запрос был выполнен успешно, изучив [ответ сервера](../api-ref/grpc/Cluster/update.md#yandex.cloud.mongodb.v1.Cluster).

{% endlist %}         

## Примеры {#examples}

Создайте новый кластер Yandex StoreDoc из резервной копии с тестовыми характеристиками:


* Резервная копия для восстановления: `c9qlk4v13uq7********:...`.
* Момент времени, на который нужно восстановить: `1597060810` (`2020-08-10 12:00:10`).
* Версия: `6.0`.
* Имя нового кластера: `mynewmg`.
* Окружение: `PRODUCTION`.
* Сеть: `default`.
* Один хост класса `s2.micro` в зоне доступности `ru-central1-a` и в подсети `b0rcctk2rvtr********`.
* Хранилище на сетевых SSD-дисках (`network-ssd`) размером 20 ГБ.     
* С базами данных и пользователями, которые существовали в кластере на момент восстановления.


{% list tabs group=instructions %}

- CLI {#cli}

  Выполните следующую команду:

  
  ```bash
  yc managed-mongodb cluster restore \
     --backup-id c9qlk4v13uq7********:... \
     --recovery-target-timestamp 1597060810 \
     --mongodb-version 6.0 \
     --name mynewmg \
     --environment PRODUCTION \
     --network-name default \
     --host zone-id=ru-central1-a,subnet-id=b0rcctk2rvtr******** \
     --mongod-resource-preset s2.micro \
     --mongod-disk-size 20 \
     --mongod-disk-type network-ssd
  ```


{% endlist %}