7、Elasticsearch數據Snapshot備份與恢復


我們知道Elasticsearch的索引拆分成多個shard進行存儲在磁盤里,shard雖然分了primary shard和replica shard,可以保證集群的數據不丟失,數據訪問不間斷,但如果機房停電導致集群節點全部宕機這種重大事故時,我們就需要提前定期地對數據進行備份,以防萬一。

1.ES集群Snapshot備份需先配置共享存儲

#在此我使用nfs為例(系統版本為Centos7)

nfs服務端

yum install -y nfs-utils

#配置掛載的文件,該文件也就是后面ES所需要配置的

vim /etc/exports

/opt/elasticsearch-7.6.1/esbackup *(rw,sync,no_root_squash)

mkdir -p /opt/elasticsearch-7.6.1/esbackup

#先為rpcbind和nfs做開機啟動:(必須先啟動rpcbind服務)

systemctl enable rpcbind.service

systemctl enable nfs-server.service

#然后分別啟動rpcbind和nfs服務

systemctl start rpcbind.service

systemctl start nfs-server.service

#確認NFS服務器啟動成功

rpcinfo -p

# 使配置生效

exportfs -r

# 查看配置情況

exportfs

#這里做完后要記得給es用戶賦予寫權限

nfs客戶端

yum install -y nfs-utils

systemctl enable rpcbind.service

systemctl start rpcbind.service

showmount -e 服務端IP

mkdir -p /opt/elasticsearch-7.6.1/esbackup

#掛載目錄

mount -t nfs 服務端IP :/opt/elasticsearch-7.6.1/esbackup /opt/elasticsearch-7.6.1/esbackup

2.修改ES配置文件

#根據自己ES的實際路徑

cd /usr/local/elasticsearch-7.6.1/config/

vim elasticsearch.yml

#加上該配置項,就是我們的共享存儲路徑
path.repo: /opt/elasticsearch-7.6.1/esbackup

#若是ES集群的話,則所有節點都需要做此配置

3.重啟ES

su - es

#通過kill命令先殺掉es進程

cd /usr/local/elasticsearch-7.6.1/bin/

nohup ./elasticsearch &

4.建立倉庫

#倉庫地址就是我們的共享存儲 /opt/elasticsearch-7.6.1/esbackup

curl --user elastic:elastic -H "Content-Type: application/json" -XPUT http://ES IP地址:9200/_snapshot/esbackup -d '{"type": "fs","settings": {"location": "/opt/elasticsearch-7.6.1/esbackup"}}'

#完成后,共享存儲下會生成一個文件

 5.Snapshot創建快照

#通過kibana進行操作

//異步備份所有打開的索引
PUT _snapshot/esbackup/snapshot_1
​
//同步備份部分索引
PUT _snapshot/esbackup/snapshot_2?wait_for_completion=true
{
"indices": "index_1,index_2"
}

//查看所有快照信息
GET _snapshot/esbackup/_all

//查看單個快照信息,可以看到所備份的索引
GET _snapshot/esbackup/snapshot_1

//刪除快照
DELETE _snapshot/esbackup/snapshot_1

6.快照狀態解釋

GET _snapshot/esbackup/snapshot_1/_status

stage字段名詞解釋:

INITIALIZING:分片正在檢查集群狀態以查看是否可以對其進行快照。這通常非常快。

TARTED:數據正在傳輸到存儲庫。

FINALIZING:數據傳輸完成;分片現在正在發送快照元數據。

DONE:快照完成!

FAILED:快照過程中遇到錯誤,無法完成此shard/index/snapshot。檢查您的日志以獲取更多信息。

7.Snapshot快照恢復

//默認恢復該快照中的所有索引,默認異步,可使用wait_for_completion=true,改為同步
POST _snapshot/esbackup/snapshot_1/_restore

//從快照中恢復某個索引
POST /_snapshot/esbackup/snapshot_1/_restore
{
    "indices": "index_1"    
}

//查看還原進度
GET index_1/_recovery

 


免責聲明!

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



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