es實(shí)戰(zhàn)-數(shù)據(jù)備份snapshot

災(zāi)備相關(guān)知識(shí)點(diǎn)

RPO:最多可能丟失的數(shù)據(jù)的時(shí)長,即我們可以將數(shù)據(jù)恢復(fù)到什么時(shí)候,并且越接近現(xiàn)在(崩潰/丟失點(diǎn))越好。
RTO:從災(zāi)難發(fā)生到整個(gè)系統(tǒng)恢復(fù)正常所需要的最大時(shí)長。

好的RPO實(shí)現(xiàn):頻繁增量備份
好的RTO實(shí)現(xiàn):加快從快照恢復(fù)數(shù)據(jù)速度

ES snapshot 注意事項(xiàng)

  • 可在kibana的Snapshot and Restore功能模塊進(jìn)行操作
  • 不同快照間為增量式快照(節(jié)約時(shí)間空間),且刪除一個(gè)快照不會(huì)影響其他快照
  • SLM策略和集群執(zhí)行保留策略是兩個(gè)配置
  • 可以手動(dòng)執(zhí)行策略測試
  • 可以monitor后臺(tái)運(yùn)行的快照任務(wù)狀態(tài)
  • 刪除正在制作的快照可以結(jié)束制作過程并刪除文件
  • 刪除正在恢復(fù)的索引可以結(jié)束restore過程。
  1. 查看快照倉庫下全部快照信息:
GET /_snapshot/test_backup/_all
  1. 查看快照倉庫下正在制作快照信息:
GET /_snapshot/test_backup/_current
  1. 獲取快照運(yùn)行詳細(xì)狀態(tài)信息:
GET /_snapshot/_status
GET /_snapshot/test_backup/_status
GET /_snapshot/test_backup/snapshot_1/_status
  1. 查看 SLM 運(yùn)行狀態(tài)及計(jì)劃:
GET /_slm/policy?human
  1. 立刻執(zhí)行一次 SLM 計(jì)劃:
POST _slm/policy/nightly-snapshots/_execute
  1. 使用刪除快照 API 刪除或取消快照制作:
DELETE /_snapshot/test_backup/my_snapshot
  1. 清理倉庫刪除無用快照文件:
POST /_snapshot/test_backup/_cleanup
  1. SLM 定期清理策略執(zhí)行時(shí)間:每天凌晨5點(diǎn)執(zhí)行一小時(shí)
PUT _cluster/settings
{
    "persistent": {
        "slm.retention_schedule": "0 0 21 * * ?",
        "slm.retention_duration":"1h"
    }
}
  1. 跨集群數(shù)據(jù)遷移只讀集群配置:
PUT _snapshot/test_backup
{
    "type": "hdfs",
    "settings": {
        "path": "/user/quantum_social/es-snapshot/mz_bia_social/test_backup",
        "uri": "hdfs://10.11.1.1:8020",
        "readonly":true
    }
}
  1. 恢復(fù)快照到集群使用自定義索引名:
    將 my_snapshot 快照中的 caster 索引恢復(fù)為 test_caster 索引
POST /_snapshot/test_backup/my_snapshot/_restore
{
    "indices": "caster",
    "ignore_unavailable": true,
    "include_global_state": false,
    "rename_pattern": "(.+)",
    "rename_replacement": "test_$1",
    "include_aliases": false
}
  1. 查看索引的恢復(fù)狀態(tài)
GET /caster/_recovery?human
GET /_cat/shards/caster?v&s=state&h=index,shard,p,state,node,unassigned.reason
GET /_cluster/allocation/explain //查看分片未恢復(fù)的原因

快照相關(guān)集群設(shè)置:

snapshot.max_concurrent_operations
快照創(chuàng)建和刪除并發(fā)操作數(shù)限制

創(chuàng)建倉庫時(shí)可配置參數(shù):

max_snapshot_bytes_per_sec
節(jié)點(diǎn)級(jí)別快照制作速率限制,默認(rèn)40mb。
max_restore_bytes_per_sec
節(jié)點(diǎn)級(jí)別快照恢復(fù)速率限制,默認(rèn)無限制;同時(shí)受indices.recovery.max_bytes_per_sec參數(shù)影響,默認(rèn)40mb,7集群當(dāng)前配置120mb。
compress
是否壓縮元數(shù)據(jù),默認(rèn)為false
readonly
是否設(shè)置存儲(chǔ)庫為只讀,默認(rèn)為false

restore 速度相關(guān)配置參數(shù):

es 的 snapshot restore 操作由 snapshot 線程池控制的。這個(gè)線程池控制并發(fā)snapshot或者restore的線程的數(shù)量。一個(gè)shard需要綁定一個(gè)thread來進(jìn)行操作。此線程池大小受3個(gè)因素影響:

  • 機(jī)器可用processor數(shù)量,也既cpu核數(shù)。這個(gè)默認(rèn)是讀取機(jī)器配置。但是可以通過參數(shù)進(jìn)行配置。
  • thread_pool.snapshot.max
  • thread_pool.snapshot.core: 20
    restore 的并發(fā)分片數(shù)除了受到 snapshot 線程池控制之外,因?yàn)閞estore是與索引recover的機(jī)制相同,因此還受節(jié)點(diǎn)可并發(fā)恢復(fù)的主分片數(shù)量的限制。
    cluster.routing.allocation.node_initial_primaries_recoveries:默認(rèn)為4,限制了單節(jié)點(diǎn)同時(shí)recover/restore的主分片數(shù)為4。如果需要通過提高并行度從而加快restore過程,可增大此設(shè)置。
    注:可能存在 restore 并發(fā)數(shù)不足數(shù)據(jù)節(jié)點(diǎn)數(shù)×4的情況,因?yàn)榉制枰诠?jié)點(diǎn)均衡分布,某些節(jié)點(diǎn)提前完成,某些節(jié)點(diǎn)滯后。

FAQ:

  • 快照制作并發(fā)和速率限制?
    在運(yùn)行多個(gè)快照制作、量較大時(shí),會(huì)發(fā)現(xiàn)較多索引分片處于initializing狀態(tài);且會(huì)按啟動(dòng)順序阻塞快照制作和刪除任務(wù)。max_snapshot_bytes_per_sec 參數(shù)控制。

  • 多 SLM 策略設(shè)置同樣 schedule 是否存在問題?
    kibana 的 warning,對 ES 影響不大。資料1資料2

  • restore中出現(xiàn)部分分片無法恢復(fù)的情況
    在 restore 過程中,部分分片通過 GET _cat/shardsapi 查看處于UNASSIGNED狀態(tài)且其他分片均已恢復(fù)完成(即非等待恢復(fù)中而是不可恢復(fù))
    可通過GET /_cluster/allocation/explainapi 查看問題原因,并尋找解決辦法,多為分片分配限制配置的問題,例:
    索引index.routing.allocation.total_shards_per_node配置導(dǎo)致,每個(gè)節(jié)點(diǎn)分配分片數(shù)量。可在 restore api 中 index_settings 內(nèi)修改對應(yīng)參數(shù)進(jìn)行恢復(fù)。

  • 首次快照出現(xiàn)部分索引部分分片備份失敗情況
    由于網(wǎng)絡(luò)超時(shí),ES索引狀態(tài)和HDFS狀態(tài)等原因偶爾會(huì)出現(xiàn)部分索引的部分分片備份失敗的情況,再次運(yùn)行快照成功即可,無需糾結(jié)細(xì)節(jié)內(nèi)容。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容