zk的数据迁移,一方面可以使用集群过半数仍然可用的这个特性,另一方面也可以通过直接拷贝元数据文件到新集群;
但是有特殊的场景,第一种就不是最佳的选择,例如公司在用的zookeeper集群,因为历史原因导致集群使用场景复杂,连接数负载很高,尤其在节假日业务活动期间,有可能非预期的将集群连接数并打满,负载过高致使整个集群崩溃,所以需要使用第二种来进行数据的迁移;
新的备份集群需要从头搭建,但是搭建好时需要注意两点:
-
在新集群没有启动时数据目录不存在;
-
原始集群的元数据文件放到新集群数据目录下面时,为了能够加载迁移数据需要重启新集群;
所以我们先启动集群,让数据目录进行加载,然后再stop掉集群,删掉备份集群中数据目录下的所有文件,包括:事务日志、快照、两个epoch文件。
手动方式(使用minos工具)
集群管理工具和自己手动操作集群在底层命令的执行上都是一样的,这里可以不必纠结。这篇文章对zookeeper集群的操作命令都是通过minos开源工具来进行集群操作,有兴趣的朋友也可以了解一下,地址为:https://github.com/XiaoMi/minos.git
1、新集群启动(假定备份集群为:backuptst)
新备份集群服务器节点名为:
-
server01
-
server02
-
server03
-
server04