ES備份快照的時候可以用<code>NFS</code>或者<code>HDFS</code>。<code>NFS</code>有點麻煩,我們使用<code>HDFS</code>。
<code>bin/elasticsearch-plugin install repository-hdfs</code>
注意下載下傳後會提示是否安裝,一定要輸入 <code>y</code>,否則視為取消安裝。 安裝完之後要重新開機ES叢集.
注意源叢集的IP和hdfs的IP不要寫錯了
這裡<code>conf.dfs.client.read.shortcircuit</code>如果設定為true,那麼hdfs裡需要配置一些額外的東西,我試了沒成功。設定為true能減少通信次數,加快速度,如果您和我一樣不想折騰,還是建議設定為false。
<code>curl -XGET '192.168.40.11:9200/_snapshot/my_hdfs_repository?pretty'</code>
<code>curl -XPUT '192.168.40.11:9200/_snapshot/my_hdfs_repository/snapshot_20171215?wait_for_completion=false&pretty'</code>
注意:
<code>wait_for_completion=true</code>會一直等待備份結束。
<code>wait_for_completion=false</code>會立即傳回,備份在背景進行,可以使用下面的api檢視備份的進度:
<code>curl -XGET '192.168.40.11:9200/_snapshot/my_hdfs_repository/snapshot_20171215/_status?pretty'</code>
我使用<code>master</code>這個使用者操作的,快照備份在hdfs的這個目錄下,可以檢視一下:
<code>hdfs dfs -ls /user/master/elasticsearch/repositories/my_hdfs_repository</code>
注意目标叢集的IP,hdfs的IP,hdfs的路徑都不要寫錯了
注意:如果恢複的時候報這個錯:<code>cannot restore index [janusgraph_vertices] because it's open ...</code>
說明目标叢集裡已經有這個索引了,要把這個索引删掉,然後再恢複,因為快照裡已經有schema資訊了:
<code>curl -XDELETE '192.168.40.15:9200/janusgraph_vertices?pretty'</code>
注意恢複快照的時候分片的數量是不能改變的(要想改變分片數量隻能re-index)。但是副本的數量是可以重新指定的(<code>index.number_of_replicas</code> )。還有其他的一些參數也是可以重新指定的。
咱們的snapshot_20171215備份的是所有索引, 這裡的<code>indices</code>可以寫多個索引的名字,逗号隔開。indices指定的索引,其參數會被覆寫。 indices沒有指定的索引,其參數跟以前保持一緻。因為備份的時候,索引的配置參數和schema也一并備份了。
在ES head插件上看:
紅色狀态表示ES正在恢複主分片, 黃色狀态表示主分片已經恢複完成,正在進行建立副本的操作,綠色狀态表示所有的主分片和副本都恢複完成。
如果不放心還可以用<code>du -sh ./data</code> 看一下檔案夾的容量有沒有增加。
注意剛恢複完不要急着查詢,這時候查詢會報錯誤,要等一會兒再查詢!恢複的過程中也不要查詢資料!
<code>curl -XDELETE '192.168.40.11:9200/_snapshot/my_hdfs_repository/snapshot_20171215?pretty'</code>