Elasticsearch數據遷移(使用快照)

前言:由於做項目的時候沒有進行長期考慮,把es,mysql,api等都部署在同一臺服務器上,隨着業務的增加,需要將部分服務和存儲遷移到其他服務器。es上目前已有100萬以上的數據,上網查資料,snapshot適合數據量大的遷移,所以沒來得及考慮就果斷選擇嘗試一下。 

一.生成快照

1.修改配置文件 

找到es配置文件elasticsearch.yml ,在配置文件中添加 path.repo註冊位置,由於es都是使用的非root用戶啓動,當前用戶需要有權限能讀寫,所以建議目錄設置爲用戶/home/{user}/backup,比如我自己的es的用戶是elk,但由於公司配的服務器磁盤掛在在根目錄下,home目錄只有2G的內存,所以我自己的配置是將快照配置在根目錄下一個文件夾,並設置爲elk用戶的管理權限,我設置的配置信息如下:

創建過程:

cd /data/                   #進入data目錄
mkdir elk                   #創建文件夾
chown -R elk:elk /data/elk  #賦予elk用戶和用戶組
chmod 777 /data/elk         #賦予該用戶可讀寫執行的權限
path.repo: ["/data/elk/backup"]

配置截圖如下:

 2.重啓Elasticsearch,然後執行http 註冊存儲庫

重啓:先使用:ps aux | grep elastic命令找到es的進程號,然後kill -9 進程號殺掉,再啓動es

執行http 註冊存儲庫:

curl -H "Content-Type: application/json" -XPUT 'http://localhost:9200/_snapshot/backup' -d '{
    "type": "fs",
    "settings": {
        "location": "/data/elk/backup",
        "compress": true
    }
}'

參數說明:backup是共享文件系統倉庫,生成的快照將會存儲在 /data/elk/backup 這個目錄。 

執行截圖:

查看執行結果:?pretty是美化返回結果,使返回結果換行美觀,可以清楚的看見json結構。

curl http://localhost:9200/_snapshot?pretty

結果截圖:

 以上結果代表註冊成功。

3.執行快照請求

curl -H "Content-Type: application/json" -XPUT http://localhost:9200/_snapshot/backup/snapshot_20200319?pretty

snapshot_20200319爲快照名稱,執行成功如下圖:

 查看快照執行結果:

curl -H "Content-Type: application/json" -XGET http://localhost:9200/_snapshot/backup/snapshot_20200319?pretty

運行截圖:

等待快照註冊成功,等待"state": "SUCCESS"的標識就行快照完全生成成功。如果希望在腳本中一直等待到完成,可通過添加 wait_for_completion=true 標記實現,但如果數據特別多的話等待時間會很長。可寫成:

curl -H "Content-Type: application/json" -XPUT http://localhost:9200/_snapshot/backup/snapshot_20200319?wait_for_completion=true

最終成功的截圖:

二、快照還原

1.在新的服務器上修改配置文件,快照路徑儘量需要和原服務器上的一致,按照上面註冊存儲庫,再執行備份

path.repo: ["/data/elk/backup"]

2.將backup複製到新服務器

scp -r /data/elk/backup/ [email protected]:/data/elk

3.執行還原:

curl -H "Content-Type: application/json" -XPOST http://localhost:9200/_snapshot/backup/snapshot_20200319/_restore?pretty

4.還原以後可以刪除存儲庫,並將配置path.repo: ["/data/elk/bakcup"]註釋掉還原(可選操作)

curl -H "Content-Type: application/json" -XDELETE http://localhost:9200/_snapshot/backup?pretty

刪除成功截圖:

此時可以註釋掉存儲庫的配置,重啓es,當一個庫被刪除,Elasticsearch僅刪除存儲庫的位置的引用,快照本身並沒有被刪除。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章