【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.刪除快照

在上一篇博文《【Elasticsearch】快照與恢復功能詳解》中,我們針對 Elasticsearch 的快照和恢復功能進行的講解。細心的同學可能會對以下的命令產生疑惑,直接刪除是安全的嗎?本文將會給你答案。

  • 刪除倉庫:DELETE /_snapshot/my_backup_repo
  • 刪除快照:DELETE /_snapshot/my_backup_repo/my_snapshot_20230720

1.刪除倉庫

當你執行 DELETE /_snapshot/my_backup_repo 這個命令時,你是在 Elasticsearch 集群中刪除 my_backup_repo 這個快照倉庫的注冊信息或定義。

關鍵點在于:

  • 刪除的是“注冊信息”,不是物理數據:這個操作 不會 刪除存儲在實際后端存儲系統(比如 AWS S3 桶、Azure Blob 容器、NFS 共享目錄等)中的 任何快照文件或數據
  • 后果:
    • Elasticsearch 集群將不再知道存在名為 my_backup_repo 的倉庫。
    • 你無法再通過 Elasticsearch API 來 查看、創建、恢復或刪除 這個倉庫中的任何快照(因為集群不知道它了)。
    • 無法再通過 Elasticsearch 管理 存儲在該位置的歷史快照。
  • 物理數據依然存在:你使用這個倉庫創建的所有快照文件(my_snapshot_1, my_snapshot_2 等)仍然 安全地躺在 你配置的 S3 桶、Azure 容器、共享文件系統路徑等地方。
  • 為什么設計成這樣?這是一種安全機制。防止管理員在 Elasticsearch 中誤操作刪除倉庫命令時,導致寶貴的備份數據被物理刪除。真正的數據刪除需要直接操作底層存儲系統。
  • 如何真正刪除快照數據?
    • 如果你想 徹底刪除快照數據以釋放存儲空間,你必須在 刪除倉庫注冊信息之前,使用 Elasticsearch API 先刪除倉庫內的具體快照:DELETE /_snapshot/my_backup_repo/my_snapshot_20230720。這個命令會通知 Elasticsearch 去清理倉庫中該快照專用的、不再被其他快照引用的數據段。
    • 或者,在 刪除了倉庫注冊信息之后,你只能 直接登錄到你的存儲系統(如 AWS S3 控制臺、Azure 門戶、NFS 服務器),手動找到對應的目錄/路徑并刪除里面的文件。這需要你非常清楚倉庫在存儲系統中的具體位置(比如 S3 桶里的 snapshots/prod_cluster 路徑)。

簡單比喻:

想象你的快照倉庫是一個圖書館(物理存儲)。DELETE /_snapshot/my_backup_repo 這個操作相當于:

  • 把圖書館的 地址登記簿 上關于 my_backup_repo 圖書館的那一頁 撕掉了
  • 圖書館管理員(Elasticsearch)忘記了這個圖書館的存在,再也不能幫你從里面借書(管理快照)。
  • 但是,圖書館大樓本身和里面所有的書(你的快照數據)都完好無損地還在原地!只是管理員不知道它在哪里,也無法幫你管理里面的書了。

總結:執行 DELETE /_snapshot/my_backup_repo 只會移除 Elasticsearch 集群內部對這個倉庫的配置和認知,絕不會觸碰存儲在外部(如 S3、NAS)的實際快照數據文件。 要清理物理存儲空間,必須在刪除倉庫定義前通過 API 刪除快照,或在刪除倉庫定義后直接操作底層存儲系統。

2.刪除快照

  • DELETE /_snapshot/my_backup_repo/my_snapshot_20230720
  • Elasticsearch 會清理 僅被該快照引用 的段文件。被其他快照共享的段文件不會被刪除。刪除是安全的操作。

上面這段話解釋了執行 DELETE /_snapshot/my_backup_repo/my_snapshot_20230720 命令刪除 單個快照 時,Elasticsearch 在 底層存儲層面 的智能行為和安全機制。核心是理解 “增量快照”“段文件共享” 的原理。

