Elastic Search バックアップ
ElasticSearch のバックアップとリストア (ELK)
スナップショットを使用した ElasticSearch サーバからのデータ移行は比較的高速です。 まず、サーバのデータのバックアップが作成され、後で復元するためにリポジトリに保存されます。
スナップショット
バックアップが行われるマシンは “ソースマシン” と呼ばれ、復元が行われるマシンは “ターゲットマシン” と呼ばれます。
- ソースマシンにて
1) 設定ファイル “elasticsearch.yml” を編集します。
vi /etc/elasticsearch/elasticsearch.yml
次の行を追加します。
path.repo: /usr/local/var/backups/
2) 設定ファイルに追記したディレクトリを作成します。
mkdir -p /usr/local/var/backups/
3) ディレクトリのパーミッションとユーザを設定します。
chmod 700 /usr/local/var/backups chown elasticsearch:elasticsearch /usr/local/var/backups
4) サービスを再起動します。
/etc/init.d/elasticsearch restart
5) 次のコマンドでバックアップを作成します。
curl -XPUT http://localhost:9200/_snapshot/my_backup -d '{"type": "fs", "settings": {"compress": "true", "location": "/usr/local/var/backups/"}}'
6) 生成されたバックアップをアーカイブファイルにします。
cd /usr/local/var/ tar -zcvf elastic_backup.tar.gz backups/
7) リストアを行うターゲットマシンへ、ソースマシンのバックアップファイルをコピーします。
- ターゲットマシンにて
scp -P 41122 root@<ipOrigen>:/root/elastic_backup.tar.gz /home/user/backup
'scp' コマンドを利用するには、ソースマシンに ssh サーバがインストールされ、ターゲットマシンに ssh クライアントがインストールされている必要があります。
インポートするマシンの ElasticSearch のバージョンがデータのエクスポートをサポートしていることが重要です。上記の例では、ターゲットマシンの ElasticSearch はソースマシンと同じもしくはそれ以上のバージョンである必要があります。そうでなければ、最初に ElasticSearch をアップデートする必要があります。
バックアップのリストア
- ターゲットマシンにて
1) ソースマシンでバックアップを作成するときに行ったのと同じように、設定ファイルの “elasticsearch.yml” を編集します。
vi /etc/elasticsearch/elasticsearch.yml
次の行を追加します。
path.repo: /usr/local/var/backups/
2) 設定ファイルに追記したディレクトリを作成します。
mkdir -p /usr/local/var/backups/
3) ディレクトリのパーミッションとユーザを設定します。
chmod 700 /usr/local/var/backups chown elasticsearch:elasticsearch /usr/local/var/backups
4) サービスを再起動します。
/etc/init.d/elasticsearch restart
5) ソースマシンからコピーしたバックアップを展開します。
tar -xzvf /home/user/backup/elastic_backup.tar.gz -C /usr/local/var/backups
6) スナップショットがある場所でリポジトリを作成します。
curl -X PUT "localhost:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d' { "type": "fs", "settings": { "location": "/usr/local/var/backups" } } '
7) インデックスを閉じます。
curl -XPOST http://localhost:9200/<indexname>-*/_close
アスタリスクは、その名前で始まるすべてのインデックスを示します。
8) バックアップをインポートします。
最初に、バックアップをリポジトリへコピーします。
cp <name of the snapshot.dat> my_backup_location/
大文字を使わずにファイル名を変更します。
mv my_backup_location/<name of snapshot.dat> my_backup_location/snap1
以下が重要です。
curl -X POST "localhost:9200/_snapshot/my_backup/snap1/_restore?wait_for_completion=true"
9) 最後に、インデックスを再度開きます。
curl -XPOST http://localhost:9200/<indexname>-*/_open