host1为源zookeeper主机 host2为目的zookeeper主机 如今将host1的zookeeper数据迁移到host2ide
#登陆到host1,切换到zookeeper数据目录,以下
#(可从zoo.cfg配置文件中获得数据目录位置)
$> cd /var/lib/zookeeper/version-2
$> ls -alh
-rw-r--r-- 1 root root 65M Jun 20 13:20 log.1f00059ce3
-rw-r--r-- 1 root root 65M Jul 5 15:33 log.1f0006b6ed
-rw-r--r-- 1 root root 65M Jul 26 16:07 log.2100000001
-rw-r--r-- 1 root root 415K May 17 09:37 snapshot.1f000157ec
-rw-r--r-- 1 root root 414K May 20 14:10 snapshot.1f000275b9
-rw-r--r-- 1 root root 416K May 23 07:02 snapshot.1f0003617e
-rw-r--r-- 1 root root 467K May 26 10:04 snapshot.1f00048346
-rw-r--r-- 1 root root 544K May 29 14:22 snapshot.1f00059ce1
-rw-r--r-- 1 root root 556K Jun 20 13:20 snapshot.1f0006b6ebui
找到最新的日志文件和快照文件,如上表就是log.2100000001和snapshot.1f0006b6eb 日志文件存放zookeeper 所有数据记录 ,快照文件则是内存增量文件。
$> scp log.2100000001 snapshot.1f0006b6eb root@host2:/tmp日志
#(可从zoo.cfg配置文件中获得数据目录位置)
$> rm -fr /var/lib/zookeeper/* #清空host2的zookeeper数据目录内容
$> cd /tmp
$> cp log.2100000001 snapshot.1f0006b6eb /var/lib/zookeeper
$> systemctl start zk OR zkServer.sh start #启动zookeeper服务code
#客户端登陆到host2,进行验证
$> zkCli.sh -server host2:2181 #可从zoo.cfg配置文件中获得服务端口
$> ls / # 列出全部节点server
5.1 上述方法也用于zookeeper的数据恢复
5.2 如host1误删了zookeeper数据,能够先将数据目录(如/var/lib/zookeeper)备份
5.3 确认好恢复到那一天的数据(不能恢复到当天的数据,会发生错乱)
5.3 中止zookeeper服务
5.4 进入到zookeeper数据目录,把其余的日志文件和快照删掉,只保留恢复当天的日志文件和快照文件
5.5 重启zookeeper服务
5.6 客户端验证zookeeper数据内存
KeeperErrorCode = ConnectionLoss for /
修改 ./config.cfg zkSessionTimeout=60 zkServer ./target/config.cfg
zkSessionTimeout=60 zkServerget