Elasticsearchのスナップショット機能を使用してリストアを行います。
スナップショット機能の詳細はElasticsearchの公式ドキュメントを参照してください。
Kubernetes masterサーバにログインします。詳細は、「第2章 共通の操作」を参照してください。
リポジトリの確認
以下のコマンドを実行することで、作成済みのリポジトリ一覧を参照することができます。
curl http://`kubectl -n fj-esdp-system get svc | grep 'elasticsearch-master '| awk -F " " '{print $3}'`:9200/_snapshot/
スナップショットの確認
以下のコマンドを実行することで、作成済みのスナップショット一覧を参照することができます。
また各スナップショットに含まれるインデックス名も確認することができます。
curl http://`kubectl -n fj-esdp-system get svc | grep 'elasticsearch-master '| awk -F " " '{print $3}'`:9200/_snapshot/<リポジトリ名>/*
上記で確認した<リポジトリ名>、<スナップショット名>を指定し、以下のコマンドでリストアを実施してください。
<インデックス名>にはリストアするインデックス名を指定するか、'*'によってスナップショットに含まれる全インデックスを対象としてリストアを実行します。
curl http://`kubectl -n fj-esdp-system get svc | grep 'elasticsearch-master '| awk -F " " '{print $3}'`:9200/_snapshot/<リポジトリ名>/<スナップショット名>/_restore?wait_for_completion=true \ -X POST \ -H 'Content-Type: application/json' \ -d '{ "indices": "<インデックス名>" }'
例として、別のElasticsearchで作成したスナップショット'ghi'を含むリポジトリ'def'内のファイルを圧縮したdef.tar.gzをリストアする場合は、以下の通りです。
Kubernetes masterサーバにログインします。詳細は、「第2章 共通の操作」を参照してください。
# curl http://<Elasticsearch ClasterIP>:9200/_snapshot/abc' -X PUT -H 'Content-Type: application/json' \ -d '{"type": "fs","settings": {"location": "def","compress": true}}'
NFSサーバーにログインし、リストアするスナップショットを含むリポジトリのディレクトリ配下のファイル一式を展開します。
# tar tvfz def.tar.gz -C /var/FJSGHD/fj-esdp-system-elasticsnapshot-volume/def
Kubernetes masterサーバにログインします。詳細は、「第2章 共通の操作」を参照してください。
# curl http://<Elasticsearch ClasterIP>:9200/_snapshot/abc/ghi/_restore?wait_for_completion=true \ -X POST -H 'Content-Type: application/json' -d '{"indices": "<インデックス名>"}'