Elasticsearch的資料備份和恢復以及遷移

2021-10-05 13:53:28 字數 2860 閱讀 8774

目錄

1. 為什麼備份?

2. 資料備份

3. 資料恢復

4. es備份資料遷移目標伺服器

5. 指令碼備份恢復

常見的資料庫都會提供備份機制,以解決在資料庫無法使用的情況下通過備份來恢復資料減少損失。 elasticsearch 雖然有良好的容災性,但以下原因,其依然需要備份機制:

1) 資料災備:在整個集群無法正常工作時,可以及時從備份中恢復資料。

2) 歸檔資料:隨著資料的積累,比如日誌類的資料,集群的儲存壓力會越來越大,不管是記憶體還是磁碟都要承擔資料增多帶來的壓力,此時我們往往會選擇只保留最近一段時間的資料,比如將1個月之前的資料刪除。如果不想刪除這些資料,以備後續有檢視需求,那麼就可以將這些資料以備份的形式歸檔。

3) 遷移資料:當你需要將資料從乙個集群遷移到另乙個集群時,也可以用備份的方式來實現。

elasticsearch備份兩種方式:

1) 將資料匯出成文字檔案,比如通過 elasticdump

、esm

等工具將儲存在 elasticsearch 中的資料匯出到檔案中。

2) 備份 elasticsearch data 目錄中檔案的形式來做快照,借助 elasticsearch 中 snapshot 介面實現的功能。

第一種方式相對簡單,在資料量小的時候比較實用,當應對大資料量場景效率就顯得乏力。這裡本文著重講解下第二種備份方式,即 snapshot api 的使用。其次,備份集群的唯一可靠方法是使用快照和還原功能。

版本相容性:

1) 5.x中建立的索引快照可以還原為6.x

2) 2.x中建立的索引快照可以還原為5.x

3) 1.x中建立的索引快照可以還原為2.x

官方文件參考

1) 設定備份目錄

修改elasticsearch.yml

建立es資料備份的資料目錄

2) 建立倉庫(creating the repository)

備份資料之前,要建立乙個倉庫來儲存資料,倉庫的型別支援shared filesystem, amazon s3, hdfs、azure cloud選擇。 }'

3) 建立快照(備份索引)

乙個倉庫可以擁有同乙個集群的多個快照。在乙個集群中快照擁有乙個唯一名字作為標識。在倉庫 datasvr 中建立名字為 snapshot_1 的快照。

備份名稱為snapshot_1 (自行定義備份名稱)

同步執行,加wait_for_completion 標誌,備份完成後才返回,如果資料量大的話,會花很長時間

如果只想備份部分索引的話,可以加上indices 引數:'

執行完後,檢視備份資料目錄下,已經備份在備份目錄下

4) 檢視倉庫資訊

瀏覽器中檢視備份倉庫資訊

#5) 檢視倉庫儲存的所有快照

瀏覽器中檢視備份倉庫某個快照資訊

snapshot_1

瀏覽器中檢視備份倉庫所有快照資訊

_all

6) 刪除快照

# curl -x delete "localhost:9200/_snapshot/datasvr/snapshot_1"

7) 刪除倉庫

倉庫被登出時,elasticsearch 只刪除倉庫儲存快照的引用位置,快照本身沒有被刪除並且在原來的位置

# curl -x delete "localhost:9200/_snapshot/datasvr"

集群備份恢復:

注意:以上是單機的備份方法,集群的備份恢復方法和單機模式一樣,只不過需要增加乙個集群共享目錄用來存放備份資料,使所有節點可訪問。

1) 配置集群共享目錄

# yum install sshfs

2) 建立集群共享目錄,並將各節點備份目錄掛載到共享目錄

建立集群共享目錄

# mkdir -p /home/backup/elk_share

共享目錄掛載

# sshfs [email protected]:/home/backup/elk_share /home/backup/elk  -o allow_other

3) 資料備份恢復與單機備份恢復一樣,參考單機備份恢復

官方文件參考

用過head外掛程式檢視,資料已經恢復:

1) 源資料備份

參考以上第二步

2) 源資料備份目錄拷貝目標es備份目錄下

注意:這裡為了方便,源備份目錄和目標備份目錄一致。

3) 目標es機器建立源es同名倉庫

4) 目標es檢視快照

5) 目標es執行恢復操作

將用到的api封裝成shell指令碼進行備份恢復操作較為方便,後續有時間在補充。

elasticsearch 同步myql 資料

專案 elastic 搜尋資料庫內容,達到快速匹配的效果 elasticsearch 上面是官方鏈結,我也對它不做過多介紹,有興趣的小夥伴可以直接跳轉。目前我們是通過elastic node的api呼叫它的 直接npm install s elasticsearch 同步mysql的手段 logst...

Elasticsearch與Mysql資料同步

elasticsearch就是專門用於搜尋的,所以我們會將新增的資料放入elasticsearch中用於搜尋,就有這樣的常見的場景,需要將mysql中的資料同步到elasticsearch中。mysql資料同步到es型別 mysql資料同步到es中分為兩種,分別是全量同步和增量同步。全量同步表示第一...

ElasticSearch怎樣加入,檢索資料

elasticsearch是乙個分布式的文件 document 儲存引擎。它能夠實時儲存並檢索複雜資料結構 序列化的json文件。換言說,一旦文件被儲存在elasticsearch中,它就能夠在集群的任一節點上被檢索。當然,我們不僅須要儲存資料。還要高速的批量查詢。儘管已經有非常多nosql的解決方...