Zookeeper 数据迁移实战:根本环境搭建与高效迁移方案全览

[复制链接]
发表于 2025-11-7 16:34:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、Zookeeper数据迁移简介

本次Zookeeper数据迁移的方案:
一是先将源集群中的快照、日记拷贝出到目标节点指定目次中,再将快照、日记文件迁移到目标集群节点的指定目次下。再启动目标节点的Zookeeper服务,该方案最好必要制止源集群的写利用,克制数据不同等。
二利用开源工具可以举行同步,如利用zkcopy开源工具举行在线同步,可以使两个Zookeeper或Zookeeper集群之间举行数据同步,但不能对Zookeeper的log日记举行同步。利用zkcopy的特点,是在不绝服的环境下,可以举行数据同步,不消担心数据不同等题目,但改工具不能对日记举行拷贝。
二、迁移zookeeper数据根本环境

源节点Node1:XxX.XXX.XXX.214Docker-compose摆设
3节点zookeeper伪集群Centos7.9目标
节点Node2:XxX.XXX.XXX.215Docker-compose摆设
3节点zookeeper伪集群Centos7.9三、利用快照迁移zookeeper数据

1、Node1最新的zk快照文件和日记文件

最好先停掉源集群中的zookeeper的进程,并将zookeeper中的最新的快照和日记拷贝到目标node2上,如许能包管数据的同等性。
  1. #查看数据目录和日志日志目录路径
  2. cat $HOME/conf/zoo.cfg | grep dataDir
  3. ls -alh $HOME/zookeeper/version-2/
  4. 示例:
  5. [root@bogon zk-3]# tree
  6. .
  7. ├── conf
  8. │   └── zoo.cfg
  9. ├── data
  10. │   ├── myid
  11. │   └── version-2
  12. │       ├── acceptedEpoch
  13. │       ├── currentEpoch
  14. │       └── snapshot.0
  15. └── datalog
  16.     └── version-2
  17.         └── log.100000001
  18. #将最新的snapshot.0  log.100000001拷贝到目标主机node2某个位置。
  19. Scp -r snapshot.0 log.100000001 [email protected]:/tmp
复制代码
2、将被迁移方node2的zookeeper的集群全部stop

将node2的zookeeper的集群全部stop后,清空集群各个节点的数据和日记目次,
  1. #清空数据目录、和日志日志目录
  2. Rm -rf /data/zookeeper/version-2/*  
  3. Rm -rf /dataLog/zookeeper/version-2/*
复制代码
3、将源node1集群数据和日记拷贝到指定目次下

将拷贝过来的snapshot.0 log.100000001拷贝到某一个zookeeper的节点的目次下即可
  1. #接数据、日志日志。拷贝相应目录下
  2. Cp -a /tmp/snapshot.0   /data/zookeeper/version-2/
  3. Cp -a /tmp/log.100000001 /dataLog/zookeeper/version-2/
复制代码
4、验证优先启动拷贝的数据、日记的zookeeper节点,

假如是三节点,先规复此中一台,然后等数据规复完成后,再启动其他两个节点。
查抄是否将源节点的数据目次是否乐成拷贝到新节点上、还可以根据现实生产环境,验证。此处不是生产环节,只作查验利用演示如下:
  1. #登录到zookeeper里后执行
  2. ./bin/zkCli.sh
  3. #使用ls 查看
  4. [zk: localhost:2181(CONNECTED) 0] ls /
  5. [p_node1, zookeeper]
  6. #使用get 查看
  7. [zk: localhost:2181(CONNECTED) 1] get /p_node1/seq_0000000001
  8. 1
复制代码
以上为通过对数据、日记的拷贝完成zookeeper数据的迁移,作为通例本领,利用方便,利用简朴。
四、利用开源工具zkcopy举行在线同步数据

1、下载官方开源工具

下载官方开源工具,并举行build
git clone https://github.com/kshchepanovskyi/zkcopy.git
进入参zkcopy目次,实验
mvn clean install //没有maven环境先准备环境,官方保举maven3
2、同步数据方法

  1. docker pull ksprojects/zkcopy
  2. docker run --rm -it ksprojects/zkcopy --source server:port/path --target server:port/path
  3. #官方提供命令
  4. java -jar target/zkcopy.jar --source server:port/path --target server:port/path
  5. 示例如下:
  6. java -jar target/zkcopy.jar --source XxX.XXX.XXX.214:2181/p_node1 --target XxX.XXX.XXX.215:2181/p_node1
  7. 参考说明:
  8. path为zookeeper的znode节点
  9. 如:[zk: localhost:2181(CONNECTED) 0] ls /
  10. [p_node1, p_node2, zookeeper]
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表