elasticsearch5使用snapshot接口備份索引


數據備份是一個必須要考慮的問題,官網提供了 snapshot 接口來備份和恢復數據。

先來看看官方說明

如果ES是集群,那么需要使用共享存儲,支持的存儲有:
a、shared file system
b、S3
c、HDFS

我使用的是第一種,NFS共享文件系統。這里要說一下權限問題,ES一般是使用 elasticsearch 用戶啟動的,要保證共享目錄對 elasticsearch 用戶有讀寫權限,要不然創建倉庫和快照的時候會報訪問拒絕500錯誤。

在nfs-server上導出共享目錄的權限配置,這里將所有連接用戶都壓縮為root權限:

# vim /etc/exports
/data02/es 192.168.3.56(rw,sync,all_squash,anonuid=0,anongid=0,no_subtree_check) 192.168.3.57(rw,sync,all_squash,anonuid=0,anongid=0,no_subtree_check) 192.168.3.49(rw,sync,all_squash,anonuid=0,anongid=0,no_subtree_check)

# /etc/init.d/nfs-kernel-server reload

1、創建掛載目錄,並給予權限

# mkidr -pv /nh/esbk/my_backup
# chmod 755 /nh/esbk/
# chown elasticsearch.elasticsearch /nh/esbk/

2、掛載共享目錄

# vim /etc/fstab
192.168.3.97:/data02/es   /nh/esbk/my_backup    nfs    defaults    0 0

# mount -a
# df -hT

3、修改ES的配置文件,添加倉庫路徑,重啟服務

# vim /etc/elasticsearch/elasticsearch.yml
path.repo: ["/nh/esbk"]

# /etc/init.d/elasticsearch restart

4、注冊快照倉庫到ES,這里是在 kibana 的 Dev Tools 上操作的,也可以使用 curl 發起請求。

Before any snapshot or restore operation can be performed, a snapshot repository should be registered in Elasticsearch. 

After all nodes are restarted, the following command can be used to register the shared file system repository with the name my_backup.
PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
        "compress": true,
        "location": "/nh/esbk/my_backup"
  }
}

5、查看倉庫信息

GET /_snapshot/my_backup

# curl -u elastic -XGET 'http://192.168.3.49:9200/_snapshot/my_backup?pretty'
{
  "my_backup" : {
    "type" : "fs",
    "settings" : {
      "compress" : "true",
      "location" : "/nh/esbk/my_backup"
    }
  }
}

6、創建快照

A repository can contain multiple snapshots of the same cluster. 
Snapshots are identified by unique names within the cluster. 
A snapshot with the name snapshot_1 in the repository my_backup can be created by executing the following command.
PUT /_snapshot/my_backup/snapshot_1

這里發起請求后,會立馬返回 true,並在后台執行操作。
如果想等待執行完成之后再返回,可以加一個參數:

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true

7、查看剛才創建的快照的信息

Once a snapshot is created information about this snapshot can be obtained using the following command.
GET /_snapshot/my_backup/snapshot_1

{
  "snapshots": [
    {
      "snapshot": "snapshot_1",
      "uuid": "xSMRNVMIRHmx_qlhX5fqfg",
      "version_id": 5040199,
      "version": "5.4.1",
      "indices": [
        ".monitoring-kibana-2-2017.07.05",
        ".monitoring-kibana-2-2017.07.11",
        "zixun-nginx-access-2017.07.12",
        ".monitoring-logstash-2-2017.07.07",
        ".monitoring-kibana-2-2017.07.07",
        "filebeat-2017.07.07",
        ".watcher-history-3-2017.07.04",
        ".watcher-history-3-2017.07.07",
        ".monitoring-es-2-2017.07.05",
        ".kibana",
        ".monitoring-data-2",
        ".watcher-history-3-2017.06.27",
        ".monitoring-logstash-2-2017.07.10",
        ".monitoring-kibana-2-2017.07.10",
        ".monitoring-es-2-2017.07.08",
        ".monitoring-logstash-2-2017.07.12",
        ".monitoring-es-2-2017.07.10",
        ".watcher-history-3-2017.07.06",
        ".monitoring-kibana-2-2017.07.09",
        ".watcher-history-3-2017.07.12",
        ".watcher-history-3-2017.07.03",
        ".monitoring-alerts-2",
        ".monitoring-logstash-2-2017.07.08",
        ".watcher-history-3-2017.07.01",
        ".watcher-history-3-2017.07.11",
        ".watcher-history-3-2017.07.05",
        ".watcher-history-3-2017.06.29",
        ".watcher-history-3-2017.06.28",
        ".monitoring-kibana-2-2017.07.08",
        ".security",
        ".monitoring-logstash-2-2017.07.11",
        ".monitoring-es-2-2017.07.11",
        ".watcher-history-3-2017.06.30",
        ".triggered_watches",
        ".watcher-history-3-2017.07.08",
        ".monitoring-es-2-2017.07.12",
        ".watcher-history-3-2017.07.09",
        ".monitoring-es-2-2017.07.09",
        ".monitoring-kibana-2-2017.07.12",
        ".monitoring-kibana-2-2017.07.06",
        ".watcher-history-3-2017.07.10",
        "test",
        ".monitoring-es-2-2017.07.07",
        ".monitoring-logstash-2-2017.07.09",
        ".watches",
        ".monitoring-es-2-2017.07.06",
        ".watcher-history-3-2017.07.02"
      ],
      "state": "SUCCESS",
      "start_time": "2017-07-12T04:19:08.246Z",
      "start_time_in_millis": 1499833148246,
      "end_time": "2017-07-12T04:20:04.717Z",
      "end_time_in_millis": 1499833204717,
      "duration_in_millis": 56471,
      "failures": [],
      "shards": {
        "total": 59,
        "failed": 0,
        "successful": 59
      }
    }
  ]
}

列出一個倉庫里的所有快照

All snapshots currently stored in the repository can be listed using the following command:
GET /_snapshot/my_backup/_all

8、刪除一個快照

A snapshot can be deleted from the repository using the following command:
DELETE /_snapshot/my_backup/snapshot_1

9、刪除一個倉庫

A repository can be deleted using the following command:
DELETE /_snapshot/my_backup

10、恢復一個快照(支持恢復部分數據以及恢復過程中修改索引信息,具體細節參考官方文檔)

POST /_snapshot/my_backup/snapshot_1/_restore

11、查看快照狀態信息(比如正在創建或者創建完成等)

a、列出所有當前正在運行的快照以及顯示他們的詳細狀態信息

A list of currently running snapshots with their detailed status information can be obtained using the following command.
GET /_snapshot/_status

b、查看指定倉庫的正在運行的快照以及顯示他們的詳細狀態信息

GET /_snapshot/my_backup/_status

c、查看指定快照的詳細狀態信息即使不是正在運行

If both repository name and snapshot id are specified, this command will return detailed status information for the given snapshot even if it’s not currently running:
GET /_snapshot/my_backup/snapshot_1/_status

d、支持同時指定多個快照ID查看多個快照的信息

Multiple ids are also supported.
GET /_snapshot/my_backup/snapshot_1,snapshot_2/_status

12、如果要停止一個正在運行的snapshot任務(備份和恢復),將其刪除即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM