etcd快照备份与恢复

etcd 是一个分布式的 key-value 键值数据库,和其他数据库一样,etcd 集群也需要定期进行备份,以防在故障场景下出现数据丢失。当集群故障,数据丢失,就可以使用备份进行恢复,将损失降到最低。

etcd 通常使用快照进行备份,将快照备份到文件中,恢复时使用快照文件进行恢复。下面将介绍 etcd 快照备份与恢复的完整过程。

etcd 版本:
3.4.4

集群IP:
192.168.56.101
192.168.56.102
192.168.56.103

1. etcd 快照备份

etcd快照备份:

export ETCDCTL_API=3

etcdctl --endpoints=$ENDPOINTS --write-out=table --user=user:password snapshot save etcd.db

  • $ENDPOINTS 为 etcd 节点,比如:192.168.56.101:2379,只能指定一个节点
  • user:password,连接 etcd 的用户名和密码,该用户必须拥有快照备份的权限,否则会因权限不足报错
  • etcd.db,快照备份文件的名称

查看快照备份状态:
etcdctl --write-out=table snapshot status etcd.db

快照备份文件是二进制文件,无法直接查看,可以使用 etcdctl 提供的命令进行查看。包括快照文件 hash 值,REVISION 值,key 数量,总大小。

2. etcd 快照恢复

etcd 本身具用高可用,高容错特性,只要不是一半以上的节点宕机,etcd 都可以正常对外提供服务。如果 etcd 整个集群不可用,比如整个机房宕机,那么只能通过备份进行恢复了。

使用同一个快照备份,对所有 etcd 节点进行恢复:

# 节点1 192.168.56.101
etcdctl snapshot restore etcd.db 
--data-dir /opt/etcd/data 
--name M1
--initial-advertise-peer-urls http://192.168.56.101:2380 
--initial-cluster M1=http://192.168.56.101:2380,M2=http://192.168.56.102:2380,M3=http://192.168.56.103:2380

# 节点2 192.168.56.102
etcdctl snapshot restore etcd.db 
--data-dir /opt/etcd/data 
--name M2
--initial-advertise-peer-urls http://192.168.56.102:2380 
--initial-cluster M1=http://192.168.56.101:2380,M2=http://192.168.56.102:2380,M3=http://192.168.56.103:2380

# 节点3 192.168.56.103
etcdctl snapshot restore etcd.db 
--data-dir /opt/etcd/data 
--name M3
--initial-advertise-peer-urls http://192.168.56.103:2380 
--initial-cluster M1=http://192.168.56.101:2380,M2=http://192.168.56.102:2380,M3=http://192.168.56.103:2380

3. 启动 etcd 集群

使用 etcd 快照备份进行恢复之后,启动 etcd 集群。

# 节点1 192.168.56.101
etcd --name M1 --data-dir /opt/etcd/data 
--initial-advertise-peer-urls http://192.168.56.101:2380
--listen-peer-urls http://192.168.56.101:2380 
--advertise-client-urls http://0.0.0.0:2379 
--listen-client-urls http://0.0.0.0:2379 
--initial-cluster M1=http://192.168.56.101:2380,M2=http://192.168.56.102:2380,M3=http://192.168.56.103:2380 
--initial-cluster-state existing 
--initial-cluster-token etcd-cluster1 
--auto-compaction-retention 2  >>/opt/etcd/etcd.log 2>&1 &

# 节点1 192.168.56.102
etcd --name M2 --data-dir /opt/etcd/data 
--initial-advertise-peer-urls http://192.168.56.102:2380
--listen-peer-urls http://192.168.56.102:2380
--advertise-client-urls http://0.0.0.0:2379
--listen-client-urls http://0.0.0.0:2379
--initial-cluster M1=http://192.168.56.101:2380,M2=http://192.168.56.102:2380,M3=http://192.168.56.103:2380 
--initial-cluster-state existing 
--initial-cluster-token etcd-cluster1 
--auto-compaction-retention 2  >>/opt/etcd/etcd.log 2>&1 &

# 节点1 192.168.56.103
etcd --name M3 --data-dir /opt/etcd/data 
--initial-advertise-peer-urls http://192.168.56.103:2380
--listen-peer-urls http://192.168.56.103:2380
--advertise-client-urls http://0.0.0.0:2379
--listen-client-urls http://0.0.0.0:2379
--initial-cluster M1=http://192.168.56.101:2380,M2=http://192.168.56.102:2380,M3=http://192.168.56.103:2380 
--initial-cluster-state existing 
--initial-cluster-token etcd-cluster1 
--auto-compaction-retention 2  >>/opt/etcd/etcd.log 2>&1 &

启动完成之后,查询集群状态:
etcdctl --endpoints=192.168.56.101:2379,192.168.56.102:2379,192.168.56.103:2379 --write-out=table --user=user:password endpoint status

文章评论

0条评论