elasticsearch快照操作

2022-06-09 03:57:07 字數 2555 閱讀 1986

**

使用無論哪個儲存資料的軟體,定期備份你的資料都是很重要的。elasticsearch 副本提供了高可靠性;它們讓你可以容忍零星的節點丟失而不會中斷服務。

但是,副本並不提供對災難性故障的保護。對這種情況,你需要的是對集群真正的備份——在某些東西確實出問題的時候有乙個完整的拷貝。

要備份你的集群,你可以使用snapshotapi。這個會拿到你集群裡當前的狀態和資料然後儲存到乙個共享倉庫裡。這個備份過程是"智慧型"的。你的第乙個快照會是乙個資料的完整拷貝,但是所有後續的快照會保留的是已存快照和新資料之間的差異。隨著你不時的對資料進行快照,備份也在增量的新增和刪除。這意味著後續備份會相當快速,因為它們只傳輸很小的資料量。

要使用這個功能,你必須首先建立乙個儲存資料的倉庫。有多個倉庫型別可以供你選擇:

讓我部署乙個共享檔案系統倉庫:

}給我們的倉庫取乙個名字,在本例它叫my_backup

我們指定倉庫的型別應該是乙個共享檔案系統。

最後,我們提供乙個已掛載的裝置作為目的位址。

注意:共享檔案系統路徑必須確保集群所有節點都可以訪問到。

這步會在掛載點建立倉庫和所需的元資料。還有一些其他的配置你可能想要配置的,這些取決於你的節點、網路的效能狀況和倉庫位置:

max_snapshot_bytes_per_sec

當快照資料進入倉庫時,這個引數控制這個過程的限流情況。預設是每秒20mb

max_restore_bytes_per_sec

當從倉庫恢復資料時,這個引數控制什麼時候恢復過程會被限流以保障你的網路不會被佔滿。預設是每秒20mb

假設我們有乙個非常快的網路,而且對額外的流量也很 ok,那我們可以增加這些預設值:

}注意我們用的是post而不是put。這會更新已有倉庫的設定。

然後新增我們的新設定。

乙個倉庫可以包含多個快照。每個快照跟一系列索引相關(比如所有索引,一部分索引,或者單個索引)。當建立快照的時候,你指定你感興趣的索引然後給快照取乙個唯一的名字。

讓我們從最基礎的快照命令開始:

這個會備份所有開啟的索引到my_backup倉庫下乙個命名為snapshot_1的快照裡。這個呼叫會立刻返回,然後快照會在後台執行。

通常你會希望你的快照作為後台程序執行,不過有時候你會希望在你的指令碼中一直等待到完成。這可以通過新增乙個wait_for_completion標記實現:

這個會阻塞呼叫直到快照完成。注意大型快照會花很長時間才返回。

預設行為是備份所有開啟的索引。不過如果你在用 marvel,你不是真的想要把所有診斷相關的.marvel索引也備份起來。可能你就壓根沒那麼大空間備份所有資料。

這種情況下,你可以在快照你的集群的時候指定備份哪些索引:

這個快照命令現在只會備份index1index2了。

一旦你開始在你的倉庫裡積攢起快照了,你可能就慢慢忘記裡面各自的細節了——特別是快照按照時間劃分命名的時候(比如,backup_2014_10_28)。

要獲得單個快照的資訊,直接對倉庫和快照名發起乙個get請求:

要獲取乙個倉庫中所有快照的完整列表,使用_all佔位符替換掉具體的快照名稱:

最後,我們需要乙個命令來刪除所有不再有用的舊快照。這只要對倉庫/快照名稱發乙個簡單的deletehttp 呼叫:

用 api 刪除快照很重要,而不能用其他機制(比如手動刪除,或者用 s3 上的自動清除工具)。因為快照是增量的,有可能很多快照依賴於過去的段。deleteapi 知道哪些資料還在被更多近期快照使用,然後會只刪除不再被使用的段。

但是,如果你做了一次人工檔案刪除,你將會面臨備份嚴重損壞的風險,因為你在刪除的是可能還在使用中的資料。

wait_for_completion標記提供了乙個監控的基礎形式,但哪怕只是對乙個中等規模的集群做快照恢復的時候,它都真的不夠用。

另外兩個 api 會給你有關快照狀態更詳細的資訊。首先你可以給快照 id 執行乙個get,就像我們之前獲取乙個特定快照的資訊時做的那樣:

如果你呼叫這個命令的時候快照還在進行中,你會看到它什麼時候開始,執行了多久等等資訊。不過要注意,這個 api 用的是快照機制相同的執行緒池。如果你在快照非常大的分片,狀態更新的間隔會很大,因為 api 在競爭相同的執行緒池資源。

更好的方案是拽取_statusapi 資料:

_statusapi 立刻返回,然後給出詳細的多的統計值輸出:

"shards_stats":,"stats":,"indices":,"stats":,"shards":{"0":{"stage":"done","stats":{"number_of_files":1,"processed_files":1,"total_size_in_bytes":

Elasticsearch 快照和恢復

要備份您的阿里雲elasticsearch集群,您可以使用snapshotapi。該api會拿到您的集群當前的狀態和資料,然後儲存到乙個共享倉庫裡。這個備份過程是 智慧型 的。您的第乙個快照會是乙個資料的完整拷貝,但所有後續的快照保留的是已存快照和新資料之間的差異。隨著您不時的對資料進行快照,備份也...

elasticsearch 使用快照方式遷移資料

註冊快照倉庫 es是通過快照的方式來實現資料備份,並且是以增量的方式,所以一般第一次做的話會花費較長的時間。為了做快照,那麼就需要註冊乙個快照倉庫,告訴es我們的快照應該如何儲存以及將快照儲存到 es的快照倉庫支援如下幾種形式 共享的檔案系統,如nas amazon s3 hdfs hadoop d...

將Elasticsearch的快照備份到HDFS

1 安裝elasticsearch外掛程式repository hdfs 將zip包放在 usr local下 注意外掛程式版本需要和elasticsearch的版本對應。如果版本不匹配,在安裝時會有提示 cd usr local software elasticsearch 6.2.1 bin e...