注:
ectd版本: 3.5.6
数据拷贝
-
环境检查
确认集群的健康状态
# 源集群检查 etcdctl --endpoints=<源etcd地址> endpoint health etcdctl --endpoints=<源etcd地址> member list# 目标集群检查(若新建) etcdctl --endpoints=<目标etcd地址> endpoint health
-
备份数据
# 3.4 版本备份命令(v3 数据) etcdctl --endpoints=<源etcd地址> snapshot save backup.db
-
验证备份文件
etcdctl snapshot status backup.db
数据迁移
-
验证快照文件的有效性
ETCDCTL_API=3 etcdctl snapshot status temp-export.db
-
获取当前节点名称
ETCDCTL_API=3 etcdctl --endpoints=<etcd客户端地址> member list
-
创建一个空的data文件
-
迁移数据
ETCDCTL_API=3 etcdctl snapshot restore temp-export.db \--data-dir=<目标数据目录> \ # 例如 /var/lib/etcd-new--name=node1 \ # 节点名称(自定义,需与启动命令一致)--initial-cluster=node1=http://127.0.0.1:2380 \ # 集群初始化配置(单节点)--initial-cluster-token=etcd-cluster-token \ # 集群唯一令牌(确保集群标识一致)--initial-advertise-peer-urls=http://127.0.0.1:2380 # 节点对等通信地址
-
重启etcd
etcd --data-dir=/xxxx \--name=node1 \--listen-peer-urls=http://127.0.0.1:2380 \ # 对等通信端口(与 initial-cluster 一致)--listen-client-urls=http://127.0.0.1:2379 \ # 客户端监听地址(对外提供服务)--advertise-client-urls=http://127.0.0.1:2379 # 客户端广告地址(供外部访问)
-
验证数据是否存在
# 使用 etcdctl 连接到新启动的节点 ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 get --prefix ""