如何对ETCD数据库进行备份

容器与中间件容器服务技术服务知识库
问题描述

Kubernetes中使用的数据库是ETCD,其中存储着K8S的元数据,ETCD集群宕机或数据丢失,会导致K8S集群无法使用,因此需要对ETCD进行备份。

问题分析

可以通过ETCD官方提供的命令(etcdctl snapshot save)进行备份。

问题解决

1.安装etcdctl

$ wget https://github.com/etcd-io/etcd/releases/download/v3.5.1/etcd-v3.5.1-linux-amd64.tar.gz
$ tar xf etcd-v3.5.1-linux-amd64.tar.gz
$ cp etcd-v3.5.1-linux-amd64/etcd* /usr/local/bin/
$ chmod 755 /usr/local/bin/etcd* 

2.备份

$ ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key --endpoints=https://192.168.0.22:2379 snapshot save /tmp/etcd-snapshot-`date +%Y%m%d-%H%M%S`.db
{"level":"info","ts":1651219783.354936,"caller":"snapshot/v3_snapshot.go:68","msg":"created temporary db file","path":"/tmp/etcd-snapshot-20220429-160943.db.part"}
{"level":"info","ts":1651219783.3627217,"logger":"client","caller":"v3/maintenance.go:211","msg":"opened snapshot stream; downloading"}
{"level":"info","ts":1651219783.362777,"caller":"snapshot/v3_snapshot.go:76","msg":"fetching snapshot","endpoint":"https://192.168.0.22:2379"}
{"level":"info","ts":1651219783.6137493,"logger":"client","caller":"v3/maintenance.go:219","msg":"completed snapshot read; closing"}
{"level":"info","ts":1651219783.699149,"caller":"snapshot/v3_snapshot.go:91","msg":"fetched snapshot","endpoint":"https://192.168.0.22:2379","size":"30 MB","took":"now"}
{"level":"info","ts":1651219783.6995935,"caller":"snapshot/v3_snapshot.go:100","msg":"saved","path":"/tmp/etcd-snapshot-20220429-160943.db"}
Snapshot saved at /tmp/etcd-snapshot-20220429-160943.db

$ ls -l /tmp/etcd-snapshot-20220429-160943.db 
-rw------- 1 root root 29622304 Apr 29 16:09 /tmp/etcd-snapshot-20220429-160943.db
参考链接

https://github.com/etcd-io/etcd/releases https://github.com/etcd-io/etcd/tree/main/etcdctl#snapshot-save-filename 如果您有其他问题,欢迎您联系火山引擎技术支持服务

43
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论