Управление резервными копиями в Managed Service for OpenSearch
Managed Service for OpenSearch позволяет создавать резервные копии индексов как средствами Yandex Cloud, так и с помощью механизма снапшотов OpenSearch. Подробнее о механизме снапшотов см. в документации OpenSearch
Резервное копирование средствами Yandex Cloud
Вы можете создавать резервные копии и восстанавливать кластеры из имеющихся резервных копий.
Также Managed Service for OpenSearch каждый час создает автоматическую резервную копию.
Получить список резервных копий
Вы можете получить список резервных копий, которые были созданы за последние 14 дней.
Чтобы получить список резервных копий кластера:
- Перейдите на страницу каталога и выберите сервис Managed Service for OpenSearch.
- Нажмите на имя нужного кластера и выберите вкладку
Резервные копии.
Чтобы получить список всех резервных копий в каталоге:
- Перейдите на страницу каталога и выберите сервис Managed Service for OpenSearch.
- Выберите вкладку
Резервные копии.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список всех резервных копий в каталоге, выполните команду:
yc managed-opensearch backup list
Результат:
+----------------------+---------------------+-------------------+---------------------+
| ID | CREATED AT | SOURCE CLUSTER ID | STARTED AT |
+----------------------+---------------------+-------------------+---------------------+
| c9qlk4v13uq7******** | 2024-01-09 14:38:34 | c9qpm4i******** | 2024-01-09 14:38:28 |
| c9qpm90p3pcg******** | 2024-01-09 13:38:31 | c9qpm4i******** | 2024-01-09 13:38:28 |
+----------------------+---------------------+-------------------+---------------------+
Если вы хотите ограничить список резервных копий, который выводится после запуска команды, передайте в команде флаг --limit <количество_записей>
. Например, если вывод команды yc managed-opensearch backup list
занимает несколько экранов, выполните команду yc managed-opensearch backup list --limit 5
. Тогда вывод будет содержать список из последних пяти резервных копий.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Чтобы получить список резервных копий кластера:
-
Воспользуйтесь методом Cluster.ListBackups и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-opensearch/v1/clusters/<идентификатор_кластера>/backups'
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
-
Чтобы получить список резервных копий всех кластеров в каталоге:
-
Воспользуйтесь методом Backup.List и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-opensearch/v1/backups' \ --url-query folderId=<идентификатор_каталога>
Идентификатор каталога можно запросить со списком каталогов в облаке.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Чтобы получить список резервных копий кластера:
-
Воспользуйтесь вызовом ClusterService.ListBackups и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.opensearch.v1.ClusterService.ListBackups
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
-
Чтобы получить список резервных копий всех кластеров в каталоге:
-
Воспользуйтесь вызовом BackupService.List и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/backup_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "folder_id": "<идентификатор_каталога>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.opensearch.v1.BackupService.List
Идентификатор каталога можно запросить со списком каталогов в облаке.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получить информацию о резервной копии
Чтобы получить информацию о резервной копии существующего кластера:
- Перейдите на страницу каталога и выберите сервис Managed Service for OpenSearch.
- Нажмите на имя нужного кластера и выберите вкладку
Резервные копии.
Чтобы получить информацию о резервной копии удаленного ранее кластера:
- Перейдите на страницу каталога и выберите сервис Managed Service for OpenSearch.
- Выберите вкладку
Резервные копии.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить информацию о резервной копии кластера:
-
Получите идентификатор резервной копии вместе со списком всех резервных копий в каталоге:
yc managed-opensearch backup list
Идентификатор указан в столбце
ID
в выводе команды. -
Получите информацию о нужной резервной копии:
yc managed-opensearch backup get <идентификатор_резервной_копии>
Пример результата команды:
id: c9qlk4v13uq7******** folder_id: b1g86q4m5vej******** source_cluster_id: c9qpm4i******** started_at: "2024-01-09T10:38:28.683Z" created_at: "2024-01-09T10:38:31.685Z" indices: - .mdb-sli - .opendistro_security - .kibana_1 - .opendistro-job-scheduler-lock - .opensearch-observability - .opendistro-ism-config opensearch_version: 2.8.0 indices_total: "6"
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Backup.Get и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-opensearch/v1/backups/<идентификатор_резервной_копии>'
Идентификатор резервной копии можно запросить со списком резервных копий.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом BackupService.Get и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/backup_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "backup_id": "<идентификатор_резервной_копии>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.opensearch.v1.BackupService.Get
Идентификатор резервной копии можно запросить со списком резервных копий.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать резервную копию
- Перейдите на страницу каталога и выберите сервис Managed Service for OpenSearch.
- Нажмите на имя нужного кластера и выберите вкладку
Резервные копии. - Нажмите кнопку
Создать резервную копию.
Сервис начнет создавать резервную копию без дополнительного подтверждения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать резервную копию данных кластера, выполните команду:
yc managed-opensearch cluster backup <имя_или_идентификатор_кластера>
Имя и идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.Backup и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-opensearch/v1/clusters/<идентификатор_кластера>:backup'
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.Backup и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.opensearch.v1.ClusterService.Backup
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Во время создания резервной копии производительность кластера может снижаться.
Восстановить кластер из резервной копии
Восстанавливая кластер из резервной копии, вы создаете новый кластер с данными из резервной копии. Если в каталоге не хватает ресурсов для создания такого кластера, восстановиться из резервной копии не получится.
Для нового кластера необходимо задать все параметры, обязательные при его создании.
Перед началом работы убедитесь, что вашему аккаунту в Yandex Cloud назначена роль iam.serviceAccounts.user или выше. Она нужна, если вы восстанавливаете из резервной копии кластер с привязкой к сервисному аккаунту.
Чтобы восстановить из резервной копии существующий кластер:
- Перейдите на страницу каталога и выберите сервис Managed Service for OpenSearch.
- Нажмите на имя нужного кластера и выберите вкладку
Резервные копии. - Нажмите на значок
для нужной резервной копии, затем нажмите Восстановить кластер. - Задайте настройки нового кластера.
- Нажмите кнопку Восстановить кластер.
Чтобы восстановить из резервной копии удаленный ранее кластер:
- Перейдите на страницу каталога и выберите сервис Managed Service for OpenSearch.
- Выберите вкладку
Резервные копии. - Найдите нужную резервную копию по времени создания и идентификатору кластера. В колонке Идентификатор содержатся идентификаторы в формате
<идентификатор_кластера>:<идентификатор_резервной_копии>
. - Нажмите на значок
для нужной резервной копии, затем нажмите Восстановить кластер. - Задайте настройки нового кластера.
- Нажмите кнопку Восстановить кластер.
Managed Service for OpenSearch запустит операцию создания кластера из резервной копии.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы восстановить кластер из резервной копии:
-
Получите идентификатор резервной копии вместе со списком всех резервных копий в каталоге:
yc managed-opensearch backup list
Результат:
+----------------------+---------------------+-------------------+---------------------+ | ID | CREATED AT | SOURCE CLUSTER ID | STARTED AT | +----------------------+---------------------+-------------------+---------------------+ | c9qlk4v13uq7******** | 2024-01-09 14:38:34 | c9qpm4i******** | 2024-01-09 14:38:28 | | ... | +----------------------+---------------------+-------------------+---------------------+
Идентификатор резервной копии указан в столбце
ID
. Время завершения создания резервной копии указано в столбцеCREATED AT
в форматеyyyy-mm-dd hh:mm:ss
. -
Запросите создание кластера из резервной копии:
yc managed-opensearch cluster restore --backup-id <идентификатор_резервной_копии>
В команде также можно передать параметры, которые задаются при создании кластера. Описание таких параметров читайте в разделе Создание кластера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Создайте файл
body.json
и добавьте в него следующее содержимое:{ "backupId": "<идентификатор_резервной_копии>", "folderId": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "networkId": "<идентификатор_сети>", "configSpec": { "version": "<версия_OpenSearch>", "adminPassword": "<пароль_пользователя-администратора>", "opensearchSpec": { "nodeGroups": [ { "name": "<имя_группы_хостов_OpenSearch>", "resources": { "resourcePresetId": "<класс_хостов>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" }, "roles": ["<роль_1>","<роль_2>"], "hostsCount": "<число_хостов>", "zoneIds": [ "<зона_доступности_1>", "<зона_доступности_2>", "<зона_доступности_3>" ], "subnetIds": [ "<идентификатор_подсети_1>", "<идентификатор_подсети_2>", "<идентификатор_подсети_3>" ] } ] }, "dashboardsSpec": { "nodeGroups": [ { "name": "<имя_группы_хостов_Dashboards>", "resources": { "resourcePresetId": "<класс_хостов>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" }, "hostsCount": "<число_хостов>", "zoneIds": [ "<зона_доступности_1>", "<зона_доступности_2>", "<зона_доступности_3>" ], "subnetIds": [ "<идентификатор_подсети_1>", "<идентификатор_подсети_2>", "<идентификатор_подсети_3>" ] } ] } } }
Где:
-
backupId
— идентификатор резервной копии, из которой восстанавливаете кластер. Идентификатор можно запросить со списком резервных копий. -
folderId
— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name
— имя кластера. -
environment
— окружение кластера:PRODUCTION
илиPRESTABLE
. -
networkId
— идентификатор сети, в которой будет размещен кластер. -
configSpec
— настройки кластера:-
version
— версия OpenSearch. -
adminPassword
— пароль пользователяadmin
. -
opensearchSpec
— настройки групп хостовOpenSearch
. Содержат массив элементовnodeGroups
. Каждый элемент соответствует отдельной группе хостов и имеет следующую структуру:-
name
— имя группы хостов. -
resources
— ресурсы кластера:resourcePresetId
— класс хостов;diskSize
— размер диска в байтах;diskTypeId
— тип диска.
-
roles
— список ролей хостов. Кластер должен содержать хотя бы по одной группе хостовDATA
иMANAGER
. Это может быть одна группа, на которую назначены две роли, или несколько групп с разными ролями. -
hostsCount
— количество хостов в группе. Миниальное число хостовDATA
— один, хостовMANAGER
— три. -
zoneIds
— список зон доступности, где размещаются хосты кластера. -
subnetIds
— список идентификаторов подсетей.
-
-
dashboardsSpec
— настройки групп хостовDashboards
. Содержат массив элементовnodeGroups
, структура которого совпадает со структуройopensearchSpec.nodeGroups
. Исключение — параметрroles
: у хостовDashboards
есть только одна рольDASHBOARDS
, поэтому ее не нужно указывать.
-
-
-
Воспользуйтесь методом Cluster.Restore и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-opensearch/v1/clusters:restore' \ --data "@body.json"
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Создайте файл
body.json
и добавьте в него следующее содержимое:{ "backup_id": "<идентификатор_резервной_копии>", "folder_id": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "network_id": "<идентификатор_сети>", "config_spec": { "version": "<версия_OpenSearch>", "admin_password": "<пароль_пользователя-администратора>", "opensearch_spec": { "node_groups": [ { "name": "<имя_группы_хостов_OpenSearch>", "resources": { "resource_preset_id": "<класс_хостов>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" }, "roles": ["<роль_1>","<роль_2>"], "hosts_count": "<число_хостов>", "zone_ids": [ "<зона_доступности_1>", "<зона_доступности_2>", "<зона_доступности_3>" ], "subnet_ids": [ "<идентификатор_подсети_1>", "<идентификатор_подсети_2>", "<идентификатор_подсети_3>" ] } ] }, "dashboards_spec": { "node_groups": [ { "name": "<имя_группы_хостов_Dashboards>", "resources": { "resource_preset_id": "<класс_хостов>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" }, "hosts_count": "<число_хостов>", "zone_ids": [ "<зона_доступности_1>", "<зона_доступности_2>", "<зона_доступности_3>" ], "subnet_ids": [ "<идентификатор_подсети_1>", "<идентификатор_подсети_2>", "<идентификатор_подсети_3>" ] } ] } } }
Где:
-
backup_id
— идентификатор резервной копии, из которой восстанавливаете кластер. Идентификатор можно запросить со списком резервных копий. -
folder_id
— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name
— имя кластера. -
environment
— окружение кластера:PRODUCTION
илиPRESTABLE
. -
network_id
— идентификатор сети, в которой будет размещен кластер. -
config_spec
— настройки кластера:-
version
— версия OpenSearch. -
admin_password
— пароль пользователяadmin
. -
opensearch_spec
— настройки групп хостовOpenSearch
. Содержат массив элементовnodeGroups
. Каждый элемент соответствует отдельной группе хостов и имеет следующую структуру:-
name
— имя группы хостов. -
resources
— ресурсы кластера:resource_preset_id
— класс хостов;disk_size
— размер диска в байтах;disk_type_id
— тип диска.
-
roles
— список ролей хостов. Кластер должен содержать хотя бы по одной группе хостовDATA
иMANAGER
. Это может быть одна группа, на которую назначены две роли, или несколько групп с разными ролями. -
hosts_count
— количество хостов в группе. Миниальное число хостовDATA
— один, хостовMANAGER
— три. -
zone_ids
— список зон доступности, где размещаются хосты кластера. -
subnet_ids
— список идентификаторов подсетей.
-
-
dashboards_spec
— настройки групп хостовDashboards
. Содержат массив элементовnode_groups
, структура которого совпадает со структуройopensearch_spec.node_groups
. Исключение — параметрroles
: у хостовDashboards
есть только одна рольDASHBOARDS
, поэтому ее не нужно указывать.
-
-
-
Воспользуйтесь вызовом ClusterService.Restore и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.opensearch.v1.ClusterService.Restore \ < body.json
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Резервное копирование с помощью снапшотов
Для работы со снапшотами используется публичный API OpenSearch
Получить список снапшотов
-
Найдите в списке репозиториев OpenSearch тот, который содержит в себе резервные копии в виде снапшотов:
GET https://admin:<пароль>@<идентификатор_хоста_OpenSearch_с_ролью_DATA>.mdb.yandexcloud.net:9200/_snapshot/_all
Если нужного репозитория нет в списке, подключите его.
-
Получите список снапшотов в репозитории:
GET https://admin:<пароль>@<идентификатор_хоста_OpenSearch_с_ролью_DATA>.mdb.yandexcloud.net:9200/_snapshot/<имя_репозитория>/_all
Каждой резервной копии соответствует один снапшот.
Создать снапшот
-
Найдите в списке репозиториев OpenSearch тот, в котором нужно создать резервную копию в виде снапшота:
GET https://admin:<пароль>@<идентификатор_хоста_OpenSearch_с_ролью_DATA>.mdb.yandexcloud.net:9200/_snapshot/_all
Если нужного репозитория нет в списке, подключите его.
-
Создайте снапшот
нужных данных или целого кластера в выбранном репозитории:PUT https://admin:<пароль>@<идентификатор_хоста_OpenSearch_с_ролью_DATA>.mdb.yandexcloud.net:9200/_snapshot/<имя_репозитория>/<имя_снапшота>
Восстановить кластер из снапшота
Важно
При восстановлении из снапшота версия OpenSearch в кластере должна быть не ниже версии OpenSearch, в которой был сделан снапшот.
-
Создайте новый кластер OpenSearch в нужной конфигурации, но не наполняйте его данными.
При создании кластера выберите:
-
Количество и класс хостов, размер и тип хранилища исходя из размера снапшота и требований к быстродействию.
-
Версию OpenSearch, в которой был создан снапшот, или более новую.
-
-
Закройте открытые индексы с помощью OpenSearch API
:POST: https://admin:<пароль>@<идентификатор_хоста_OpenSearch_с_ролью_DATA>.mdb.yandexcloud.net:9200/<имя_индекса>/_close
Для восстановления всего кластера закройте все открытые индексы. Для восстановления отдельных индексов закройте только их.
-
Получите список резервных копий и найдите нужный снапшот.
-
Запустите операцию восстановления
из нужного снапшота всего кластера или отдельных индексов и потоков данных.