喬叔的 Elastic Stack 專業教育訓練
  • 喬叔的 Elastic Stack 專業教育訓練
  • 🧑關於喬叔 (Joe Wu)
  • Elastic 課程公開班
    • 🎯Elasticsearch 基礎實務班
      • 💯學員課後回饋
    • 🆕Elasticsearch 進階運維班
      • 💯學員課後回饋
    • Elasticsearch 進階開發班
    • Elastic Stack 基礎實務班
    • Elastic Observability 基礎實務班
    • 📩課程許願池
  • 技術分享
    • 📗喬叔帶你上手 Elastic Stack
      • 前言
      • Elastic Cloud 如何建立 Deployment
        • ES Node 的種類
        • 配置的選擇
      • Index 建立前你該知道的
        • ES Index 如何被建立
        • ES 的超前佈署 - Dynamic Mapping
        • ES 的超前佈署 - Index Template
        • ES Index 的別名 (Alias)
        • 管理你的 Index - Kibana Index
      • 管理 Index 的 Best Practices
        • Shard 的數量與 Rollover & Shrink API
        • 三溫暖架構 - Hot Warm Cold Architecture
        • Index Lifecycle Management (ILM)
        • Rollup
        • Transform
        • Snapshot Lifecycle Management (SLM)
        • 總結
      • Elastic Cloud 比免費版還多的功能
        • Elastic Stack 的方案比較與銷售方式
        • Centralized Beats Management
        • Centralized Pipeline Management
        • Watcher
        • Elasticsearch Token Service
        • Multi-stack monitoring & Automatic stack issue alerts
      • 向 App Search 學習怎麼用 Elasticsearch
        • 揭開 App Search 的面紗
        • Engine 的 Index Settings 篇
        • Engine 的 Mapping 篇
        • Engine 的 Search 基礎剖析篇
        • Engine 的 Search 進階剖析篇
      • Elasticsearch 的優化技巧
        • Indexing 索引效能優化
        • Searching 搜尋效能優化
        • Index 的儲存空間最佳化
        • Shard 的最佳化管理
      • 完賽心得
    • 📘喬叔帶你上手 Elastic Stack - 探索與實踐 Observability 系列
      • 前言 & 淺談 Observability
      • Elastic 的 Observability 解決方案
      • Uptime - 掌握系統的生命徵象
        • 我們要觀測的生命徵象是什麼?
        • 使用 Heartbeat 收集系統生命徵象數據
        • 透過 Kibana 觀看心電圖及設定警報
        • 使用合成監控 (Synthetics Monitor) 從使用者情境驗證服務的運作狀態
      • Metrics - 觀察系統的健康指標
        • Metrics 與 Metricbeat 的基本介紹
        • 使用 Metricbeat 掌握 Elastic Stack 的健康狀態
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Host 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Docker 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Kubernetes 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 AWS 篇
      • Logs - 挖掘系統內部發生的狀況
        • Logs 與 Filebeat 的基本介紹
        • 使用 Filebeat 應該要了解的設計細節與原理
        • 透過 Filebeat 收集 Elastic Stack 中各種服務的細節資訊
        • 透過 Filebeat 收集 Infrastructure 中各種服務的細節資訊
      • Traces - 觀察應用程式的效能瓶頸
        • Elastic APM 基本介紹
        • 使用 APM-Integratoin-Testing 建立 Elastic APM 的模擬環境
        • 如何在 Kibana 使用 APM UI
        • 使用 APM Server 來收集 APM 數據
        • 透過 APM Agents 收集並傳送後端服務運作的記錄
        • 透過真實使用者監控 (RUM, Real User Monitoring) 來改善使用者體驗
      • 建立結構化的 Log
        • Elastic Common Schema 結構化 Log 的規範
        • Elasticsearch Ingest Pipeline 資料 Index 前的轉換好幫手
          • 基本介紹
          • 各種常用的 Processor
          • Enrich 資料與例外處理
      • 有效的使用 Observability 的資料
        • 透過 Machine Learning 發現異常的問題
        • 使用 Kibana Alerts 主動通知異常狀況
        • 資料的生命週期管理
        • 使用 Elastic Observability 追縱及觀察問題的心得
      • 完賽心得
    • 😀Elasticsearch 技術分享小品
      • 🤖Elastic 與 AI
        • Elasticsearch Inference API 讓我們直接在 ES 裡運用 OpenAI Completion API
    • 🎥線上分享
      • 喬叔 Elasticsearch Index 管理與效能優化技巧
      • Elastic Certification 認證經驗分享
    • 🛠️workshop
      • 如何在 Elasticsearch 實現敏捷的資料建模與管理 @ DevOpsDays 2023
        • 工作坊實作內容
      • Elastic Observability 實作體驗坊 @ DevOpsDays 2022
        • 行前準備
        • 工作坊實作內容
      • 當 Elasticsearch 搜尋引擎遇上 AI @ HelloWordDevConference 2024
        • 投影片
        • Elasticsearch 環境準備
        • Google Colab 環境準備
        • 工作坊操作說明
        • ElasticSearch Relevance Engine (ESRE)
    • ⬆️Elastic Stack 版本升級記錄
      • 🔍Elasticsearch
  • 其他專業服務
    • 👩‍🎓企業包班 | 企業內訓
    • 👨‍💼顧問服務
    • 🈺專案合作
    • 🧩Elastic 授權代理
  • 相關連結
    • Facebook 粉絲頁
