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

文章目录

  • 一、Zookeeper数据迁移简介
  • 二、迁移zookeeper数据基础环境
  • 三、利用快照迁移zookeeper数据
    • 1、Node1最新的zk快照文件和日志文件
    • 2、将被迁移方node2的zookeeper的集群全部stop
    • 3、将源node1集群数据和日志拷贝到指定目录下
    • 4、验证优先启动拷贝的数据、日志的zookeeper节点,
  • 四、利用开源工具zkcopy进行在线同步数据
    • 1、下载官方开源工具
    • 2、同步数据方法

一、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 root@XxX.XXX.XXX.215:/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]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux]从零开始的STM32MP157交叉编译环境配置

一、前言 最近该忙的事情也是都忙完了,也是可以开始好好的学习一下Linux了。之前九月份的时候就想入手一块Linux的开发板用来学习Linux底层开发。之前在NXP和STM32MP系列之间犹豫,思来想去还是入手了一块STM32MP157。当然不是单纯因为MP157的性能在NXP之…

小程序如何引入腾讯位置服务

小程序如何引入腾讯位置服务 1.添加服务 登录 微信公众平台 注意:小程序要企业版的 第三方服务 -> 服务 -> 开发者资源 -> 开通腾讯位置服务 在设置 -> 第三方设置 中可以看到开通的服务,如果没有就在插件管理中添加插件 2.腾讯位置服务…

添加计算机到AD域中

添加计算机到AD域中 一、确定计算机的DNS指向域中的DNS二、打开系统设置三、加域成功后 一、确定计算机的DNS指向域中的DNS 二、打开系统设置 输入域管理员的账密 三、加域成功后 这里有显示,就成功了。

从epoll事件的视角探讨TCP:三次握手、四次挥手、应用层与传输层之间的联系

目录 一、应用层与TCP之间的联系 二、 当通信双方中的一方如客户端主动断开连接时,仅是在客户端的视角下连接已经断开,在服务端的眼中,连接依然存在,为什么?——触发EPOLLRDHUP事件:对端关闭连接或停止写…

使用RSyslog将Nginx Access Log写入Kafka

个人博客地址:使用RSyslog将Nginx Access Log写入Kafka | 一张假钞的真实世界 环境说明 CentOS Linux release 7.3.1611kafka_2.12-0.10.2.2nginx/1.12.2rsyslog-8.24.0-34.el7.x86_64.rpm 创建测试Topic $ ./kafka-topics.sh --zookeeper 192.168.72.25:2181/k…

使用 Docker 部署 Java 项目(通俗易懂)

目录 1、下载与配置 Docker 1.1 docker下载(这里使用的是Ubuntu,Centos命令可能有不同) 1.2 配置 Docker 代理对象 2、打包当前 Java 项目 3、进行编写 DockerFile,并将对应文件传输到 Linux 中 3.1 编写 dockerfile 文件 …

《研发管理 APQP 软件系统》——汽车电子行业的应用收益分析

全星研发管理 APQP 软件系统在汽车电子行业的应用收益分析 在汽车电子行业,技术革新迅猛,市场竞争激烈。《全星研发管理 APQP 软件系统》的应用,为企业带来了革命性的变化,诸多收益使其成为行业发展的关键驱动力。 《全星研发管理…

22、PyTorch nn.Conv2d卷积网络使用教程

