zookeeper数据迁移
1 概述
zkcopy是一个将数据从一个zookeeper集群复制到另一个zookeeper集群的命令行工具,官方文档是:
https://github.com/ksprojects/zkcopy
裸机使用方式:
java -jar target/zkcopy.jar --source server:port/path --target server:port/path
容器使用方式:
docker pull ksprojects/zkcopy
docker run --rm -it ksprojects/zkcopy --source server:port/path --target server:port/path
2 环境准备
在云上开启一台Centos 7.9的ECS,IP是10.0.13.104:

在ECS上安装docker:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install yum-utils -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates
yum install docker-ce-cli-20.10.5-3.el7 docker-ce-20.10.5-3.el7 -ymkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{"max-concurrent-downloads": 10,"log-driver": "json-file","log-level": "warn","log-opts": {"max-size": "100m","max-file": "3"},"live-restore": true,"exec-opts": ["native.cgroupdriver=systemd"]
}
EOFsystemctl daemon-reload
systemctl enable docker
systemctl restart docker
3 单ECS模拟测试
步骤1:ECS上启动两个zookeeper实例:
docker run --name zk-01 -d -p 12181:2181 zookeeper:3.4
docker run --name zk-02 -d -p 22181:2181 zookeeper:3.4
步骤2:进入zk-01,创建示例数据
docker exec -it zk-01 bash
./bin/zkCli.sh
create /colour ""
create /colour/red "red"
create /colour/blue "blue"
create /colour/yellow "yellow"

步骤3:使用zkcopy复制数据
docker run -it --rm ksprojects/zkcopy --source 10.0.13.104:12181/colour --target 10.0.13.104:22181/colour
步骤4:在zk-02查看数据

可见/colour节点的数据从zk0-1复制到zk-02中。
