ElasticsearchのデータをバックアップするSnapshot機能
Elasticsearchをアンインストールする前にデータをエクスポートする方法を調査しているときの覚書。
環境: CentOS Steam 9, Elasticsearch 8.11.3, Kibana 8.11.3
1.ElasticsearchのSnapshot機能を理解する。
ElasticsearchのデータをバックアップするにはSnapshotの機能を使う。
またコマンドラインで実行できるelasticdumpというツールがある。
今回はSnapshotの機能を使ってみる。
大人しく公式サイトのドキュメントを読む。
Snapshotを作成するには2ステップ必要。
- リポジトリを登録(Snapshotの保存場所を登録)
- Snapshotを作成
dataディレクトリごとコピーしてもバックアップにはならないと書いてある。
2.リポジトリを登録する。
バックアップする場所を作ってElasticsearchが書き込めるようにする。
# mkdir /home/backups
# chown elasticsearch. /home/backups/
KibanaにログインしてDev Toolsからコマンド発行。
PUT _snapshot/test1{"type": "fs","settings": {"location": "/home/backups/test1"}}
エラー。
{"error": {"root_cause": [{"type": "repository_exception","reason": "[test1] location [/home/backups/test1] doesn't match any of the locations specified by path.repo because this setting is empty"}],"type": "repository_exception","reason": "[test1] failed to create repository","caused_by": {"type": "repository_exception","reason": "[test1] location [/home/backups/test1] doesn't match any of the locations specified by path.repo because this setting is empty"}},"status": 500}
path.repoを設定しないといけないらしい。
設定追加する。
# less /etc/elasticsearch/elasticsearch.yml
path.repo: /home/backups
Elasticsearch再起動。
# systemctl restart elasticsearch
もう一度Dev Toolsからコマンド発行。
PUT _snapshot/test1{"type": "fs","settings": {"location": "/home/backups/test1"}}
acknowledged(認められた)と返ってきた。
確認。
# ls /home/backups/
ディレクトリが作られている。
2.Snapshotを作成する。
Dev ToolsからSnapshot作成。
PUT _snapshot/test1/231221
ディレクトリ確認
# ls /home/backups/test1/
Dev Toolsからリポジトリの一覧、snapshotの一覧を確認。
参考: Get snapshot repository API | Elasticsearch Guide [8.11] | Elastic
GET _snapshot/test1/
GET _snapshot/test1/*
3.Snapshotを削除する。
API経由でリクエストを送信するだけ。
参考: Delete snapshot API | Elasticsearch Guide [8.11] | Elastic
DELETE _snapshot/test1/231221
確認。
GET _snapshot/test1/*
だんだんElasticsearchに慣れてきた。