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

本文介绍了在特殊场景下如何使用手动方式迁移Zookeeper集群数据至新集群,主要步骤包括新集群启动、停止、删除元数据文件、拷贝原始集群数据、分发数据到新集群节点以及重新启动新集群。在新集群启动前要注意数据目录的处理,确保集群能正确加载迁移过来的数据。迁移过程中特别强调了删除epoch文件的重要性,以避免因epoch值不匹配导致的启动问题。

1955

被折叠的 条评论
为什么被折叠?



