Снимок OpenSearch - это резервная копия индекса, взятая из работающего кластера. Снимки делаются инкрементально. Это означает, что когда OpenSearch создает снимок индекса, он не копирует данные, которые уже были сохранены в предыдущем снимке индекса (если только они не были изменены). Поэтому рекомендуется делать снимки часто.
Вы можете восстановить снимки в работающем кластере с помощью API восстановления. Снимки могут быть восстановлены только в тех версиях OpenSearch, которые могут читать индексы. Перед восстановлением проверьте совместимость версий. Вы не можете восстановить индекс в кластер, который более чем на одну версию выше версии индекса.
Поддерживаются следующие типы хранилищ:
- Расположение в файловой системе
- Объектное хранилище S3
- HDFS
- Облачные хранилища Azure и Google
Примеры
Пример использования репозитория S3 для OpenSearch:
1 2 3 4 5 6 7 8 9 | PUT _snapshot/backups { "type": "s3", "settings": { "bucket": "opensearch", "endpoint": "10.3.10.10:9000", "protocol": "http" } } |
Также необходимо задать ключ доступа к S3 и секретный ключ в хранилище ключей OpenSearch.
1 2 | bin/opensearch-keystore add s3.client.default.access_key bin/opensearch-keystore add s3.client.default.secret_key |
Создание моментального снимка
Как только репо установлено, сделать снимок - это просто вызов API.
1 | PUT /_snapshot/backup/my_snapshot-01-10-2023 |
Где backup - это имя репо снапшота, а my_snapshot-01-10-2023 - это имя снапшота. В приведенном выше примере будет сделан моментальный снимок всех индексов. Чтобы сделать снимок определенных индексов, укажите имена индексов, для которых вы хотите сделать снимок.
Восстановление моментального снимка
Восстановление из моментального снимка также является вызовом API:
1 2 3 4 5 | POST /_snapshot/backup/my_snapshot-01-10-2023 /_restore { "indices": "index_1,index_2" } |
Это восстановит индекс_1 и индекс_2 из моментального снимка my_snapshot-01-10-2019 в хранилище резервных копий.
Примечания и полезные советы
- Прежде чем делать моментальные снимки, необходимо настроить репозиторий, а также установить плагин репозитория S3, если вы планируете использовать репозиторий с S3 в качестве внутреннего хранилища.
1sudo bin/opensearch-plugin install repository-s3 - Лучше использовать снимки OpenSearch вместо дисковых резервных копий/снапшотов. Для восстановления индекс должен быть закрыт.
- Другой вариант - удалить индекс перед восстановлением. Механизм моментальных снимков и восстановления также можно использовать для копирования данных с одного кластера на другой.
- Если у вас нет хранилища S3, вы можете запустить minio с бэкендом NFS, чтобы создать эквивалент S3 для ваших снимков кластера.
- При повторной попытке выполнить операцию, она будет пытаться сделать снимок только тех шардов, которые потерпели неудачу при первоначальной операции, пока снимок не будет успешным.
- Лучше располагать репозиторий моментальных снимков в локальной сети с OpenSearch или настроить/разработать хранилище для высокой пропускной способности записи, чтобы не иметь дело с частичными снимками.
- Операция моментального снимка завершится неудачей, если отсутствует индекс. Установка опции ignore_unavailable в true приведет к тому, что несуществующие индексы будут игнорироваться во время работы со снапшотом.
- Если вы используете какой-либо инструмент безопасности с открытым исходным кодом, например SearchGuard, вам нужно будет настроить параметры восстановления снимков OpenSearch на кластере, прежде чем вы сможете восстановить любой снимок.
В файле opensearch.yml:
1searchguard.enable_snapshot_restore_privilege: true