马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、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上,如许能包管数据的同等性。
- #查看数据目录和日志
目录路径 - cat $HOME/conf/zoo.cfg | grep dataDir
- ls -alh $HOME/zookeeper/version-2/
- 示例:
- [root@bogon zk-3]# tree
- .
- ├── conf
- │ └── zoo.cfg
- ├── data
- │ ├── myid
- │ └── version-2
- │ ├── acceptedEpoch
- │ ├── currentEpoch
- │ └── snapshot.0
- └── datalog
- └── version-2
- └── log.100000001
- #将最新的snapshot.0 log.100000001拷贝到目标主机node2某个位置。
- Scp -r snapshot.0 log.100000001 [email protected]:/tmp
复制代码 2、将被迁移方node2的zookeeper的集群全部stop
将node2的zookeeper的集群全部stop后,清空集群各个节点的数据和日记目次,
- #清空数据目录、和日志
目录 - Rm -rf /data/zookeeper/version-2/*
- Rm -rf /dataLog/zookeeper/version-2/*
复制代码 3、将源node1集群数据和日记拷贝到指定目次下
将拷贝过来的snapshot.0 log.100000001拷贝到某一个zookeeper的节点的目次下即可
- #接数据、日志
。拷贝相应目录下 - Cp -a /tmp/snapshot.0 /data/zookeeper/version-2/
- Cp -a /tmp/log.100000001 /dataLog/zookeeper/version-2/
复制代码 4、验证优先启动拷贝的数据、日记的zookeeper节点,
假如是三节点,先规复此中一台,然后等数据规复完成后,再启动其他两个节点。
查抄是否将源节点的数据目次是否乐成拷贝到新节点上、还可以根据现实生产环境,验证。此处不是生产环节,只作查验利用演示如下:
- #登录到zookeeper里后执行
- ./bin/zkCli.sh
- #使用ls 查看
- [zk: localhost:2181(CONNECTED) 0] ls /
- [p_node1, zookeeper]
- #使用get 查看
- [zk: localhost:2181(CONNECTED) 1] get /p_node1/seq_0000000001
- 1
复制代码 以上为通过对数据、日记的拷贝完成zookeeper数据的迁移,作为通例本领,利用方便,利用简朴。
四、利用开源工具zkcopy举行在线同步数据
1、下载官方开源工具
下载官方开源工具,并举行build
git clone https://github.com/kshchepanovskyi/zkcopy.git
进入参zkcopy目次,实验
mvn clean install //没有maven环境先准备环境,官方保举maven3
2、同步数据方法
- docker pull ksprojects/zkcopy
- docker run --rm -it ksprojects/zkcopy --source server:port/path --target server:port/path
- #官方提供命令
- java -jar target/zkcopy.jar --source server:port/path --target server:port/path
- 示例如下:
- java -jar target/zkcopy.jar --source XxX.XXX.XXX.214:2181/p_node1 --target XxX.XXX.XXX.215:2181/p_node1
- 参考说明:
- path为zookeeper的znode节点
- 如:[zk: localhost:2181(CONNECTED) 0] ls /
- [p_node1, p_node2, zookeeper]
复制代码 |