zookeeper迁移

[TOC]

方案1:[推荐] 利用开源项目 zkcopy 在线迁移

  • 任意机器:安装 zkcopy,可直接向目标机server:port上拷贝数据(验证有效)
cd /opt/
# git config --global http.lowSpeedLimit 0
# git config --global http.lowSpeedTime 999999
git clone https://github.com/ksprojects/zkcopy.git

cd /opt/zkcopy/
mvn clean install
java -jar target/zkcopy.jar --source 192.168.100.101:2181/xxx --target 192.168.100.102:2181/xxx

注:若 git clone 失败,可尝试如下地址下载

cd /opt/
wget -c http://iso.sqlfans.cn/linux/zkcopy.zip
unzip zkcopy.zip
  • 目标实例:确认数据
/usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
ls /
quit

方案2:[常规] 利用快照迁移 zk 从host1到host2

  1. host1找到dataDir下version-2目录中最新的zk快照文件(内存增量文件)
find / -name zoo.cfg
cat /var/app/zookeeper-3.4.14/conf/zoo.cfg | grep dataDir
ls -alh /tmp/zookeeper/version-2/
  1. host1找到dataLogDir(若未配则同dataDir)下version-2目录中最新的zk日志文件(存放zk全部数据记录)
find / -name zoo.cfg
cat /var/app/zookeeper-3.4.14/conf/zoo.cfg | grep dataLogDir
ls -alh /tmp/zookeeper/version-2/
  1. host1复制最新的zk日志和快照文件到host2
scp log.2100000001 snapshot.1f0006b6eb root@host2:/tmp
  1. host2找到zk数据目录
find / -name zoo.cfg
cat /usr/local/zookeeper/conf/zoo.cfg | grep dataDir
  1. host2停掉zk服务,清空host2的zk数据目录,载入最新日志和快照文件并启动zk服务

    如果是三台需要全部服务停掉,恢复其中的一台,然后等数据恢复完成后,再启动其余的两台服务让zk自己同步数据过去

/usr/local/zookeeper/bin/zkServer.sh stop
rm -rf /data/zookeeper/*
cp /tmp/log.2100000001 /data/zookeeper/data/
cp /tmp/snapshot.1f0006b6eb /data/zookeeper/data/
/usr/local/zookeeper/bin/zkServer.sh start
  1. 验证host2的zk数据
/usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
ls /
quit
Copyright © www.sqlfans.cn 2023 All Right Reserved更新时间: 2022-01-14 17:30:00

results matching ""

    No results matching ""