etcd第三篇恢復數據

關於etcd安裝請參考etcd安裝
關於etcdctl命令使用參考etcdctl命令使用詳解
本篇主要內容是etcd的數據恢復
本篇主要以三個節點的etcd集羣爲例
集羣默認的數量是奇數(>=3),集羣運行期間容許損壞的etcd有(N-1)/2個,一旦集羣中的etcd因硬件沒法啓動,這時候是好解決的,直接啓動一個加入到集羣中便可,會將數據直接複製到新的etcd中,若是超過規定的損壞數量,那沒辦法只能是從新作集羣,這個時候集羣是沒法提供服務的。ide

那如何避免etcd集羣損壞超過規定數量前,防止丟失數據呢?
Snapshoting或者使用集羣中某個etcd的snap/db文件來恢復(前提得有快照策略)
命令以下:
ETCDCTL_API=3 etcdctl --endpoints $ENDPOINT snapshot save snapshot.db
而後遷移到新的集羣中,使用以下命令url

$ ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \
  --name m1 \
  --initial-cluster m1=http://host1:2380,m2=http://host2:2380,m3=http://host3:2380 \
  --initial-cluster-token etcd-cluster-1 \
  --initial-advertise-peer-urls http://host1:2380
$ ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \
  --name m2 \
  --initial-cluster m1=http://host1:2380,m2=http://host2:2380,m3=http://host3:2380 \
  --initial-cluster-token etcd-cluster-1 \
  --initial-advertise-peer-urls http://host2:2380
$ ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \
  --name m3 \
  --initial-cluster m1=http://host1:2380,m2=http://host2:2380,m3=http://host3:2380 \
  --initial-cluster-token etcd-cluster-1 \
  --initial-advertise-peer-urls http://host3:2380

而後啓動新集羣,使用新的data目錄rest

$ etcd \
  --name m1 \
  --listen-client-urls http://host1:2379 \
  --advertise-client-urls http://host1:2379 \
  --listen-peer-urls http://host1:2380 &
$ etcd \
  --name m2 \
  --listen-client-urls http://host2:2379 \
  --advertise-client-urls http://host2:2379 \
  --listen-peer-urls http://host2:2380 &
$ etcd \
  --name m3 \
  --listen-client-urls http://host3:2379 \
  --advertise-client-urls http://host3:2379 \
  --listen-peer-urls http://host3:2380 &
相關文章
相關標籤/搜索