Powered by GitBook
On this page
  • 前言
  • 進入此章節的先備知識
  • 此章節的重點學習
  • Snapshot
  • Repository
  • 建立 Snapshot Policy
  • 查看 Snapshot Policy 的執行狀況
  • Restore 復原某個版本的資料
  • 檢視 Restore 的結果
  • Restore 的版本的支援度
  • 參考資料
  1. 技術分享
  2. 喬叔帶你上手 Elastic Stack
  3. 管理 Index 的 Best Practices

Snapshot Lifecycle Management (SLM)

PreviousTransformNext總結

Last updated 2 years ago

前言

這個系列的文章前面主要介紹的都是如何優化 Index 的儲存空間、執行效率…等各種優化,最後這一部份是資料的備份,雖然 Elasticsearch Cluster 可以有許多的 Nodes, 也能設置多份的 Replica 來確保資料的可靠性,但是定期的資料備份還是不能少的,能有效在發生災難時能救回資料,例如: 這樣的事件。

進入此章節的先備知識

  • Elasticsearch Index 的相關基本知識。

  • 若備份在雲端儲存空間的話 (例如 AWS S3),會要知道這些雲端儲存空間的基本知識。

此章節的重點學習

  • Snapshot / Restore 的使用方式。

  • 如何在 Kibana 建立 Snapshot Policy,以及使用 AWS S3 Repository。


Snapshot

Snapshot 是 Elasticsearch 用來備份的方式,這邊要注意一件事,如果你打算備份 Elasticsearch 的資料,千萬不要自己從磁碟區去備份 Elasticsearch 的 data 資料夾內的資料,因為有很大的機率當你要復原時,Elasticsearch 在啟動的檢查中會告訴你資料是毀損的,因此在 Elasticsearch 要備份資料,請使用 Snapshot。

Repository

使用 Snapshot 的時候,第一個要先決定你備份的資料要存哪邊,所以要先產生 Repository。

Repository 主要支援的類型有下面幾種:

  • fs: shared file system,要使用 file system 來建立 Repository 的話,要先在 elasticsearch.yml 設定檔中指定好 path.repo 的路徑。

在 Elastic Cloud 中增加其他 Azure 和 GCP 的 Repository 支援

若是在 Elastic Cloud 中要使用其他的 Repository 時,要先到 Deployement 中去安裝 Plugins。

在 Elasticsearch plugins, extensions, and settings 的區塊展開後,就可以看到 repository 的 plugins 可以選擇。

建立 Repository

安裝好之後,在 Kibana > Stack Management 裡 Data 區塊的 Snapshot and Restore 就可以 Register a repository。

這就就可以看到 Azure, GCS, AWS S3 的支援了。

這邊以 AWS S3 為例,先在自己的 AWS S3 上建立一個 bucket,然後設定好 IAM 權限:

