迁移的方式
1.zookeeper自带命令实现数据迁移
2.使用第三方jar实现拷贝迁移
zookeeper原生命令行实现数据迁移
原生命令不需要第三方参与,直接把它的最新数据和日志拷贝到另一台服务器的数据目录下重启即可。
找到服务器上的zookeeper安装路径
ps -ef |grep zookeeper
vi /usr/local/zookeeper-3.4.9/conf/zoo.cfg
datadir=/usr/local/zookeeper-3.4.9/data
查看最新的log和快照数据
cd /usr/local/zookeeper-3.4.9/data/version-2/
ls -alh
total 182M
drwxr-xr-x 2 hadoop hadoop 4.0K 2019-05-09 11:32:46 .
drwxr-xr-x 3 hadoop hadoop 4.0K 2019-04-04 15:28:26 ..
-rw-r--r-- 1 hadoop hadoop 65M 2019-03-22 05:03:14 log.1
-rw-rw-r-- 1 hadoop hadoop 65M 2019-04-23 14:25:57 log.c9ef4
-rw-rw-r-- 1 hadoop hadoop 65M 2019-04-26 00:38:25 log.d7778
-rw-rw-r-- 1 hadoop hadoop 65M 2019-04-28 04:11:25 log.e61e9
-rw-r--r-- 1 hadoop hadoop 65M 2019-03-25 09:15:15 log.f108
-rw-rw-r-- 1 hadoop hadoop 65M 2019-05-01 10:31:57 log.f32bb
-rw-rw-r-- 1 hadoop hadoop 334K 2019-04-13 15:48:58 snapshot.9b260
-rw-rw-r-- 1 hadoop hadoop 338K 2019-04-15 21:41:25 snapshot.a8baa
-rw-rw-r-- 1 hadoop hadoop 337K 2019-04-26 00:38:25 snapshot.e61e7
-rw-r--r-- 1 hadoop hadoop 174K 2019-03-22 05:03:15 snapshot.f106
-rw-rw-r-- 1 hadoop hadoop 337K 2019-04-28 04:11:25 snapshot.f32b9
把最新的两个文件拷贝到另外的zookeeper服务目录下
[root@yw-os-0002 version-2]# sz log.f32bb
[root@yw-os-0002 version-2]# sz snapshot.f32b9
下载到我本地服务数据目录D:\tmp\zookeeper\version-2
备份该目录之后,清空该目录
把上面的两个文件拷贝进去
ls D:\tmp\zookeeper\version-2
log.f32bb
snapshot.f32b9
重启本地zookeeper服务即可
第三方jar遍历拷贝方式
有一个好用的开源zkcopy,直接搞定。
git clone https://github.com/kshchepanovskyi/zkcopy.git
使用maven 构建jar包
mvn clean install
在原始服务器上执行如下命令向目标机server:port上拷贝数据,如果这个目标机是本地电脑显然很难实现拷贝(可以做外网映射)
java -Dsource="server:port/path" \
-Ddestination="server:port/path" \
-Dthreads=10 \
-DremoveDeprecatedNodes=true \
-jar target/zkcopy-*-jar-with-dependencies.jar
该方法参考资料 https://blog.csdn.net/qianggezhishen/article/details/50380205