翻譯自官網(wǎng), 水平有限,用于自查瀑凝。轉(zhuǎn)載請注明網(wǎng)址: http://www.reibang.com/p/f53ce0db0da7
倉庫
在任何快照或還原操作能夠進行之前序芦,應(yīng)該注冊一個快照倉庫到Elasticsearch臭杰。
倉庫設(shè)置是特殊的倉庫類型(repository-type),如下:
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
... repository specific settings ...
}
}
一旦一個倉庫被注冊谚中,它的信息(information)可以使用如下命令獲瓤矢恕:
GET /_snapshot/my_backup
命令返回:
{
"my_backup": {
"type": "fs",
"settings": {
"compress": true,
"location": "/mount/backups/my_backup"
}
}
}
多個倉庫的信息可以使用一個逗號隔開的列表一次獲取∠芩可以使用星號通配符(*)磁奖,
例如,由repo開始或包含backup的倉庫信息可以使用如下命令獲饶晨稹:
GET /_snapshot/repo*,*backup*
若非指定倉庫名稱比搭,或者使用_all,Elasticsearch會返回集群中所有當(dāng)前已注冊的倉庫信息:
GET /_snapshot
或者:
GET /_snapshot/_all
共享文件系統(tǒng)倉庫
共享文件系統(tǒng)倉庫("type":"fs")使用共享文件系統(tǒng)存儲快照南誊。
為了注冊共享文件系統(tǒng)倉庫身诺,有必要在每一臺主節(jié)點和數(shù)據(jù)節(jié)點上,將相同的共享文件系統(tǒng)掛載到相同location抄囚。
這個location(或者一個它的父文件夾)必須在每一臺主節(jié)點和數(shù)據(jù)節(jié)點的配置中霉赡,注冊在path.repo設(shè)置里。
假設(shè)這個共享文件系統(tǒng)倉庫掛載在/mount/backups/my_backup幔托, 如下設(shè)置需要加到elasticsearch.yml文件里:
path.repo: ["/mount/backups", "/mount/longterm_backups"]
path.repo設(shè)置支持Microsoft Windows UNC路徑穴亏,只要至少服務(wù)器名稱和共享被指定為前綴,并正確地轉(zhuǎn)義回斜杠
path.repo: ["\\\\MY_SERVER\\Snapshots"]
所有節(jié)點重啟后重挑,如下命令可以用于注冊名為my_backup的共享文件系統(tǒng)倉庫:
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/mount/backups/my_backup",
"compress": true
}
}
如果這個倉庫location使用了相對路徑嗓化,則會使用path.repo中的一級路徑:
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "my_backup",
"compress": true
}
}
支持如下設(shè)置:
設(shè)置 | 說明 |
---|---|
location | 指定快照的位置,必填 |
compress | 打開快照文件壓縮, 壓縮僅用于元數(shù)據(jù)文件(索引mapping和setting)谬哀, 數(shù)據(jù)文件不壓縮刺覆, 默認(rèn)true |
chunk_size | 如果需要,在快中時大文件可以分解成塊玻粪。 塊大小可以指定為字節(jié)數(shù)隅津,或使用單位 例如:1g, 10m, 5k. 默認(rèn)為null(表示無限大的分塊) |
max_restore_bytes_per_sec | 每個節(jié)點的還原速率限制,默認(rèn)40mb/s |
max_snapshot_bytes_per_sec | 每個節(jié)點的創(chuàng)建快照速率限制劲室,默認(rèn)40mb/s |
readonly | 使倉庫只讀伦仍,默認(rèn)false |
只讀URL倉庫
URL倉庫("type":"url") 可以用作以只讀方式從共享文件系統(tǒng)倉庫中獲取數(shù)據(jù)的一種方案。
url參數(shù)需要指定共享文件系統(tǒng)倉庫的根路徑很洋。
支持如下設(shè)置:
設(shè)置 | 說明 |
---|---|
url | 指定快照的位置充蓝,必填 |
URL倉庫支持如下協(xié)議: "http", "https", "ftp", "file" 和 "jar"
使用"http:", "https:" 和 "ftp:" 必須要在repositories.url.allowed_urls設(shè)置白名單,主機名,路徑谓苟,查詢和片段支持使用通配符官脓,例如:
repositories.url.allowed_urls: ["http://www.example.org/root/*", "https://*.mydomain.com/*?*#*"]
使用"file:"類似于使用共享文件系統(tǒng)倉庫,URL指定到注冊在path.repo中的位置涝焙。
倉庫插件
通過如下官方插件卑笨,可以使用其他后端倉庫:
倉庫認(rèn)證
當(dāng)一個倉庫被注冊,它立即在所有主節(jié)點和數(shù)據(jù)節(jié)點上進行驗證仑撞,以確保它在集群中的所有節(jié)點上都具有功能性赤兴。
當(dāng)注冊或升級倉庫時, verify參數(shù)可以用于明確地禁用倉庫驗證:
PUT /_snapshot/s3_repository?verify=false
{
"type": "s3",
"settings": {
"bucket": "my_s3_bucket",
"region": "eu-west-1"
}
}
驗證進程也可以使用如下命令手動執(zhí)行:
POST /_snapshot/s3_repository/_verify
如果驗證成功隧哮,命令返回一個節(jié)點列表桶良。否則返回錯誤信息。
快照
一個倉庫可以包含同一個集群的多個快照沮翔, 快照在集群中由唯一的命名標(biāo)識陨帆。
一個命名為snapshot_1的快照可以執(zhí)行如下命令創(chuàng)建到my_backup倉庫中:
PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true
wait_for_completion 參數(shù)指定了請求在快照初始化結(jié)束后立即返回還是等待創(chuàng)建結(jié)束。
在快照初始化期間采蚀,之前所有快照的信息讀入內(nèi)存疲牵,
這意味著即使設(shè)置wait_for_completion為false,在巨型倉庫中會花費數(shù)秒(甚至幾分鐘)
默認(rèn)情況下會創(chuàng)建一個所有打開且啟動著的索引的快照
這種行為可以通過快照請求體中的一個特殊的索引列表來改變
PUT /_snapshot/my_backup/snapshot_1
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false
}
應(yīng)該包含在快照中的索引列表可以用indices參數(shù)指定且支持multi index syntax .
快照請求同樣支持ignore_unavailable選項.
如果設(shè)置為true, 在快照創(chuàng)建時會忽略不存在的索引搏存,
而默認(rèn)情況下瑰步,不設(shè)定ignore_unavailable選項時, 一個索引丟失會導(dǎo)致快照請求失敗璧眠。
設(shè)定include_global_state為false可以防止集群全局狀態(tài)被存儲為快照的一部分缩焦。
默認(rèn)情況下,如果一個或個多快照中的索引并非全部主分片可用责静,整個快照請求會失敗袁滥。
這種行為可以通過設(shè)置partial為true來避免。
索引快照進程是增量的灾螃。在制作索引快照進程中题翻,Elasticsearch分析早已存儲在倉庫中的索引文件列表并僅僅拷貝自上一次快照以來被創(chuàng)建或改變的文件。多個快照可以以緊湊格式存儲在倉庫中腰鬼∏对快照進程以非阻塞方式執(zhí)行,所有索引和搜索操作可以繼續(xù)在正在進行快照的索引上執(zhí)行熄赡。然而姜挺,一個快照意味著索引在快照創(chuàng)建的時間點的情況,所以那些在快照進程啟動后增加索引的記錄不會加入到快照中彼硫。
對于已經(jīng)啟動并且此時不在重分配(relocating)的主分片炊豪,快照進程立即啟動凌箕。1.2.0版本以前,如果任何加入到快照中的索引的主分片正在重分或者初始化词渤,快照操作都會失敗牵舱。自1.2.0版本以后,Elasticsearch等待分片重分或初始化完成缺虐。
除了創(chuàng)建每個索引的副本芜壁,快照進程也能存儲那些全局的、包含了持久化的集群設(shè)置和模板的元數(shù)據(jù)志笼。臨時的設(shè)置和注冊的快照倉庫不會存儲為快照的一部分沿盅。
任一時間集群中只有一個快照進程可以被執(zhí)行把篓。當(dāng)一個會干涉再平衡(rebalancing)進程和分配過濾的特定分片的快照正在被創(chuàng)建時纫溃,這個分片無法被移動到另一個節(jié)點。
Elasticsearch只允許移動一個分片到另一個節(jié)點韧掩。(根據(jù)當(dāng)前的分配過濾設(shè)置和再平衡算法)
一旦一個快照被創(chuàng)建紊浩,關(guān)于這個快照的信息可以用如下命令獲得:
GET /_snapshot/my_backup/snapshot_1
類似于倉庫,關(guān)于多個快照的信息可以一次查詢疗锐,支持通配符如下:
GET /_snapshot/my_backup/snapshot_*,some_other_snapshot
所有當(dāng)前存儲在倉庫的快照可以用如下命令列出:
GET /_snapshot/my_backup/_all
如果一些快照不可用坊谁,命令將失敗,ignore_unavailable可以用于返回所有當(dāng)前可用的快照
一個當(dāng)前運行的快照可以用如下命令獲然:
GET /_snapshot/my_backup/_current"
可以用如下命令從倉庫中刪除一個快照:
DELETE /_snapshot/my_backup/snapshot_1
當(dāng)一個快照被從倉庫中刪除口芍,Elasticsearch刪除所有與被刪除快照相關(guān)聯(lián),并且沒有被其他快照使用的文件雇卷。
如果在快照正在創(chuàng)建時執(zhí)行刪除快照操作鬓椭,快照進程會失敗,所有快照進程創(chuàng)建的文件將會被清理关划。因此小染,刪除快照操作可以用于撤銷錯誤啟動的長時間運行的快照操作。
可以使用如下操作刪除一個倉庫:
DELETE /_snapshot/my_backup
還原
一個快照可使用如下命令恢復(fù):
POST /_snapshot/my_backup/snapshot_1/_restore
默認(rèn)情況下贮折,快照中的所有索引還原了裤翩,且集群狀態(tài)沒有還原〉鏖可以選擇應(yīng)該還原的索引踊赠,并可以在還原請求體中使用index和include_global_state選項來還原全局集群狀態(tài)。索引列表支持multi index syntax
rename_pattern和rename_replacement選項還可以使用正則表達式來重命名還原的索引每庆。該表達式支持引用原始文本筐带。將include_aliases設(shè)置為false,防止別名與關(guān)聯(lián)索引一起被還原扣孟。
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": true,
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}
還原操作可以在一個正常運作的集群上執(zhí)行烫堤。然而,一個現(xiàn)有的索引只有在關(guān)閉時才能還原,并且分片數(shù)與快照中的索引相同鸽斟。如果索引是關(guān)閉的拔创,還原操作會自動打開它, 如果索引不存在富蓄,會自動創(chuàng)建剩燥。如果集群狀態(tài)因include_global_state而還原(默認(rèn)false),當(dāng)前集群中不存在的模板會被添加立倍,重名的模板會被替換灭红。還原的持久化設(shè)置會被添加到現(xiàn)有的持久化設(shè)置中。
局部還原
默認(rèn)情況下口注,如果一個或多個操作中的索引沒有全部可用分片的快照变擒,整個還原操作都會失敗。例如寝志,若某些分片未能獲得快照娇斑,就會發(fā)生這樣的情況。通過設(shè)置partial為true材部,仍有可能還原這樣的索引毫缆。請注意,這樣的情況下乐导,只有成功的快照會被還原苦丁, 所有丟失的分片會被重新創(chuàng)建為空。
在還原過程中更改索引設(shè)置
大多數(shù)的索引設(shè)置可以在還原過程覆蓋物臂。例如如下命令將在不創(chuàng)建任何副本的情況下還原index_1索引旺拉,同時切換回默認(rèn)的刷新間隔:
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1",
"index_settings": {
"index.number_of_replicas": 0
},
"ignore_index_settings": [
"index.refresh_interval"
]
}
請注意,一些設(shè)置像index.number_of_shards無法在還原操作期間被改變鹦聪。
還原到不同的集群
快照狀態(tài)
可以使用下面的命令獲取當(dāng)前運行的快照列表账阻,這些快照具有詳細的狀態(tài)信息:
GET /_snapshot/_status
在這種格式中,命令會返回所有當(dāng)前運行快照的信息泽本。通過指定倉庫名稱淘太,可以將結(jié)果指定到特定的倉庫。
GET /_snapshot/my_backup/_status
如果同時指定倉庫名稱和快照规丽,這個命令會對給定的快照返回詳細的狀態(tài)信息即使它并非當(dāng)前運行:
GET /_snapshot/my_backup/snapshot_1/_status
同樣支持多id:
GET /_snapshot/my_backup/snapshot_1,snapshot_2/_status
監(jiān)控快照/還原進程
有幾種辦法可以監(jiān)控快照和還原進程在其運行的過程中蒲牧。
兩種操作都支持wait_for_completion參數(shù), 阻塞客戶端直到操作結(jié)束赌莺。
這是一個可以用來獲取操作結(jié)束通知的簡單方式冰抢。
快照操作也可以通過周期性調(diào)用快照信息來監(jiān)控:
GET /_snapshot/my_backup/snapshot_1
請注意,快照信息操作和快照操作使用相同的資源和線程池艘狭。
因此挎扰,在大型分片正在快照時執(zhí)行快照信息操作翠订,可能會導(dǎo)致快照信息操作在返回結(jié)果之前等待可用的資源。
在非常大的分片上遵倦,這個等待時間是值得關(guān)注的尽超。
為了獲取關(guān)于快照更直接更完整的信息,可以使用快照狀態(tài)命令:
GET /_snapshot/my_backup/snapshot_1/_status
快照信息方法僅僅返回關(guān)于正在進行的快照的基本信息梧躺,快照狀態(tài)將返回加入到快照中的每個分片的當(dāng)前信息的完整分解似谁。
還原過程基于Elasticsearch的標(biāo)準(zhǔn)還原機制。因此掠哥,可以使用標(biāo)準(zhǔn)的還原監(jiān)視服務(wù)來監(jiān)控還原狀態(tài)巩踏。當(dāng)還原操作執(zhí)行時,集群通常會進入red狀態(tài)续搀,這是因為還原操作從還原索引的主分片開始塞琼。在這個操作過程中,主分片不可用目代,表現(xiàn)為集群狀態(tài)為red屈梁。一旦主分片還原完成,Elasticsearch將切換到標(biāo)準(zhǔn)復(fù)制過程創(chuàng)建所需數(shù)量的副本榛了,此時集群狀態(tài)為yellow。一旦所有所需副本創(chuàng)建完成煞抬,集群切換回green狀態(tài)霜大。
集群健康操作僅提供還原過程的高級別狀態(tài)「锎穑可以通過indices recovery和cat recovery API來更加詳細地了解還原的過程战坤。
停止當(dāng)前運行的快照和還原操作
快照和還原框架在同一時間只允許一個快照或還原操作運行。如果當(dāng)前運行的快照錯誤的被執(zhí)行残拐,或者時間非常長途茫,可以使用快照刪除操作來終止它∠常快照刪除操作檢查要刪除的快照是否正在運行囊卜,如果是,快照刪除操作會先停止快照進程错沃,再從倉庫中將它刪除栅组。
DELETE /_snapshot/my_backup/snapshot_1
還原操作使用標(biāo)準(zhǔn)分片還原機制,任何正在運行的還原操作都可以通過刪除正在還原的索引來取消枢析。
請注意玉掸,由于此操作,所有此索引的數(shù)據(jù)會全部從集群中被刪除醒叁。
集群阻塞對快照和還原操作的影響
許多快照和還原操作受到集群和索引阻塞的影響司浪。例如注冊和注銷倉庫需要編寫全局元數(shù)據(jù)訪問泊业。快照操作要求所有索引和全局元數(shù)據(jù)都是可讀的啊易,還原操作要求全局元數(shù)據(jù)是可寫的脱吱。但是在還原期間,索引級別的阻塞會被忽略认罩,因為索引基本上是在還原期間創(chuàng)建的箱蝠。請注意,倉庫內(nèi)容不是集群的一部分垦垂,所以集群阻塞不會影響到倉庫內(nèi)部操作如從已注冊的倉庫中列出或者刪除快照宦搬。