【Elasticsearch】快照與恢復功能詳解

Elasticsearch 集群》系列,共包含以下文章:

  • 1?? 冷熱集群架構
  • 2?? 合適的鍋炒合適的菜:性能與成本平衡原理公式解析
  • 3?? ILM(Index Lifecycle Management)策略詳解
  • 4?? Elasticsearch 跨機房部署
  • 5?? 快照與恢復功能詳解
  • 6?? Elasticsearch 快照恢復 API 參數詳解
  • 7?? 安全地刪除快照倉庫、快照
  • 8?? 快照生命周期管理 SLM(理論篇)
  • 9?? 快照生命周期管理 SLM(實戰篇)
  • 🔟 跨集群檢索(Cross-Cluster Search)

😊 如果您覺得這篇文章有用 ?? 的話,請給博主一個一鍵三連 🚀🚀🚀 吧 (點贊 🧡、關注 💛、收藏 💚)!!!您的支持 💖💖💖 將激勵 🔥 博主輸出更多優質內容!!!

快照與恢復功能詳解

  • 1.核心概念
  • 2.核心價值與優勢
  • 3.關鍵組件詳解
    • 3.1 快照倉庫
    • 3.2 快照
    • 3.3 恢復
  • 4.最佳實踐與注意事項
  • 5.總結

快照與恢復(Snapshot and Restore)功能是構建健壯、可恢復的 Elasticsearch 集群的 核心基石,用于 災難恢復數據遷移版本升級回滾環境復制 等關鍵場景。

1.核心概念

  • 快照:是 Elasticsearch 集群狀態索引數據 在特定時間點的 只讀副本。它不是簡單的文件拷貝,而是利用 Elasticsearch 底層(Lucene)的特性高效捕獲數據。
  • 快照倉庫:快照存儲的位置。這是一個 持久化的共享存儲系統,集群所有節點都能訪問。Elasticsearch 不管理存儲的生命周期(如清理舊快照),需在倉庫層面管理。
  • 恢復:將存儲在快照倉庫中的一個或多個快照的數據和元數據 還原 到集群中的過程。可以恢復到原集群或新集群。

2.核心價值與優勢

  • 災難恢復:應對硬件故障、人為誤刪、軟件缺陷導致的數據損壞或丟失。
  • 數據遷移
    • 跨集群遷移(同版本或升級)。
    • 跨云遷移或混合云部署。
    • 從開發/測試環境遷移到生產環境。
  • 版本升級/回滾:在重大升級前創建快照,升級失敗可快速回滾到之前狀態。
  • 環境復制:將生產環境的數據快照恢復到測試或預發布環境,進行真實數據測試。
  • 長期歸檔:將不再頻繁訪問但仍需保留的數據(符合合規要求)歸檔到成本更低的存儲介質。
  • 增量高效
    • 首次快照:是全量備份。
    • 后續快照:默認是 增量 的!Elasticsearch 只會備份自上次快照以來 新增或修改的 Lucene 段文件。這極大地節省了存儲空間和備份時間。
  • 一致性保證:快照過程保證捕獲的是 一致的時間點視圖,即使索引正在被寫入。這是通過利用 Lucene 的不可變段文件特性實現的。
  • 靈活粒度
    • 可以備份 整個集群
    • 可以備份 特定的索引
    • 可以備份 特定的數據流
    • 可以包含 集群狀態(包含索引模板、ILM 策略、Ingest Pipeline、索引別名、持久化任務等元數據)。
  • 并行恢復:恢復操作可以在多個節點上并行執行,加快恢復速度。
  • 云原生支持:與主流對象存儲(AWS S3、Azure Blob Storage、Google GCS)深度集成,通過倉庫插件實現。

3.關鍵組件詳解