解析:

  • DELETE /_snapshot/my_backup_repo/my_snapshot_20230720
    • 這是刪除名為 my_backup_repo 的快照倉庫中,名為 my_snapshot_20230720 的特定快照的命令。
  • Elasticsearch 會清理僅被該快照引用的段文件
    • 段文件(Segment Files):Elasticsearch(底層是 Lucene)將索引數據存儲在不可變的段文件中。寫入操作會產生新的段,后臺會合并小的段成大的段。
    • 增量快照:快照是增量的。首次快照備份所有相關的段文件。后續快照只備份 自上次快照以來新創建或修改的段文件舊的、未修改的段文件在倉庫中只有一份物理存儲,但會被多個快照邏輯引用。
    • 僅被該快照引用:當刪除一個快照時,Elasticsearch 會檢查倉庫中哪些段文件 只有 這個即將被刪除的快照在使用(引用)。這些段文件不再被任何其他快照需要,因此是 “孤立” 的,可以安全地從物理存儲中刪除以釋放空間。
    • 清理:指物理刪除這些不再被任何快照引用的段文件。
  • 被其他快照共享的段文件不會被刪除
    • 如果一個段文件存在于多個快照中(例如,它是一個在 my_snapshot_20230720 創建之前就存在且從未修改過的段,被 my_snapshot_20230720 和更早的快照如 my_snapshot_20230713 共同引用),那么刪除 my_snapshot_20230720 不會 刪除這個共享的段文件。
    • 因為其他快照(如 my_snapshot_20230713)仍然需要它。只有該快照獨有的段文件才會被清理。
  • 刪除是安全的操作
    • 不會誤刪共享數據:如上所述,被其他快照共享的基礎數據會被保留,確保其他快照的完整性和可恢復性。
    • 精準釋放空間:只刪除真正不再需要的、孤立的段文件,有效釋放存儲空間。
    • 不影響其他快照:刪除一個快照不會破壞或影響倉庫中其他快照的完整性。其他快照仍然可以正常恢復。
    • 操作冪等性(通常):如果嘗試刪除一個不存在的快照,命令通常會返回一個錯誤(如 404),不會造成意外后果。重復刪除同一個快照(如果第一次成功)通常也會報錯(404),不會執行額外操作。

核心概念圖示:

想象快照倉庫里存儲的是樂高積木(段文件):

  • 1?? 首次快照 → Snap1:備份了構建城堡 A 所需的所有積木(Block1、Block2、Block3)。

  • 2?? 第二次快照 → Snap2:城堡 A 只在頂部加了一個新塔尖(Block4)。Snap2 只需備份新的 Block4。Snap2 的完整城堡由 [Block1, Block2, Block3 (引用自Snap1), Block4] 組成。

  • 3?? 第三次快照 → Snap3:城堡 A 被改造成了飛船,替換了底座(Block5),保留了部分舊墻(Block2)。Snap3 備份新的 Block5 和修改過的 Block2(可能是一個新版本的 Block2)。Snap3 的飛船由 [Block2(新版本), Block3 (引用自Snap1), Block5] 組成。舊的 Block1 和 Block4 不再被引用。

    • 物理存儲:所有積木(Block1/2/3/4/5/2’)實際只存儲一份
    • 邏輯引用
      • Snap1 → 引用基礎積木 Block1/2/3
      • Snap2 → 引用共享積木 Block1/2/3 + 獨有 Block4
      • Snap3 → 引用共享積木 Block3 + 新積木 Block2’/5
  • 4?? 刪除 Snap2

    • Snap2 獨有的積木是 Block4(因為 Snap1 沒有它,Snap3 也不需要它)。
    • Snap2 和其他快照 共享 的積木是 Block1, Block2(舊), Block3 (它們還被 Snap1 或 Snap3 引用)
    • 結果:執行 DELETE /_snapshot/repo/Snap2 后,檢查引用計數:
      • Block4 僅被 Snap2 引用 → 刪除(物理刪除)
      • Block1 還被 Snap1 引用 → 保留
      • Block2(舊) 還被 Snap1 引用 → 保留
      • Block3 被 Snap1/Snap3 引用 → 保留
    • Snap1 和 Snap3 仍然完整可用。