{
  "Statement": [
    {
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::bucket-name",
        "arn:aws:s3:::bucket-name/*"
      ]
    }
  ]
}

然後再透過 Elastic Cloud 的 Console (不是 Kibana 哦!),進入 Security 將 IAM 的 Access Key & Secret Key 設定在 Keystore 中。

注意,格式上是 s3.client.{client}.access_key 和 s3.client.{client}.secret_key 。

這個 client 是回到 Kibana Register repository 時要指定的自訂的 client 名字。

接下來就繼續將 Register Repository 的步驟走完。

建立完成後,也可以點擊 Repository ,並選擇右方的 Verify repository 確認是否能正常存取。

建立 Snapshot Policy

決定好備份要儲存的 Repository 後,接下來就可以開始建立 Snapshot Policy 了,這是一個可以定時自動備份,並且決定 Snapshot 要保留多少份、保留多久的機制。

進入 Create Policy 後,設定 policy 的名字、 Snapshot 的名字,以及選擇要用哪一個 Repository,最後是決定定期的週期規則。

Repository 一但被某一個 Policy 使用後,就不能重覆被另一個 Policy 使用。

再來是選擇要備份的 index 或是 Data stream,以及相關的設定。

Shapshot retention 是設定備份要保留多久,以及最少保留的份數及最多保留的份數。

最後確認一切設置正確後,即可建立。

查看 Snapshot Policy 的執行狀況

建立完成後,可以直接 Run Policy,並且在 Snapshots 分頁中去看執行的狀態。

進入 AWS S3 也可以看到 snapshot 的資料被寫入。

Restore 復原某個版本的資料

在 Snapshots 的畫面中,可以找到你想要回復的那份 Snapshot,並點選後面的 Restore 按紐。

Restore 時,可以指定要針對哪些特定的 Index,甚至可以改變 restore 之後的名字 (支援 Regular expression group 的方式來取代名字)。

再來 Index Settings 的部份,可以修改 index settings 甚至是清除原先 Snapshot index 中的某些 index settings。

確認沒問題後直接進行 Restore snapshot。

檢視 Restore 的結果

在 Restore Status 的頁面中,可以看到執行的 Restore 進度與結果。

Restore 完成後,我們確認一下這個 Index restored_logstash-10 的確已經被復原回來了。

Restore 的版本的支援度

這邊要先注意,Restore 是不允許到舊版的 Elasticsearch Cluster 中,也就是 7.6 版的 snapshot 不能 restore 到 7.5 版的環境。

再來要 Restore 到新版本的 Elasticsearch 的話,請參考下面的表格:

只有在這表格支援的版本才能進行 restore。

如果真的要 restore 到版本差異較大的環境時,能做的方法是先 restore 到最新支援 restore 的版本,再來透過遠端 reindex 的方式來進行資料的搬移。

參考資料

repository-s3: 以 AWS S3 來當 Repository, 要另外安裝 。

repository-hdfs: 以 Hadoop HDFS 來當 Repository, 要另外安裝 。

repository-gcs: 以 Google Cloud Storage 來當 Repository, 要另外安裝 。

repository-azure: 以 Azure 來當 Repository, 要另外安裝 。

repository-swift: 這是 ,是社群開發、非官方的,也是要另外安裝。

ec edit deployement
ec install plugins
register a repository
image-20200929013923134
Screen Shot 2020-09-29 at 2.04.10 AM
image-20200929020623597
repositories
snapshot policy overview
create policy
image-20200929021107559
image-20200929021135240
create snapshot policy review
taking snapshot
aws s3 repository
Screen Shot 2020-09-29 at 2.36.15 AM
restore 1
image-20200929023902608
image-20200929024657214
restore result
image-20200929024828659
snapshot restore version matrix

📗
微軟 6.5T 的 Elasticsearch 料被駭客刪了
官方的 Plugin
官方的 Plugin
官方的 Plugin
官方的 Plugin
OpenStack Swift 的 Repository 擴充套件
官方文件 - Snapshot and restore
官方文件 - Snapshot/Restore Repository Plugins