ElasticSearch-インデックスの移行
O.はじめに
ESクラスターからデータを移行するための2つの優れた方法を紹介します。以下は、実際に検証された2つの方法の詳細な説明です。
方法1
、移行にはオープンソースツールelasticdumpを使用します。利点は、操作が非常に簡単で、クラスターを再起動する必要がないことです。欠点は、送信が遅く、大量のデータの送信に適していないことです。このプロセスでは、httpポートはクラスター間で使用され、クラスターの帯域幅を占有します。主にまだ遅い。
方法2
、移行のためにファイルストレージへのES独自のスナップショットバックアップを使用します。利点は、ディスクに書き込まれ、新しいクラスターサーバーにコピーされ、スナップショットから復元されるため、速度が速いことです。大量のデータがあるシナリオに適しています
1つは、elasticdumpツールを使用して移行する
0. nodejsをインストールします(すでにインストールされている場合は無視してください)
実施した
yum install -y nodejs
1.nodejsをアップグレードします
実施した
npm install -g n
n latest
2.elasticdumpツールをインストールします
実施した
npm install elasticdump -g
3.指定されたインデックスの設定、マッピング、データを移行します
実施した
elasticdump --input=http://fromhost:9200/indexname --output=http://tohost:9200/indexname --type=settings
elasticdump --input=http://fromhost:9200/indexname --output=http://tohost:9200/indexname --type=mapping
elasticdump --input=http://fromhost:9200/indexname --output=http://tohost:9200/indexname --type=data
2.ES独自のスナップショットバックアップを使用してファイルストレージに移行します
0.ソースESクラスターは共有フォルダーを指定します
/ data / backupsディレクトリが存在し、ElasticStartupユーザーに属していることを確認します
mkdir /data/backups
chown -R elastic:elastic /data/backups
vimマスターノードelasticsearch.yml行を追加
path.repo: ["/data/backups"]
マスターノードを再起動して有効にします
1.ソースESクラスターにリポジトリーを作成します
命令を実行する
curl -XPUT http://fromhost:9200/_snapshot/my_repository -d '{
"type": "fs",
"settings": {
"location": "/data/backups"
}
}'
2.スナップショットを作成します(スナップショットバックアップデータ)
curl -XPUT http://fromhost:9200/_snapshot/my_repository/snapshot_20191114?wait_for_completion=true -d '{
"indices": "indexname"
}'
バックアップが完了すると、/ data / backupsフォルダーにバックアップファイルがあります。
3.ソースESクラスターのスナップショットをターゲットESクラスターのウェアハウスに移動します
/ data / backups / my_backupを新しいesクラスターマシンにコピーします
4.ターゲットESクラスターのリポジトリーを作成します
curl -XPUT http://tohost:9200/_snapshot/my_repository -d '{
"type": "fs",
"settings": {
"location": "/data/backups"
}
}'
5.新しいクラスターのスナップショット情報を表示します
curl -XGET http://tohost:9200/_snapshot/my_repository/_all
6.スナップショットから復元
curl -XPOST http://tohost:9200/_snapshot/my_repository/snapshot_20191114/_restore