elasticsearch настройка резервного копирования

Дата | 15.03.2017

Примеры бэкапа эластика реализованы на системе FreeBSD 10.
Версии софта.

# pkg version | grep "ela"
elasticsearch2-2.4.2               =
py27-elasticsearch-curator-py-3.5.1 =
py27-elasticsearch2-py-2.4.1       ?

Для настройки бекапа нужно выполнить несколько шагов.

1. Добавить в конфиг /usr/local/etc/elasticsearch/elasticsearch.yml новое хранилище, например:

path.repo: ["/mnt/b2b/backup/elasticsearch"]

2. Зарегистрировать хранилище в Elasticsearch. Где «backup» — произвольное название хранилища (их может быть несколько).

curl -XPUT 'http://localhost:9200/_snapshot/backup?pretty=true' -d '{"type":"fs","settings":{"compress":true,"location":"/mnt/b2b/backup/elasticsearch"}}'

3. Для запуска резервного копирования по расписанию добавить sh-файл в crontab. Где «new_test» — название индекса, «backup» — название хранилища.

#!/bin/sh
DT=`date +"%Y%m%d"`
/usr/local/bin/curl -XPUT http://localhost:9200/_snapshot/backup/snapshot_$DT?wait_forcompletion=false -d '{"indices":"new_test"}'
exit 1

4. Проверить создание снапшота. «test_snapshot» — произвольное название снапшота.

# curl -XPUT http://localhost:9200/_snapshot/backup/test_snapshot?wait_forcompletion=false -d '{"indices":"new_test"}'

Проверить статус снапшота после создания

# curl -XGET 'http://localhost:9200/_snapshot/backup/test_snapshot/_status?pretty=true'

Восстановление из резервной копии

Просмотр всех существующих копий.

# curl -XGET 'http://localhost:9200/_snapshot/_all?pretty=true'

Для запуска восстановления нужно закрыть индекс, запустить процесс восстановления, открыть индекс.

# curl -XPOST 'localhost:9200/new_test/_close'
# curl -XPOST 'http://localhost:9200/_snapshot/backup/snapshot_20160414/_restore'
# curl -XPOST 'localhost:9200/new_test/_open'

Действия при возникновении нештатной ситуации
В случае повреждения шард индекс может иметь статус «red». В таком случае elasticsearch может не отвечать на запросы из-за высокой загрузки.

Проверить состояние индекса

# curl -XGET 'http://localhost:9200/_cat/indices?v'

Можно попытаться закрыть проблемный индекс и попытаться его восстановить (_close и _restore).
Если это не получается сделать, то нужно:
1. остановить сервис elasticsearch;
2. физически удалить/переместить директорию с индексом;
3. создать новый индекс;
4. выполнить восстановление.

Останови сервис сервис.

# /usr/local/etc/rc.d/elasticsearch stop

Найти директорию где хранится БД.

# egrep -v '^$|#|;' /usr/local/etc/elasticsearch/elasticsearch.yml | grep data

Обычно это /var/db/elasticsearch.

Переместить содержимое /var/db/elasticsearch.
Запустим сервис.

# /usr/local/etc/rc.d/elasticsearch sart

Создать новый индекс с таким же названием и параметрами. Можно с помощью команды

# /usr/local/www/test.local/yii elasticsearch/create-index new_test

Где «new_test» — название нового индекса. Название используемого B2B индекса можно посмотреть в конфиге # /usr/local/www/test.local/components/kernel/provider/source/testtt/config/common.yml параметр «indexName».

Проверить статус индекса (/_cat/indices?v), он должен быть зеленый. И выполнить восстановление из резервной копии.
См. предыдущий раздел.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *