日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

elasticsearch快照和恢复

發布時間:2025/3/20 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elasticsearch快照和恢复 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:es可以通過簡單的命令對索引或者整個集群進行快照和恢復


快照和恢復

Snapshot and restore 模塊允許創建單個索引或者整個集群的快照到遠程倉庫. 在初始版本里只支持共享文件系統的倉庫,但是現在通過官方的倉庫插件可以支持各種各樣的后臺倉庫。

倉庫

在進行任何快照或者恢復操作之前必須有一個快照倉庫注冊在Elasticsearch里。下面的這個命令注冊了 一個名為my_backup?的共享文件系統倉庫,快照將會存儲在?/mount/backups/my_backup?這個目錄。

$ curl -XPUT 'http://localhost:9200/_snapshot/my_backup' -d '{ "type": "fs", "settings": { "location": "/mount/backups/my_backup", "compress": true } }'

一旦倉庫被注冊了,就可以只用下面的命令去獲取這個倉庫的信息

$ curl -XGET 'http://localhost:9200/_snapshot/my_backup?pretty' {"my_backup" : {"type" : "fs","settings" : {"compress" : "true","location" : "/mount/backups/my_backup"}} }

如果沒有指定倉庫名字,或者使用?_all?作為倉庫名字,Elasticsearch將返回該集群當前注冊的所有倉庫的信息:

$ curl -XGET 'http://localhost:9200/_snapshot'

or

$ curl -XGET 'http://localhost:9200/_snapshot/_all'
共享文件系統的倉庫

共享文件系統倉庫 ("type": "fs") 是使用共享的文件系統去存儲快照。 在?location?參數里指定的具體存儲路徑必須和共享文件系統里的位置是一樣的并且能被所有的數據節點和master節點訪問。 另外還支持如下的一些參數設置:

location

指定快照的存儲位置。必須要有

compress

指定是否對快照文件進行壓縮. 默認是?true.

chunk_size

如果需要在做快照的時候大文件可以被分解成幾塊。這個參數指明了每塊的字節數。也可用不同的單位標識。 比如,1g,10m,5k等。默認是?null?(表示不限制塊大小)。

max_restore_bytes_per_sec

每個節點恢復數據的最高速度限制. 默認是?20mb/s

max_snapshot_bytes_per_sec

每個節點做快照的最高速度限制。默認是?20mb/s

只讀URL倉庫

URL倉庫("type": "url")可以作為使用共享文件系統存儲快照創建的共享文件系統倉庫的只讀訪問方式。?url?參數指定的URL必須指向共享文件系統倉庫的根。支持的配置方式如下:

url

指定快照位置。必須要有

倉庫插件

下面這些官方插件中的倉庫后臺都是可用的:

  • AWS Cloud Plugin?亞馬遜S3倉庫

  • HDFS Plugin?Hadoop環境

  • Azure Cloud Plugin?Azure存儲倉庫

快照

一個倉庫可以包含同一個集群的多個快照。快照根據集群中的唯一名字進行區分。 在倉庫?my_backup?里創建一個名為snapshot_1?的快照可以通過下面的命令:

$ curl -XPUT "localhost:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true"

wait_for_completion?參數指定創建snapshot的請求是否等待快照創建完成再返回。 默認情況下,集群中所有打開和啟動的索引是自動創建快照的。可以通過在快照請求里列出需要創建快照的索引。 parameter specifies whether or not the request should return immediately or wait for snapshot completion. By default snapshot of all open and started indices in the cluster is created. This behavior can be changed by specifying the list of indices in the body of the snapshot request.

$ curl -XPUT "localhost:9200/_snapshot/my_backup/snapshot_1" -d '{ "indices": "index_1,index_2", "ignore_unavailable": "true", "include_global_state": false "partial": "false" }'

上述命令中通過?indices?參數指定快照包含的索引,這個參數支持同時配置多個索引?multi index syntax. 快照請求同樣支持?ignore_unavailable?選項。把這個選項設置為?true?的時候在創建快照的過程中會忽略不存在的索引。默認情況下, 如果沒有設置?ignore_unavailable?在索引不存在的情況下快照請求將會失敗。通過設置?include_global_state?為false?能夠防止 集群的全局狀態被作為快照的一部分存儲起來。默認情況下,如果快照中的1個或多個索引不是全部主分片都可用會導致整個創建快照的過 程失敗。 通過設置?partial?為?true?可以改變這個行為。

索引創建快照的過程是增量的。在給索引創建快照的過程中,Elasticsearch會分析存儲在倉庫中的索引文件并且只會復制那些自從上次快照 之后新建或有所更新的文件。這使得多個快照以一種緊湊的方式存儲在同一個倉庫里。創建快照的過程是以非阻塞方式執行的。一個索引在創 建快照的同時能夠被檢索和查詢。盡管如此,快照保存的是在開始進行創建快照的那個時間點的索引的視圖。所以,在開始創建快照之后的記 錄不會出現在這個快照里。在主分片啟動之后創建快照的過程就會立即開始,并且之后不會改變位置。在1.2.0版本之前如果集群重新定位或者 新加入快照的索引初始化主分片會導致快照操作失敗。從1.2.0版本開始,Elasticsearch會等待重新定位和初始化分片然后再創建快照。

除了給每個索引創建拷貝快照還能存儲集群的全局元數據,包括集群的設置和模板。臨時的設置和已經注冊的快照倉庫不會被作為快照的一部 分來存儲。

任何時候在集群里只能有一個創建快照的操作在執行。當一個分片正在創建快照的時候,這個分片就不能被遷移到別的節點,因為這會影響重 新平衡和分配過濾的過程。一旦這個分片的快照建立完成,這個分片就可以根據現有的分配過濾和重新平衡算法被遷移到別的節點上。

如果快照已經建立,我們可以通過如下的命令去獲得快照的信息:

$ curl -XGET "localhost:9200/_snapshot/my_backup/snapshot_1"

通過如下的命令可以把倉庫里所有的快照列出來:

$ curl -XGET "localhost:9200/_snapshot/my_backup/_all"

可以通過如下的命令將倉庫里的某個快照刪除:

$ curl -XDELETE "localhost:9200/_snapshot/my_backup/snapshot_1"

當一個快照從倉庫里刪除之后,Elasticsearch會把所有和這個快照相關并且不被其它快照使用的文件刪除。如果對正在創建的某個快照執行 刪除操作,則創建快照的過程會被取消,并且會把創建過程中所有已經創建的文件刪除。因此,刪除操作可以用來取消那些由于誤操作引起的 長時間運行的快照操作。

恢復

快照可以使用如下的操作來恢復:

$ curl -XPOST "localhost:9200/_snapshot/my_backup/snapshot_1/_restore"

默認情況下,快照中的所有索引以及集群狀態都會被恢復。在恢復請求中可以通過?indices?來指定需要被恢復的索引,同樣可以使用?include_global_state?選項來防止恢復集群的狀態。?indices?支持配置多個索引multi index syntax.rename_pattern?和?rename_replacement?選項可以在恢復的時候使用正則表達式來重命名index。詳見?這里.

$ curl -XPOST "localhost:9200/_snapshot/my_backup/snapshot_1/_restore" -d '{ "indices": "index_1,index_2", "ignore_unavailable": "true", "include_global_state": false, "rename_pattern": "index_(.+)", "rename_replacement": "restored_index_$1" }'

恢復操作可以在正在運行的集群上操作。盡管如此,已經存在的index只有在關閉之后才能被恢復。恢復操作會自動打開關閉的恢復的索引, 并且創建新的索引如果索引不存在。如果集群狀態也是恢復的,如果恢復的模板不存在會被新建,如果同名的模板已經存在則會被覆蓋代替。 恢復的持久性設置會被增加到現存的持久性設置里。

快照狀態

新增于[1.1.0]

正在運行的快照的詳細信息可以通過如下的命令來獲取:

$ curl -XGET "localhost:9200/_snapshot/_status"

在這種格式下,這個命令將會返回所有正在運行的快照的信息。通過指明倉庫名字,能夠把結果限定到具體的一個倉庫。

$ curl -XGET "localhost:9200/_snapshot/my_backup/_status"

如果倉庫名字和快照id都指明了,這個命令就會返回這個快照的詳細信息,甚至這個快照不是正在運行。

$ curl -XGET "localhost:9200/_snapshot/my_backup/snapshot_1/_status"

同樣支持多個快照id:

$ curl -XGET "localhost:9200/_snapshot/my_backup/snapshot_1,snapshot_2/_status"

監控快照/恢復進度

有多種方法去監控運行時快照和恢復的進度。這2個操作都支持?wait_for_completion?參數,如果這個了這個參數將會阻塞客戶端直到 操作完成。這是最簡單的用來獲取操作完成的通知的方法。

快照操作的進度也可以通過定時的調用下面的命令去獲得:

$ curl -XGET "localhost:9200/_snapshot/my_backup/snapshot_1"

注意,獲取快照信息的操作和快照操作使用相同的資源和線程池。所以,執行獲取快照信息的操作的時候如果大量的分片正在做快照操作, 在獲取快照新的操作返回結果之前需要先等到資源可用才行。如果分片太大,等待的時間會挺長。

要獲取更多的及時和完整的關于快照的信息,可以使用如下的快照狀態命令。

$ curl -XGET "localhost:9200/_snapshot/my_backup/snapshot_1/_status"

獲取快照信息的方法只返回關于快照進度的基本信息, 快照狀態命令會返回正在做快照的每個分片的具體信息。

恢復進度是裝在Elasticsearch的標準恢復機制里的。所以,標準恢復監控服務能夠被用來監控恢復的狀態。當恢復操作在集群里執行的時候, 集群通常會變成?紅色?狀態。可能是因為恢復操作是從恢復被恢復的索引的主分片開始的。在恢復操作期間主分片變的不可用使得集群處于?紅色?狀態。一旦主分片的恢復完成,Elasticsearch會切換到標準復制過程,在這個過程會創建需要的復制個數,并且集群狀態變為?黃色?。一旦所有的復制分片創建完成,集群會變成?綠色?狀態。

集群健康操作只提供恢復過程的大致狀態。可以通過?indices recovery?和?cat recovery?APIs 獲取恢復過程當前狀態的更詳細的信息。

停止正在運行的快照和恢復操作

快照和恢復框架只允許同一時刻每次運行1個快照或恢復操作。如果正在運行的一個快照是誤操作導致的或者運行的時間太長,可以用快照刪除 操作去終止正在執行的快照操作。快照刪除操作會檢查要刪除的快照是否正在運行,如果是,刪除操作先停止這個快照操作,然后再將它從倉庫 里刪除。

恢復操作是用用標準的分片回復機制。因此,任何正在運行的恢復操作可以通過刪除正在恢復的索引來取消。注意,所有被刪除的索引的數據也 會被從集群里刪除。


轉載自:http://blog.csdn.net/yinchunxiang/article/details/38727883

轉載于:https://www.cnblogs.com/catkins/p/5270368.html

總結

以上是生活随笔為你收集整理的elasticsearch快照和恢复的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。