ページの先頭行へ戻る
Enterprise Service Development Platform V1.2.0 運用ガイド(FJCS仕様)
FUJITSU Software

12.8.1 Elasticsearchのリストア

Elasticsearchのスナップショット機能を使用してリストアを行います。

スナップショット機能の詳細はElasticsearchの公式ドキュメントを参照してください。

“Snapshot and Restore”

  1. Kubernetes masterサーバーにログインします。詳細は、「第2章 共通の操作」を参照してください。

  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/<リポジトリ名>/*
  3. 上記で確認した<リポジトリ名>、<スナップショット名>を指定し、以下のコマンドでリストアを実施してください。

    <インデックス名>にはリストアするインデックス名を指定し、リストアを実行します。スナップショットに含まれる全インデックスを対象としてリストアを実行することも可能です。後述の例を参照ください。

    $ 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をリストアする場合は、以下の通りです。

  1. Kubernetes masterサーバーにログインします。詳細は、「第2章 共通の操作」を参照してください。

  2. 'abc'リポジトリとして'def'ディレクトリからリストアを実施する場合、下記のようにリポジトリを作成します。
    $ curl http://`kubectl -n fj-esdp-system get svc | grep 'elasticsearch-master '| awk -F " " '{print $3}'`:9200/_snapshot/abc -X PUT -H 'Content-Type: application/json' \
      -d '{"type": "fs","settings": {"location": "def","compress": true}}'
  3. NFSサーバーにログインし、リストアするスナップショットを含むリポジトリのディレクトリ配下のファイル一式を展開します。

    $ tar tvfz def.tar.gz -C /var/FJSGHD/fj-esdp-system-elasticsnapshot-volume/def
  4. Kubernetes masterサーバーにログインします。詳細は、「第2章 共通の操作」を参照してください。

    • インデックスを指定してリストアする場合

      展開したリポジトリ名、スナップショット名、インデックス名を指定してリストアを行います。
      $ curl http://`kubectl -n fj-esdp-system get svc | grep 'elasticsearch-master '| awk -F " " '{print $3}'`:9200/_snapshot/abc/ghi/_restore?wait_for_completion=true \
        -X POST -H 'Content-Type: application/json' -d '{"indices": "<インデックス名>"}'
    • 全インデックスをリストアする場合

      バックアップ時に全インデックスをバックアップしている必要があります。

      全インデックスリストアのためにインデックスをクローズします

      $ curl -X POST http://`kubectl -n fj-esdp-system get svc | grep 'elasticsearch-master '| awk -F " " '{print $3}'`:9200/*/_close

      kibanaのインデックスが存在するか確認します。存在しない場合は、no such indexのメッセージが出力され、存在する場合はインデックスの情報が出力されます。

      $ curl -X GET http://`kubectl -n fj-esdp-system get svc | grep 'elasticsearch-master '| awk -F " " '{print $3}'`:9200/.kibana

      以下のコマンドを実行して、全インデックスをリストアします。以下のコマンドはkibanaのインデックスが存在する場合の例です。存在しない場合は、indicesに"*"を指定します。

      $ 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": "*,-.kibana_1"
          }'

      クローズしたインデックスをもとに戻します。

      $ curl -X POST http://`kubectl -n fj-esdp-system get svc | grep 'elasticsearch-master '| awk -F " " '{print $3}'`:9200/*/_open

      kibanaのインデックスを復元します。

      $ curl http://`kubectl -n fj-esdp-system get svc | grep 'elasticsearch-master '| awk -F " " '{print $3}'`:9200/_reindex \
          -X POST \
          -H 'Content-Type: application/json' \
          -d '{
              "source": {
                  "index": "backup.kibana"
              },
              "dest": {
                  "index": ".kibana"
              }
          }'