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
文章评论