TOUVE 发表于 2019-1-7 14:17:08

zookeeper 数据迁移及恢复操作

  host1为源zookeeper主机 host2为目的zookeeper主机 现在将host1的zookeeper数据迁移到host2

从host1中找到最新的zookeeper日志和快照文件
  #登录到host1,切换到zookeeper数据目录,如下
  #(可从zoo.cfg配置文件中得到数据目录位置)
  $> cd /var/lib/zookeeper/version-2
  $> ls -alh
  -rw-r--r-- 1 root root65M Jun 20 13:20 log.1f00059ce3
  -rw-r--r-- 1 root root65M Jul5 15:33 log.1f0006b6ed
  -rw-r--r-- 1 root root65M 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.1f0006b6eb
  

找到最新的日志文件和快照文件,如上表就是log.2100000001和snapshot.1f0006b6eb  

  
日志文件存放zookeeper 全部数据记录 ,快照文件则是内存增量文件。
  

从host1复制最新的zookeeper日志和快照文件到host2
  $> scp log.2100000001 snapshot.1f0006b6eb root@host2:/tmp

host2载入最新日志和快照文件并启动zookeeper服务
  #(可从zoo.cfg配置文件中得到数据目录位置)
  $> rm -fr /var/lib/zookeeper/*       #清空host2的zookeeper数据目录内容
  $> cd /tmp
  $> cp log.2100000001 snapshot.1f0006b6eb/var/lib/zookeeper
  $> systemctl startzk OR zkServer.sh start   #启动zookeeper服务

验证host2的zookeeper数据
  #客户端登录到host2,进行验证
  $> zkCli.sh-server host2:2181#可从zoo.cfg配置文件中得到服务端口
  $> ls /   # 列出所有节点

关于zookeeper的数据恢复
  5.1 上述方法也用于zookeeper的数据恢复
  5.2 如host1误删了zookeeper数据,可以先将数据目录(如/var/lib/zookeeper)备份
  5.3 确认好恢复到那一天的数据(不能恢复到当天的数据,会发生错乱)
  5.3 停止zookeeper服务
  5.4 进入到zookeeper数据目录,把其他的日志文件和快照删掉,只保留恢复当天的日志文件和快照文件
  5.5 重启zookeeper服务
  5.6 客户端验证zookeeper数据

zkui配置过连接信息后,再切换到到其他,报如下错误
  KeeperErrorCode = ConnectionLoss for /
  修改 ./config.cfg zkSessionTimeout=60 zkServer ./target/config.cfg
  zkSessionTimeout=60 zkServer


页: [1]
查看完整版本: zookeeper 数据迁移及恢复操作