3.1 快照倉庫

  • 類型:由插件實現。常見類型:
    • 共享文件系統fs):NFS、SAN、NAS。需確保所有節點掛載到同一路徑,并有讀寫權限。
    • 對象存儲
      • AWS S3s3):通過 repository-s3 插件。
      • Azure Blob Storageazure):通過 repository-azure 插件。
      • Google Cloud Storagegcs):通過 repository-gcs 插件。
      • 兼容 S3 API 的存儲(如 MinIO、Ceph RGW):也可使用 s3 類型。
    • HDFShdfs):通過 repository-hdfs 插件。
  • 注冊:倉庫必須 先注冊 才能使用。注冊是集群級別的操作。
    PUT /_snapshot/my_backup_repo
    {"type": "s3","settings": {"bucket": "my-elasticsearch-backups","region": "us-west-1","access_key": "YOUR_ACCESS_KEY", // 推薦使用 IAM 角色或 Keystore"secret_key": "YOUR_SECRET_KEY", // 推薦使用 IAM 角色或 Keystore"base_path": "snapshots/prod_cluster" // 可選,倉庫內的路徑}
    }
    
  • 驗證
    • 檢查節點是否能連接倉庫:GET /_snapshot/my_backup_repo/_verify
  • 管理
    • 查看所有倉庫:GET /_snapshot
    • 刪除倉庫(不會刪除倉庫內快照數據):DELETE /_snapshot/my_backup_repo

3.2 快照

  • 創建
    PUT /_snapshot/my_backup_repo/my_snapshot_20230720?wait_for_completion=true
    {"indices": "index_1,index_2,data_stream_*", // 可選,默認備份所有 open 的索引和數據流"ignore_unavailable": true, // 忽略不存在的索引"include_global_state": true, // 可選,默認 true,是否包含集群狀態"partial": false // 可選,默認 false。true 允許部分索引備份成功(有未分配分片時)。生產環境慎用!
    }
    
    • wait_for_completion=true 會阻塞直到完成。大型集群建議設為 false,通過 API 監控進度。
  • 增量性:自動識別并僅備份新/改的段文件。倉庫維護一個快照鏈。
  • 監控
    • 查看特定快照狀態:GET /_snapshot/my_backup_repo/my_snapshot_20230720
    • 查看詳細進度和統計信息:GET /_snapshot/my_backup_repo/my_snapshot_20230720/_status
    • 查看所有正在運行的快照:GET /_snapshot/_status
  • 刪除
    • DELETE /_snapshot/my_backup_repo/my_snapshot_20230720
    • 重要: Elasticsearch 會清理 僅被該快照引用 的段文件。被其他快照共享的段文件不會被刪除。刪除是安全的操作。

3.3 恢復

  • 基本恢復
    POST /_snapshot/my_backup_repo/my_snapshot_20230720/_restore?wait_for_completion=false
    {"indices": "index_1,index_2", // 可選,默認恢復快照中所有索引"ignore_unavailable": true,"include_global_state": false, // 強烈建議設置為 false!除非明確需要恢復集群級設置"include_aliases": false, // 可選,是否恢復索引別名"index_settings": { // 可選,覆蓋恢復索引的設置"index.number_of_replicas": 0 // 例如恢復時先不加副本加快速度},"ignore_index_settings": ["index.refresh_interval"] // 可選,忽略某些設置
    }
    
  • 重命名索引 / 更改數據流:使用 rename_patternrename_replacement 參數在恢復時重命名索引或更改數據流名稱。
    POST /_snapshot/my_backup_repo/my_snapshot_20230720/_restore
    {"indices": "logs-prod-*","rename_pattern": "logs-prod-(.+)","rename_replacement": "logs-test-$1" // 將 logs-prod- 前綴改為 logs-test-
    }
    
  • 選擇性恢復:可以只恢復特定索引,甚至使用 include_aliasesindex_settings 精細控制。
  • 部分恢復:如果快照創建時允許 partial,即使有分片缺失也能恢復(數據不完整)。
  • 監控恢復
    • 恢復 API 返回的 task_id 可用于 GET /_tasks/{task_id}
    • 索引恢復狀態:GET /_recoveryGET /index_1/_recovery
    • 集群健康:GET /_cluster/health 關注 initializing_shardsrelocating_shards
  • 沖突處理:如果要恢復的索引在目標集群中 已存在且打開,恢復操作 默認會失敗。必須先關閉或刪除目標集群中的現有索引。

4.最佳實踐與注意事項

  • 倉庫選擇
    • 生產環境強烈推薦使用云對象存儲(S3GCSAzure Blob)或高度可靠的共享文件系統。 避免使用本地路徑。
    • 權限與安全:嚴格配置倉庫訪問權限(IAM 角色、存儲桶策略)。使用 Elasticsearch Keystore 存儲敏感憑證。
    • 生命周期管理:在存儲系統層面配置策略,自動歸檔或刪除舊快照(Elasticsearch 本身不自動清理)。
  • 快照策略
    • 定期快照:使用 Elasticsearch SLMSnapshot Lifecycle Management 自動化創建、保留和刪除快照。定義策略(如每小時、每天、每周),保留策略(如保留最后 303030 天快照,每周保留一個快照持續 121212 個月)。
    • 命名規范:使用清晰一致的命名(如 daily-20230720)。
    • 測試恢復!定期進行恢復演練 是確保備份有效性的唯一方法。恢復到隔離環境驗證。
  • 恢復策略
    • include_global_state: false 恢復生產快照到非生產環境時,幾乎總是將此設置為 false 避免覆蓋目標集群的模板、ILM 策略等關鍵配置。
    • 副本設置:恢復時臨時設置 index.number_of_replicas: 0 可以顯著加快恢復速度(數據只恢復一份)。恢復完成后,再調整副本數。
    • 資源規劃 :恢復是資源密集型操作(網絡 I/O、磁盤 I/O、CPU)。確保目標集群有足夠資源,避免影響線上業務。考慮在維護窗口進行。
    • 版本兼容性:快照具有 向后兼容性
      • 你可以將 N.x 的快照恢復到 >= N.x 的集群(例如 7.17 快照 → 8.10 集群)。
      • 不能N.x 的快照恢復到 < N.x 的集群(例如 8.10 快照 → 7.17 集群)。需要先恢復到同版本或更高版本,再使用 Reindex API 或 Logstash 等工具向下遷移。
  • 監控與告警
    • 監控 SLM 作業執行狀態(成功/失敗)。
    • 監控快照創建/恢復的持續時間、速度。
    • 監控倉庫存儲空間使用情況。
    • 設置告警規則(如快照連續失敗、倉庫空間不足)。
  • 性能考量
    • 快照/恢復速度受限于 網絡帶寬(到倉庫)和 存儲 I/O 性能(源/目標集群磁盤、倉庫)。
    • 大型集群的快照可能需要數小時。使用 wait_for_completion=false 并異步監控。
    • 調整 thread_pool(如 snapshotgeneric)大小需謹慎,評估對集群性能的影響。

5.總結

Elasticsearch 的快照與恢復是一個 強大、靈活且高效 的機制,是任何嚴肅的生產部署不可或缺的一部分。通過理解其增量備份原理、倉庫管理、SLM 自動化以及細致的恢復策略(特別是 include_global_state 的處理),Elasticsearch 工程師能夠構建可靠的數據保護、遷移和災難恢復方案。

🚀 切記:備份的價值只有在成功恢復時才能體現,因此定期的恢復演練至關重要。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90300.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90300.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90300.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

技嘉z370主板開啟vtx

技嘉z370vtx應該默認就是開啟狀態&#xff0c;雖然主板開啟的vtx但是系統默認設置會導致vtx不能使用 1. 關閉hyper-V,Windows虛擬機監控程序平臺,虛擬機平臺 控制面板->程序->啟用或關閉windows功能 2.以管理員身份運行CMD bcdedit /set hypervisorlaunchtype off 3.…

Springmvc的自動解管理

中央轉發器&#xff08;DispatcherServlet&#xff09;控制器視圖解析器靜態資源訪問消息轉換器格式化靜態資源管理一、中央轉發器Xml無需配置<servlet><servlet-name>chapter2</servlet-name><servlet-class>org.springframework.web.servlet.Dispatc…

C#_定時器_解析

問題一:這里加lock是啥意思?它的原理是, 為什么可以鎖住? private readonly Timer _timer;/// <summary>/// 構造函數中初始化定時器/// </summary>public FtpTransferService(){// 初始化定時器_timer new Timer(_intervalMinutes * 60 * 1000);_timer.Elapsed…

Trae開發uni-app+Vue3+TS項目飄紅踩坑

前情 Trae IDE上線后我是第一時間去使用體驗的&#xff0c;但是因為一直排隊問題不得轉戰Cursor&#xff0c;等到Trae出付費模式的時候&#xff0c;我已經辦了Cursor的會員&#xff0c;本來是想等會員過期了再轉戰Trae的&#xff0c;但是最近Cursor開始做妖了 網上有一堆怎么…

低代碼中的統計模型是什么?有什么作用?

低代碼開發平臺中的統計模型是指通過可視化配置、拖拽操作或少量代碼即可應用的數據分析工具&#xff0c;旨在幫助技術人員及非技術人員快速實現數據描述、趨勢預測和業務決策。其核心價值在于降低數據分析門檻&#xff0c;使業務人員無需深入掌握統計原理或編程技能&#xff0…

Linux 下在線安裝啟動VNC

描述 Linux中的VNC就類似于Windows中的遠程桌面系統 本文只記錄在Cent OS 7的系統下在線安裝VNC。 安裝VNC 1、安裝VNC yum install tigervnc-server2、配置VNC的密碼 為用戶設置 VNC 密碼&#xff08;首次運行會提示輸入&#xff0c;也可以提前輸入&#xff09; vncpasswd密碼…

支持OCR和AI解釋的Web PDF閱讀器:解決大文檔閱讀難題

支持OCR和AI解釋的Web PDF閱讀器&#xff1a;解決大文檔閱讀難題一、背景&#xff1a;為什么需要這個工具&#xff1f;問題場景解決方案二、技術原理&#xff1a;如何實現這些功能&#xff1f;1、核心技術組件2、工作流程3、關鍵點三、操作指南1、環境準備2、生成Html代碼3、We…

研發過程都有哪些

產品規劃與定義 (Product Planning & Definition) 在詳細的需求調研之前&#xff0c;通常會進行市場分析、競品分析、確立產品目標和核心價值。這個階段決定了“我們要做什么”以及“為什么要做”。 系統設計與架構 (System & Architectural Design) 這是開發的“藍圖”…

舊物回收小程序系統開發——開啟綠色生活新篇章

在當今社會&#xff0c;環保已經成為全球關注的焦點話題。隨著人們生活水平的提高&#xff0c;消費能力不斷增強&#xff0c;各類物品的更新換代速度日益加快&#xff0c;大量舊物被隨意丟棄&#xff0c;不僅造成了資源的巨大浪費&#xff0c;還對環境產生了嚴重的污染。在這樣…

UE5 UI 水平框

文章目錄slot區分尺寸和對齊方式尺寸&#xff1a;自動模式尺寸&#xff1a;填充模式對齊常用設置所有按鈕大小一致&#xff0c;不受文本影響靠右排列和unity的HorizontalLayout不太一樣slot 以在水平框中放入帶文字的按鈕為例 UI如下布置 按鈕的大小受slot的尺寸、對齊和內部…

【Golang】Go語言變量

Go語言變量 文章目錄Go語言變量一、Go語言變量二、變量聲明2.1、第一種聲明方式2.2、第二種聲明方式2.3、第三種聲明方式2.4、多變量聲明2.5、打印變量占用字節一、Go語言變量 變量來源于數學&#xff0c;是計算機語言中能存儲計算結果或能表示值抽象的概念變量可以通過變量名…

Qt WebEngine Widgets的使用

一、Qt WebEngine基本概念Qt WebEngine中主要分為三個模塊&#xff1a;Qt WebEngine Widgets模塊&#xff0c;主要用于創建基于C Widgets部件的Web程序&#xff1b;Qt WebEngine模塊用來創建基于Qt Quick的Web程序&#xff1b;Qt WebEngine Core模塊用來與Chromeium交互。網頁玄…

【C++】標準模板庫(STL)—— 學習算法的利器

【C】標準模板庫&#xff08;STL&#xff09;—— 學習算法的利器學習 STL 需要注意的幾點及 STL 簡介一、什么是 STL&#xff1f;二、學習 STL 前的先修知識三、STL 常見容器特點對比四、學習 STL 的關鍵注意點五、STL 學習路線建議六、總結七、下一章 vector容器快速上手學習…

YOLO算法演進綜述:從YOLOv1到YOLOv13的技術突破與應用實踐,一文掌握YOLO家族全部算法!

引言&#xff1a;介紹目標檢測技術背景和YOLO算法的演進意義。YOLO算法發展歷程&#xff1a;使用階段劃分方式系統梳理各代YOLO的技術演進&#xff0c;包含早期奠基、效率優化、注意力機制和高階建模四個階段。YOLOv13的核心技術創新&#xff1a;詳細解析HyperACE機制、FullPAD…

快速將前端得依賴打為tar包(yarn.lock版本)并且推送至nexus私有依賴倉庫(筆記)

第一步創建js文件 文件名為downloadNpmPackage.jsprocess.env.NODE_TLS_REJECT_UNAUTHORIZED "0";const fs require("fs"); const path require("path"); const request require("request");// 設置依賴目錄 const downUrl "…

Unity VS Unreal Engine ,“電影像游戲的時代” 新手如何抉擇引擎?(結)

Unity VS Unreal Engine &#xff0c;“電影像游戲的時代” 新手如何抉擇引擎&#xff1f;(1)-CSDN博客 這是我的上一篇文章&#xff0c;如果你仍然困惑選擇引擎的事情&#xff0c;我們不妨從別的方面看看 注意&#xff1a;我們可能使用"UE5"來表示Unreal Engine系…

EVAL長度限制突破方法

EVAL長度限制突破方法 <?php $param $_REQUEST[param]; If (strlen($param) < 17 && stripos($param, eval) false && stripos($param, assert) false) //長度小于17&#xff0c;沒有eval和assert關鍵字 {eval($param); } //stripos — 查找字符串…

Linux部署.net Core 環境

我的環境 直接下載安裝就可以了 wget https://builds.dotnet.microsoft.com/dotnet/Sdk/8.0.315/dotnet-sdk-8.0.315-linux-x64.tar.gzmkdir -p $HOME/dotnet && tar zxf dotnet-sdk-8.0.315-linux-x64.tar.gz -C $HOME/dotnet export DOTNET_ROOT$HOME/dotnet expor…

ARM-定時器-PWM通道輸出

學習內容需求點亮4個燈&#xff0c;采用pwm的方式。定時器通道引腳AFLED序號T3CH0PD12AF2LED5CH1PD13AF2LED6CH2PD14AF2LED7CH3PD15AF2LED8實現LED5, LED6, LED7, LED8呼吸燈效果通用定時器多通道點亮T3定時器下的多個通道的燈。開發流程添加Timer依賴初始化PWM相關GPIO初始化P…

javaSE(List集合ArrayList實現類與LinkedList實現類)day15

目錄 List集合&#xff1a; 1、ArrayList類&#xff1a; &#xff08;1&#xff09;數據結構&#xff1a; &#xff08;2&#xff09;擴容機制 &#xff08;3&#xff09;ArrayList的初始化&#xff1a; &#xff08;4&#xff09;ArrayList的添加元素方法 &#xff08;5…