Приступим, elasticsearch настройка резервного копирования.
Примеры бэкапа эластика реализованы на системе 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), он должен быть зеленый. И выполнить восстановление из резервной копии.
См. предыдущий раздел.
Пример elasticsearch настройка резервного копирования законченно.