Elasticsearch 快照備份與恢復
修改es配置文件,增加本地保存路徑
path.repo: ["/es_backup/my_backup/"] #如果想保存到多個路徑可以逗號隔開
# 修改完之后,記得重啟Es
# 如果本地沒有該目錄,創建該目錄,目錄權限也要設置正確
創建基於本地的快照倉庫
curl -X PUT "http://localhost:9200/_snapshot/my_backup&pretty" -H 'Content-Type: application/json' -d' { "type": "fs", "settings": { "compress" : "true", "location": "/es_backup/my_backup/" } }'
# 查看倉庫信息
curl -XGET "http://localhost:9200/_snapshot/my_backup?pretty"
# 刪除倉庫
curl -XDELETE 'http://localhost:9200/_snapshot/my_backup'
創建快照
# 創建快照 curl -XPUT ’http://localhost:9200/_snapshot/my_backup/snapshot_2?wait_for_completion=true‘
# 使用當前日期來命名快照,日期格式:snapshot-2018.11.29 curl -X PUT "http://localhost:9200/_snapshot/my_backup/%3Csnapshot-%7Bnow%2Fd%7D%3E"
# 查看索引
curl -XGET 'http://localhost:9200/_cat/indices?v'
# 指定索引創建快照 curl -XPUT 'http://localhost:9200/_snapshot/my_backup/snapshot_1' -H 'Content-Type: application/json' -d '{ "indices": "nginx-ingress-controller-log-2018.11.27,nginx-ingress-controller-log-2018.11.28", "ignore_indices": "missing" }'
# 查看所有快照
curl -XGET "http://localhost:9200/_snapshot/my_backup?pretty"
# 查看指定快照
curl -XGET "localhost:9200/_snapshot/my_backup/_all?pretty"
恢復快照
# 恢復快照(所有索引) curl -XPOST http://localhost:9200/_snapshot/my_backup/snapshot_1/_restore # 恢復快照(指定索引) curl -XPOST "http://localhost:9200/_snapshot/my_backup/snapshot-2018.11.29/_restore?wait_for_completion=true" -H 'Content-Type: application/json' -d' { "indices":"nginx-ingress-controller-log-2018.11.29", "ignore_unavailable":"true" }'
# 注意:恢復快照的時候需要停止要恢復的索引
# 快照恢復前需要關掉索引
curl -XPOST "http://localhost:9200/my_index/_close"
curl -XPOST "http://localhost:9200/customer/_close"
# 開啟索引
curl -XPOST "http://localhost:9200/my_index/_open"
# 查看索引狀態
curl -XGET 'http://localhost:9200/_cat/indices?v'
curl -XGET "http://localhost:9200/_recovery/"
以下是一些常用命令:
# 查看倉庫信息 curl -XGET "localhost:9200/_snapshot/my_backup?pretty" # 查看所有快照 curl -XGET "localhost:9200/_snapshot/my_backup/_all?pretty" # 刪除快照 curl -XDELETE "localhost:9200/_snapshot/my_backup/snapshot_2" # 查看倉庫列表 curl -X GET "localhost:9200/_cat/repositories?v" # 獲取所有已注冊快照倉庫
curl -X GET "localhost:9200/_snapshot/_all?pretty"