還在把資料備份到謎之 D 槽嗎? 現在都什麼時候了? 2020 年,這篇文章將提到怎麼利用現代科技進行資料的備份與恢復,Elastic 提供的快照功能,搭配對應的 plugins 能將資料備份到不同的雲端儲存服務。
為什麼備份跟快照很重要?
Elastic Snapshots 可以做什麼?
在啟用 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 上。
Kibana 的介面中
也有提供支援 S3,要使用其他平台應該就要裝額外的 plug-in,這個部分目前沒有去嘗試
Elastic Cloud Enterprise 的介面也是類似
建立的過程中可以設定像是要多久快照一次快照保存多久
設定完成後也可以在 Policy 的 Tab 進行管理
Snapshots 可以看到系統自動製作的快照列表
從快照恢復資料
這篇文章示範的 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
}
}