刚刚在研究怎么把一台Centos服务器上的zookeeper数据迁移到另外一台机上,在网上找了很多方法和工具,都不实用,以及网上最多迁移zookeeper数据的方法是最新快照加最新的事务日志,但是在新版zookeeper中找不到快照数据,据说zookeeper会自动清理快照数据,然后我就猜想直接迁移事务日志可以吗,经过实验,成功通过迁移事务日志迁移了zookeeper的数据,具体操作流程如下:
声明:文中“源机”代表的是需要被迁移zookeeper数据的主机。
文中“目标机”代表的是需要把源机的zookeeper数据迁移到的目标zookeeper所在的主机。
1.查看目标机的事务日志所在目录
cat /usr/local/zookeeper-3.4.14/conf/zoo.cfg
在该文件中找到dataDir或者dataLogDir项,该项代表的是事务日志所在的目录,一般是
dataDir=/var/lib/zookeeper
代表快照(如果有快照数据)和事务日志在该目录下。
2.暂停目标机的zookeeper服务,命令/usr/local/zookeeper-3.4.14/bin/zkServer.sh start
3.把目标机的/var/lib/zookeeper下数据全部删掉,或者只删/var/lib/zookeeper/version-2目录中所有事务日志。
4.找到源机的事务日志所在目录,我实验时候也是在/var/lib/zookeeper/version-2目录中,然后把事件日志所在目录/var/lib/zookeeper/version-2(包括里面的事件日志)复制到目标机的/var/lib/zookeeper/version-2。
5.然后,重启目标机的zookeeper服务,就发现目标机中zookeeper节点数据和源机中节点数据一样了。
总结:就是把源机的事件日志替换掉目标机的事件日志即可(在找不到zookeeper快照时候下实验通过,有快照,可能也要替换快照)。