etcd 備份與恢復
ETCD?是一款開源的分布式一致性鍵值存儲,由 CoreOS 公司進行維護,詳細的介紹請參考官方文檔。

ETCD 目前最新的版本的 v3.1.1,但它的 API 又有 v3 和 v2 之分,社區通常所說的 v3 與 v2 都是指 API 的版本號。
從 etcd 2.3 版本開始推出了一個實驗性的全新 v3 版本 API 的實現,v2 與 v3 API 使用了不同的存儲引擎,所以客戶端命令也完全不同。
Bash
#?etcdctl?--version ???etcdctl?version:?3.0.4 ???API?version:?2
官方指出 etcd v2 和 v3 的數據不能混合存放,support backup of v2 and v3 stores?。
特別提醒:若使用?v3?備份數據時存在?v2?的數據則不影響恢復 若使用?v2?備份數據時存在?v3?的數據則恢復失敗
對于 API 2 備份與恢復方法
官方 v2 admin guide
etcd的數據默認會存放在我們的命令工作目錄中,我們發現數據所在的目錄,會被分為兩個文件夾中:
snap: 存放快照數據,etcd防止WAL文件過多而設置的快照,存儲etcd數據狀態。
wal: 存放預寫式日志,最大的作用是記錄了整個數據變化的全部歷程。在etcd中,所有數據的修改在提交前,都要先寫入到WAL中。
Bash
#?etcdctl?backup?--data-dir?/home/etcd/?--backup-dir?/home/etcd_backup ????#?etcd?-data-dir=/home/etcd_backup/??-force-new-cluster
恢復時會覆蓋 snapshot 的元數據(member ID 和 cluster ID),所以需要啟動一個新的集群。
對于 API 3 備份與恢復方法
官方 v3 admin guide
在使用 API 3 時需要使用環境變量 ETCDCTL_API 明確指定。
在命令行設置:
Bash
#?export?ETCDCTL_API=3
備份數據:
Bash
#?etcdctl?--endpoints?localhost:2379?snapshot?save?snapshot.db
恢復:
Bash
#?etcdctl?snapshot?restore?snapshot.db?--name?m3?--data-dir=/home/etcd_data ???? ??????恢復后的文件需要修改權限為?etcd:etcd ????–name:重新指定一個數據目錄,可以不指定,默認為?default.etcd ????–data-dir:指定數據目錄 ????建議使用時不指定?name?但指定?data-dir,并將?data-dir?對應于?etcd?服務中配置的?data-dir
etcd 集群都是至少 3 臺機器,官方也說明了集群容錯為 (N-1)/2,所以備份數據一般都是用不到,但是鑒上次 kubernetes 出現的問題,對于備份數據也要非常重視
華為云APP
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。