Elastic Cloud Snapshots 雲端資料備份與恢復

Lin Yen-Cheng on 2020-09-25 5 min. read

還在把資料備份到謎之 D 槽嗎? 現在都什麼時候了? 2020 年,這篇文章將提到怎麼利用現代科技進行資料的備份與恢復,Elastic 提供的快照功能,搭配對應的 plugins 能將資料備份到不同的雲端儲存服務。

Elastic Cloud Snapshots

為什麼備份跟快照很重要?

  • 快照可以在不影響系統運行的狀況下做快速且低成本的備份
  • 遇到病毒感染或錯誤可以用最快的速度恢復系統運行,通常做快照跟備份的位置會是不同的機台與服務,所以當主要的虛擬機被打掛了,快照跟備份還會活得好好的

Elastic Snapshots 可以做什麼?
SnapshotsQA

在啟用 Elastic Cloud 服務後,會預設幫我們啟動快照的功能,快照預設自動每 30 分鐘做一次且會透過 Repositories 進行存放。

Repositories 可以是本機或是任何遠端有提供支援 plugins 的雲端服務像是 Amazon S3、HDFS、Microsoft Azure、Google Cloud Storage 等等,目前 7.6 版以上就可以透過 kibana 的 GUI 進行快照跟恢復的動作了,可以說是非常方便。

建立快照與恢復

首先第一個步驟就是要註冊 Repository,Stack Management > Data > Snapshot and Restore 點選 Repositories 的 Tab 就可以進行建立,當然也可以透過 API 的方式進行,這個部分可以參考相關文件,目前 Elastic Cloud 試用帳號只支援 AWS S3 跟 GCP,這個帳號目前是建立在 GCP 上。

  1. 建立 Repository

Kibana 的介面中
SnapshotKibanaRepository

也有提供支援 S3,要使用其他平台應該就要裝額外的 plug-in,這個部分目前沒有去嘗試
SnapshotRepoS3

Elastic Cloud Enterprise 的介面也是類似
PlatformRepository

  1. 建立快照並設定相關週期,透過 GUI 其實蠻方便的,就是下一步下一步。

建立的過程中可以設定像是要多久快照一次快照保存多久
SnapshotRetention

設定完成後也可以在 Policy 的 Tab 進行管理
SnapshotPolicy

Snapshots 可以看到系統自動製作的快照列表
SnapshotKibanaSnapshots

  1. 從快照恢復資料,從快照恢復也很方便就是點選然後按恢復就完成,也同樣能透過 API 進行操作

從快照恢復資料
SnapshotRepoRestore

SLM (snapshot lifecycle management)

這篇文章示範的 UI 背後其實是一套叫做 SLM (snapshot lifecycle management) 的管理機制,會自動依照設定的 SLM policy 做備份跟老舊快照的移除,也提供相關 API 提供管理,更詳細的資訊可以參考SLM 相關文件,底下附上 API 的範例,看完之後建議直接使用 Kibana 的介面,畢竟 Kibana 已經做好 API 的串接。

curl -X PUT "localhost:9200/_slm/policy/nightly-snapshots?pretty" -H 'Content-Type: application/json' -d'
{
  "schedule": "0 30 1 * * ?",
  "name": "<nightly-snap-{now/d}>",
  "repository": "my_repository",
  "config": {
    "indices": ["*"]
  },
  "retention": {
    "expire_after": "30d",
    "min_count": 5,
    "max_count": 50
  }
}

喜歡這篇文章,請幫忙拍拍手喔 🤣

share