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