etcd单节点数据备份与恢复

Posted ilifeilong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了etcd单节点数据备份与恢复相关的知识,希望对你有一定的参考价值。

插入测试数据

# etcdctl put  smith  7369
# etcdctl put  allen  7499
# etcdctl put  ward   7521
# etcdctl put  jones  7566
# etcdctl put  martin 7654
# etcdctl put  blake  7698
# etcdctl put  clark  7782
# etcdctl put  scott  7788
# etcdctl put  king   7839
# etcdctl put  turner 7844
# etcdctl put  adams  7876
# etcdctl put  james  7900
# etcdctl put  ford   7902
# etcdctl put  miller 7934

查看数据

# etcdctl get --prefix ""
adams
7876
allen
7499
blake
7698
clark
7782
ford
7902
james
7900
jones
7566
king
7839
martin
7654
miller
7934
scott
7788
smith
7369
turner
7844
ward
7521

做快照

# etcdctl snapshot save backup.db
"level":"info","ts":1570085496.5022638,"caller":"snapshot/v3_snapshot.go:109","msg":"created temporary db file","path":"backup.db.part"
"level":"warn","ts":"2019-10-03T14:51:36.503+0800","caller":"clientv3/retry_interceptor.go:116","msg":"retry stream intercept"
"level":"info","ts":1570085496.5036564,"caller":"snapshot/v3_snapshot.go:120","msg":"fetching snapshot","endpoint":"127.0.0.1:2379"
"level":"info","ts":1570085496.5214782,"caller":"snapshot/v3_snapshot.go:133","msg":"fetched snapshot","endpoint":"127.0.0.1:2379","took":0.018938519
"level":"info","ts":1570085496.521635,"caller":"snapshot/v3_snapshot.go:142","msg":"saved","path":"backup.db"
Snapshot saved at backup.db

查看快照信息

# etcdctl snapshot status backup.db --write-out=table
+----------+----------+------------+------------+
|   HASH   | REVISION | TOTAL KEYS | TOTAL SIZE |
+----------+----------+------------+------------+
| 6d1803a9 |      110 |        146 |      37 kB |
+----------+----------+------------+------------+

清空数据

# etcdctl del --prefix ""
14

删除当前etcd的data目录,否则会报错目录已存在

# rm -rf /usr/local/etcd/data

恢复数据

# etcdctl snapshot restore backup.db --data-dir="/usr/local/etcd/data"
"level":"info","ts":1570085656.639806,"caller":"snapshot/v3_snapshot.go:286","msg":"restoring snapshot","path":"backup.db","wal-dir":"/usr/local/etcd/data/member/wal","data-dir":"/usr/local/etcd/data","snap-dir":"/usr/local/etcd/data/member/snap"
"level":"info","ts":1570085656.7266932,"caller":"membership/cluster.go:392","msg":"added member","cluster-id":"cdf818194e3a8c32","local-member-id":"0","added-peer-id":"8e9e05c52164694d","added-peer-peer-urls":["http://localhost:2380"]
"level":"info","ts":1570085656.7834268,"caller":"snapshot/v3_snapshot.go:299","msg":"restored snapshot","path":"backup.db","wal-dir":"/usr/local/etcd/data/member/wal","data-dir":"/usr/local/etcd/data","snap-dir":"/usr/local/etcd/data/member/snap"

恢复完成后需要将从备份重新生成的data目录的属主和属组修改为etcd系统服务中的对应属主和属组

# chown -R tnuser.dba /usr/local/etcd/data

重启etcd系统服务

# systemctl stop etcd
# systemctl start etcd

再次查看恢复的数据

# etcdctl get --prefix ""
adams
7876
allen
7499
blake
7698
clark
7782
ford
7902
james
7900
jones
7566
king
7839
martin
7654
miller
7934
scott
7788
smith
7369
turner
7844
ward
7521

 

以上是关于etcd单节点数据备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章

etcd3集群数据备份与恢复

kubernetes集群ETCD数据备份与恢复实践

Rancher RKE 集群备份与恢复

简单实用kubernetes的etcd备份与恢复实现恢复集群配置

关于k8s中ETCD集群备份灾难恢复的一些笔记

k8s集群维护----etcd数据库备份与恢复------k8s版本升级