etcd集群备份恢复

  

一、备份
此备份方式是借助etcd的快照功能做备份,需要时可以把etcd集群回滚到具体备份的时间点,此备份是基于etcd api 3版本的备份,如果数据是用api 2版本写入的,则api 2版本写入的数据无法恢复
1,备份

  

<代码> ETCDCTL_API=3 etcdctl端点=" https://192.168.9.89:2379 " - cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem快照保存/chj/备份/etcd3/snapshot.db
2,备份脚本

  
 <代码> # !/bin/bash
  DATA=https://www.yisu.com/zixun/叭掌? % y % m % d '
  BACUPDIR=/chj/备份/etcd
  端点=' https://192.168.9.87:2379, https://192.168.9.88:2379, https://192.168.9.89:2379 '
  时间戳='日期+ % Y % m % d % H % m % S '
  如果[!- d“BACUPDIR美元”);然后
  回声“dir BACUPDIR美元”
  mkdir - p BACUPDIR美元
  fi
  ETCDCTL_API=3 etcdctl——端点=$端点cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem快照保存BACUPDIR/snapshot_ timestamp.db美元
  找到BACUPDIR美元- name *。db -mtime + 5 rm - rf{} \;  
  

二、恢复
1,停止所有节点的服务

  

<代码> systemctl停止etcd
2,把当前数据目录备份

  

<代码> mv/var/lib/etcd/var/lib/etcd_bak_20190523
3,确认需要回滚的快照文件,分布还原到集群的每个节点上

  

#还原192.168.9.87节点
<代码> ETCDCTL_API=3 etcdctl - name=k8stest chj——主- 1.。云——端点=" https://192.168.9.87:2379 ", cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem——initial-cluster-token=etcd-cluster-0——initial-advertise-peer-urls=https://192.168.9.87:2380 initial-cluster=k8stest -主- 1. - chj.cloud=https://192.168.9.87:2380, k8stest -硕士- 2. chj.cloud=https://192.168.9.88:2380, k8stest -硕士- 3. chj.cloud=https://192.168.9.89:2380——data-dir=/var/lib/etcd快照恢复/chj/备份/etcd3/snapshot.db
#还原192.168.9.88节点
<代码> ETCDCTL_API=3 etcdctl - name=k8stest - - 2. chj大师。云——端点=" https://192.168.9.88:2379 ", cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem——initial-cluster-token=etcd-cluster-0——initial-advertise-peer-urls=https://192.168.9.88:2380 initial-cluster=k8stest -主- 1. - chj.cloud=https://192.168.9.87:2380, k8stest -硕士- 2. chj.cloud=https://192.168.9.88:2380, k8stest -硕士- 3. chj.cloud=https://192.168.9.89:2380——data-dir=/var/lib/etcd快照恢复/chj/备份/etcd3/snapshot.db
#还原192.168.9.89节点
<代码> ETCDCTL_API=3 etcdctl - name=k8stest - - 3. chj大师。云——端点=" https://192.168.9.89:2379 ", cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem——initial-cluster-token=etcd-cluster-0——initial-advertise-peer-urls=https://192.168.9.89:2380 initial-cluster=k8stest -主- 1. - chj.cloud=https://192.168.9.87:2380, k8stest -硕士- 2. chj.cloud=https://192.168.9.88:2380, k8stest -硕士- 3. chj.cloud=https://192.168.9.89:2380——data-dir=/var/lib/etcd快照恢复/chj/备份/etcd3/snapshot.db

  

三,常用命令
使用API 3写入数据

  

ETCDCTL_API=3 etcdctl——<代码>端点=" https://192.168.9.87:2379, https://192.168.9.88:2379, https://192.168.9.89:2379 "——cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem把/chj/3 api3
使用API 3读数据

  

ETCDCTL_API=3 etcdctl——<代码>端点=" https://192.168.9.87:2379, https://192.168.9.88:2379, https://192.168.9.89:2379 "——cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem得到/chj/3
使用API 3查看所有关键

  

<代码> ETCDCTL_API=3 etcdctl——端点=" https://192.168.9.87:2379, https://192.168.9.88:2379, https://192.168.9.89:2379 "——cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem get/前缀——密钥
使用API 3删除所有关键

  

<代码> ETCDCTL_API=3 etcdctl——端点=" https://192.168.9.87:2379, https://192.168.9.88:2379, https://192.168.9.89:2379 "——cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem del”——prefix

  

查看集群成员

  

<代码> ETCDCTL_API=3 etcdctl——端点=" https://192.168.9.87:2379, https://192.168.9.88:2379, https://192.168.9.89:2379 "——cert=/etc/etcd/ssl/etcd。pem——关键=/etc/etcd/ssl/etcd-key。pem - cacert=/etc/etcd/ssl/ca。pem成员列表,写出
=表查看集群健康状态

etcd集群备份恢复