Elasticsearch 5.4でIndexのSnapshotを取得してバックアップ・リストアをする
Pocket

Elasticsearchでは、Snapshotという機能を使うことでIndexのバックアップを取得することができるらしい。
別ディスクにオンタイムで取得できるらしく、使い勝手はよさそう。

1.Snapshot用リポジトリの作成

Snapshotを取得するにあたり、事前にElasticsearch側にSnapshot用のリポジトリを作成する必要がある(取得対象となるリポジトリとは別)。
Snapshotの保存先ディレクトリについても作成する必要があるので、まず最初にSnapshot用のディレクトリを作成する。

sudo mkdir -p /path/to/snapshot
sudo chown elasticsearch:elasticsearch /path/to/snapshot

 

ディレクトリを作成したら、Elasticsearchの設定ファイル(/etc/elasticsearch/elasticsearch.yml)に以下のように追記をする。

path.repo: ["/path/to/snapshot"]

 

追記をしたらElasticsearchを再起動し、以下のコマンドを実行してAPIからリポジトリ登録を行う。

curl -XPUT 'http://localhost:9200/_snapshot/リポジトリ名' -d '{
    "type": "fs",
    "settings": {
        "location": "/path/to/snapshot",
        "compress": true
    }
}'

 

これで、Snapshot用のリポジトリが作成できた。

Sponsored Links

2.Snapshotの取得・確認

リポジトリの作成ができたら、次はSnapshotを実際に取得してみよう。
Snapshotは、以下のようなリクエストをPOSTすることで、取得できる。

curl -X PUT 'localhost:9200/_snapshot/<Snapshot用リポジトリ名>/Snapshot名?pretty&wait_for_completion=true' -d '{
    "indices": "Snapshot取得対象INDEX名(ワイルドカード使用可)",
    "ignore_unavailable": true,
    "include_global_state": false
}'

 

取得したSnapshotのサイズ等を調べる場合は、以下のコマンドでSnapshotの一覧が確認できるのでこれを使うといい。

curl -X GET 'http://localhost:9200/_cat/snapshots/スナップショットリポジトリ名?v&s=id'

 

3.Snapshotからのリストア

Snapshotからリストアする場合は、以下のようなコマンドでリクエストを投げる。

curl -XPOST "http://localhost:9200/_snapshot/<Snapshotリポジトリ>/<Snapshot名>/_restore" -d '{"indices": "<INDEX名>"}'

 

【参考】

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*