elasticsearch索引備份恢復、跨叢集遷移
參考連結:
https://www.elastic.co/guide/en/elasticsearch/guide/current/backing-up-your-cluster.html#
坑或者是注意事項
indices屬於某種node.box_type,恢復索引的目標機群需要有這種type的節點,不然會恢復不了。
indices需要open。
步驟:
1、建立共享檔案目錄,所有es節點都能讀寫訪問,可以通過nfs的方式。
/etc/exports檔案
/data0/elasticsearch-backup *(rw)
(在這裡假設目錄為/data0/elasticsearch-backup)
2、所有節點修改配置elasticsearch.yml,然後重啟節點:
path.repo: /data0/elasticsearch-backup
3、建立snapshot共享倉庫
max_snapshot_bytes_per_sec、max_restore_bytes_per_sec預設20mb。
curl -XPUT localhost:9200/_snapshot/backup_test -d '
{
"type": "fs",
"settings": {
"location": "/data/disk/nvme0n1p1/backup",
"max_snapshot_bytes_per_sec" : "50mb",
"max_restore_bytes_per_sec" : "50mb",
"compress": true
}
}'
4、備份索引資料
快照備份整個機群資料(同一機群注意快照名唯一,snapshot_1)
curl localhost:9200 /_snapshot/backup_test/snapshot_1?wait_for_completion=true
只快照備份某些索引
curl -XPUT localhost:9200/_snapshot/backup_test/snapshot_1?wait_for_completion=true -d '
{
"indices": "index1,index2,index3"
}'
5、檢視備份狀態
curl localhost:9200/_snapshot/backup_test/snapshot_1/_status?pretty
6、恢復快照資料,如果目標叢集已經存在同名索引,需要先close索引
恢復某個快照所有資料
curl -XPOST localhost:9200/_snapshot/backup_test/snapshot_1/_restore?wait_for_completion=true
恢復某個快照部分索引資料
curl -XPOST localhost:9200/_snapshot/backup_test/snapshot_1/_restore?wait_for_completion=true -d '
{
"indices": "index1,index2"
}
'
7、輔助性操作
檢視快照狀態
curl localhost:9200/_snapshot/backup_test/snapshot_1/_status?pretty
檢視恢復狀態
curl localhost:9200/index1/_recovery?pretty
刪除快照
curl -XDELETE localhost:9200/_snapshot/backup_test/snapshot_1