總結理解的關鍵點在于:

  • 增量性與共享:快照不是獨立的完整拷貝,它們共享未修改的底層數據段。
  • 引用計數:Elasticsearch 內部維護著倉庫中段文件被哪些快照引用的信息。
  • 智能清理:刪除快照時,只清理 引用計數降為 0(即不再被任何快照引用)的段文件。
  • 安全保證:這種基于引用計數的清理機制確保了:
    • 刪除一個快照不會破壞其他快照。
    • 空間得到有效釋放(刪除孤立數據)。
    • 操作不會導致意外數據丟失(只刪該刪的)。

因此,你可以放心地刪除舊的或不必要的快照來管理倉庫存儲空間,而不用擔心會破壞其他快照或丟失仍然需要的基礎數據。這就是 “刪除是安全的操作” 的含義。

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

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

相關文章

nodejs的npm

1. 什么是 npm? npm(Node Package Manager) 是 Node.js 的默認包管理工具,用于: 安裝和管理依賴(第三方庫、框架等)。運行項目腳本(如啟動服務、測試、構建等)。發布和共…

外網訪問內部私有局域網方案,解決運營商只分配內網IP不給公網IP問題

相信不少網友和我一樣,為了實現遠程控制、NAS訪問、組建私有云、攝像頭監控之類的需求,把光貓改成了橋接模式,并用自己的路由器撥號、進行端口了映射。本人之前一直用著沒啥問題,不過,最近突然出現了無法訪問的情況&am…

大模型——上下文工程 (Context Engineering) – 現代 AI 系統的架構基礎