文章目录 1. 卷积2. python 代码3. notes 1. 卷积 输入A张量为: A [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] \begin{equation} A\begin{bmatrix} 0&1&2&3\\\\ 4&5&6&7\\\\ 8&9&10&11\\\\ 12&13&14&15 \end{b…

ASP.NET Core - 依赖注入(四)

ASP.NET Core - 依赖注入(四) 4. ASP.NET Core默认服务5. 依赖注入配置变形 4. ASP.NET Core默认服务 之前讲了中间件,实际上一个中间件要正常进行工作,通常需要许多的服务配合进行,而中间件中的服务自然也是通过 Ioc…

UE5游戏性能优化指南

解除帧率限制 启动游戏 按 “~” 键 输入 t.MaxFPS 200 可以解除默认帧率限制达到更高的帧率 UE游戏性能和场景优化思路: 1. 可以把可延展性调低,帧率会大幅提高,但画质会大幅降低 2.调整固定灯光,静态光源&#xff…

深度学习中的卷积和反卷积(四)——卷积和反卷积的梯度

本系列已完结,全部文章地址为: 深度学习中的卷积和反卷积(一)——卷积的介绍 深度学习中的卷积和反卷积(二)——反卷积的介绍 深度学习中的卷积和反卷积(三)——卷积和反卷积的计算 …

【C语言】线程

目录 1. 什么是线程 1.1概念 1.2 进程和线程的区别 1.3 线程资源 2. 函数接口 2.1创建线程: pthread_create 2.2 退出线程: pthread_exit 2.3 回收线程资源 练习 1. 什么是线程 1.1概念 线程是一个轻量级的进程,为了提高系统的性能引入线程。 在同一个进…

【C语言】字符串函数详解

文章目录 Ⅰ. strcpy -- 字符串拷贝1、函数介绍2、模拟实现 Ⅱ. strcat -- 字符串追加1、函数介绍2、模拟实现 Ⅲ. strcmp -- 字符串比较1、函数介绍2、模拟实现 Ⅳ. strncpy、strncat、strncmp -- 可限制操作长度Ⅴ. strlen -- 求字符串长度1、函数介绍2、模拟实现&#xff08…

Windows部署NVM并下载多版本Node.js的方法(含删除原有Node的方法)

本文介绍在Windows电脑中,下载、部署NVM(node.js version management)环境,并基于其安装不同版本的Node.js的方法。 在之前的文章Windows系统下载、部署Node.js与npm环境的方法(https://blog.csdn.net/zhebushibiaoshi…

centos 8 中安装Docker

注:本次样式安装使用的是centos8 操作系统。 1、镜像下载 具体的镜像下载地址各位可以去官网下载,选择适合你们的下载即可! 1、CentOS官方下载地址:https://vault.centos.org/ 2、阿里云开源镜像站下载:centos安装包…

STM32-笔记40-BKP(备份寄存器)

一、什么是BKP(备份寄存器)? 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或…

vue-cli项目配置使用unocss

在了解使用了Unocss后&#xff0c;就完全被它迷住了。接手过的所有项目都配置使用了它&#xff0c;包括一些旧项目&#xff0c;也跟同事分享了使用Unocss的便捷性。 这里分享一下旧项目如何配置和使用Unocss的&#xff0c;项目是vue2vue-cli构建的&#xff0c;node<20平常开…

新增文章分类功能

总说 过程参考黑马程序员SpringBoot3Vue3全套视频教程&#xff0c;springbootvue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili 目录 总说 一、功能实现 1.1 Controller层 1.2 Service层 1.3 Impl层 1.4 Mapper层 1.5 测试接口 二、优化 2.1 2.2 一、…

知识图谱常见的主流图数据库

在知识图谱中&#xff0c;主流使用的图数据库包括以下几种&#xff1a; Neo4j&#xff1a;这是目前全球部署最广泛的图数据库之一&#xff0c;具有强大的查询性能和灵活的数据模型&#xff0c;适用于复杂关系数据的存储和查询。 JanusGraph&#xff1a;JanusGraph是一个开源的…

JavaSE学习心得(多线程与网络编程篇)

多线程-网络编程 前言 多线程&JUC 多线程三种实现方式 第一种实现方式 第二种实现方式 第三种实现方式 常见成员方法 买票引发的安全问题 同步代码块 同步方法 Lock锁 生产者和消费者 常见方法 等待唤醒机制 练习 抢红包 抽奖 多线程统计并求最…