上下文工程 (Context Engineering) – 現代 AI 系統的架構基礎 最近,AI大神 Andrej Karpathy 在YC的一個演講《Software in the era of AI 》帶火了一個新的概念 Context Engineering,上下文工程,LangChain也于7月2號在官網博客發表以《Context Engineering》為題目的文章(h…

PostgreSQL RelationBuildTupleDesc 分解

/** RelationBuildTupleDesc** Form the relations tuple descriptor from information in* the pg_attribute, pg_attrdef & pg_constraint system catalogs.*///從pg_attribute,pg_attrdef和pg_constraint 獲取字段信息以填充relation->rd_att static void //用到的…

在 Alpine Linux 中創建虛擬機時 Cgroup 掛在失敗的現象

現象:在 Alpine Linux 中部署 LXD或者incus 服務后,創建 容器或者虛擬機時提示 實例啟動失敗、退出代碼為1:查詢啟動日志后,發現是 cgroup 掛載失敗導致了 container 拉起失敗。原因分析:從啟動日志上看,是…

讓UV管理一切!!!

一、遇到的問題 自己在做AI開發的時候,先用的conda來管理虛擬環境,然后使用pip freeze > reqiurments來打包相關依賴。 優點,conda環境可以讓不同的項目有單獨的虛擬環境,不會干擾每個項目,還可以多個項目共享一個…

Jmeter使用 - 2

5 參數化 5.1 自定義變量 線程組 --> 配置元件 --> 用戶定義的變量 可以自定義變量,通過 ${變量名} 使用 5.2 隨機函數 隨機數函數 # 生產六位數的隨機數字 ${__Random(100000,999999,)} # 生成隨機時間: 時間格式yyyy-MM-dd,開始時間,結束時間,設置時區…

部署 Zabbix 企業級分布式監控

目錄 一、監控系統的功能概述 1、監控的定義 2、監控的五個層次 (1)基礎設施監控 (2)系統層監控 (3)應用層監控 (4)業務監控 (5)端用戶體驗監控 二、…

Silly Tavern 教程②:首次啟動與基礎設置

本文介紹 Silly Tavern 首次啟動后的基礎設置,包括語言切換與 AI 后端連接,重點推薦 無需付費即可使用的免費或低成本方案,涵蓋 Groq、AI Horde、Gemini 和 OpenRouter。 一、啟動 Silly Tavern 并訪問界面 完成安裝后,執行以下命…

C#解析JSON數據全攻略

還在為C#處理網絡API返回的復雜JSON數據頭疼嗎?據統計,90%的開發者都曾在JSON解析上栽過跟頭! 本文將手把手教你用C#輕松玩轉JSON數據:- HttpClient獲取網絡JSON數據- System.Text.Json動態解析技巧- 強類型模型轉換實戰- 特殊字…

8-大語言模型—指令理解:基于 LoRA 的大語言模型指令微調框架

目錄 1、模型上下文窗口 1.1、增加上下文窗口的微調(Fine-tuning for Longer Context) 1.1.1、 核心目標 1.1.2、關鍵步驟 (1)數據準備:構建長文本訓練集 (2)微調策略:分階段適…

工業數據中臺:PLC、SCADA、MES 的實時協同架構

在智能制造升級過程中,工業數據的互聯互通是突破生產效率瓶頸的關鍵。PLC(可編程邏輯控制器)掌控著設備的實時運行參數,SCADA(監控與數據采集系統)負責車間級的狀態監控,MES(制造執行…

【Golang】Go語言基礎語法

Go語言基礎語法 文章目錄Go語言基礎語法一、Go標記二、行分隔符三、注釋四、標識符五、字符串連接六、關鍵字七、Go語言的空格八、格式化字符串一、Go標記 Go程序可以由多個標記組成嗎,可以是關鍵字、標識符、常量、字符串、符號。如下Go語句由6個標記組成&#xf…

WebRTC指紋——深度分析(中篇)

1. 引言 在上篇中,我們建立了WebRTC審查規避系統分析的理論基礎,探討了技術背景和威脅模型。中篇將深入分析WebRTC協議棧中的具體識別特征,通過對多個主流WebRTC應用的實際協議分析,揭示不同實現之間存在的顯著差異。 這些協議層面的特征差異構成了審查系統進行指紋識別的…

谷粒商城篇章13--P340-P360--k8s/KubeSphere【高可用集群篇一】

1 k8s 1.1 簡介 Kubernetes 簡稱 k8s。 是用于自動部署, 擴展和管理容器化應用程序的開源系統。 中文官網: https://kubernetes.io/zh/ 中文社區: https://www.kubernetes.org.cn/ 官方文檔: https://kubernetes.io/zh/docs/h…

從零搭建 OpenCV 項目(新手向)-- 第二天 OpenCV圖像預處理(一)

目錄 一、圖像翻轉(鏡像翻轉) 1. 定義 2. OpenCV 函數 3. 數學表達 二、圖像仿射變換 1. 定義 2. 仿射變換的基本原理 3. OpenCV 函數 4. 圖像旋轉 5. 圖像平移 6. 圖像縮放 7. 圖像剪切 8. 為什么會出現黑色背景? 三、圖像色彩…

貪心算法Day6學習心得

第一道:738. 單調遞增的數字 - 力扣(LeetCode) 這道題目暴力算法肯定是最容易想到的,先附上暴力的代碼: class Solution { private:// 判斷一個數字的各位上是否是遞增bool checkNum(int num) {int max 10;while (n…

數據的評估與清洗篇---上手清理索引和列名

重命名索引和列名 在讀取數據時,如果我們發現數據的索引或者列名亂七八糟的,可以使用DataFrame的rename方法對它們進行重新命名。 df1.rename(index={...})df1.rename(columns={...}) 重命名索引 如果想改索引就把可選參數index指定為一個字典,針對索引,把要修改…

【ICML2025】時間序列|TimePro:炸裂!線性復雜度實現高效長程多元時間序列預測!

論文地址:https://arxiv.org/pdf/2505.20774 代碼地址:https://github.com/xwmaxwma/TimePro 為了更好地理解時間序列模型的理論與實現,推薦參考UP “ThePPP時間序列” 的教學視頻。該系列內容系統介紹了時間序列相關知識,并提供配…

2025真實面試試題分析-iOS客戶端開發

以下是對iOS客戶端開發工程師面試問題的分類整理、領域占比分析及高頻問題精選(基于??85道問題,總出現次數118次??)。按技術領域整合為??7大核心類別??,按占比排序并精選高頻問題標注優先級(1-5🌟&…