Kafka数据迁移全解析:同集群和跨集群

文章目录

  • 一、同集群迁移
  • 二、跨集群迁移

Kafka两种迁移场景,分别是同集群数据迁移、跨集群数据迁移。

一、同集群迁移

在这里插入图片描述
应用场景
broker 迁移 主要使用的场景是broker 上线,下线,或者扩容等.基于同一套zookeeper的操作。

实践
将需要新添加的broker 列表一并添加到kafka的集群中。(启动新的kafka指定同一套zk)Kafka由之前的三节点,扩容至四节点。
在这里插入图片描述
数据迁移

  1. 查询信息:(四个分区分布在三台机器上)
    在这里插入图片描述
  2. 新建json文件:
cat topic-to-move.json{
"topics": [
{"topic": "test-topic"}
],
"version":1
}
  1. 获取重新分配方案:
kafka-reassign-partitions.sh --zookeeper node1:2181,node2:2181,node3:2181 --topics-to-move-json-file topics-to-move.json --broker-list "150,151,155,159" –generate

##通过kafka-reassign-partitions.sh 获取重新分配方案,–broker-lsit 的参数 “150,151,155,159"是指集群中每个broker的id,由于我们是需要将所有topic均匀分配到扩完结点的4台机器上,所以要指定。同理,当业务改变为将原来的所有数据从旧节点(0,5,9)迁移到新节点(1)实现数据平滑迁移,这时的参数应"4”
,执行后会出现以下内容:
在这里插入图片描述
复制新的方案到一个json文件 assignplan.json (文件名不重要,文件格式也不一定要以json为 结尾,只要保证内容是json即可)

 ./kafka-reassign-partitions.sh --zookeeper node1:2181 --reassignment-json-file assignplan.json --execute

在这里插入图片描述
完成后查看topic信息:(四个分区分布在四台机器上)
在这里插入图片描述

二、跨集群迁移

在这里插入图片描述
应用场景
主要用于kafka 集群的变更. 将数据同步等操作. 相当于是实现了双打.等各项数据消费端在零误差的对接好了后,可以停掉就集群

数据迁移:
MirrorMaker

  1. 修改kafka配置
    consumer.properties(内容为原始集群信息)
    在这里插入图片描述
#config/consumer.properties 在网上看到有在此配置zookeeper的应该是之前的老版本。kafka_2.11-2.4.1中不需要
bootstrap.servers=kafka-cluster1:9092,kafka-cluster1:9093 # source-cluster的broker list
group.id=test-consumer-group1 # 自定义一个消费者的group id
auto.offset.reset= # latest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据; earliest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费; none:topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常

producer.properties(内容为新集群信息)
在这里插入图片描述
#config/producer.properties 在网上看到有在此配置zookeeper的应该是之前的老版本。kafka_2.11-2.4.1中不需要
bootstrap.servers=kafka-cluster2:9092,kafka-cluster2:9093 # destination-cluster的broker list
compression.type=none # 数据压缩方式none, gzip, snappy, lz4, zstd
partitioner.class= # 指定分区程序路径,默认为随机分区
request.timeout.ms= # 请求超时时间
max.block.ms= # KafkaProducer.send and KafkaProducer.partitionsFor 阻塞时间
linger.ms= # 等待指定时间后批量发送
max.request.size= # 发送消息最大字节数
batch.size= # 单次批量处理的字节数
buffer.memory= # 指定等待发送消息的缓冲区大小

执行操作:

./kafka-mirror-maker.sh --consumer.config ../config/consumer.properties --producer.config ../config/producer.properties --whitelist 'test'

说明:

  1. –num.streams: 指定流就是指定消费者,所有消费者公用一个生产者。
  2. –whitelist: 表明需要同步的白名单,可以使用”|”来连接多个topic,还可以使用正则表达式。可设置黑名单。

ZK迁移:

  1. zk迁移就比较简单了,起新节点加入zk集群,稳定后关停旧节点。
  2. 新增broker加入集群,将所有topic分区只分配给新broker,执行分配任务后,kafka将旧broker的分区数据复制到新broker,新broker成为各分区的leader,随后kafka删除旧broker上的分区数据;
  3. 整个过程中客户端应用正常生产消费消息,执行结束后使用新的消费者组从头消费可以获取到全部历史消息。
  4. 停止旧broker后,正在运行的客户端应用正常生产消费消息,新建客户端连接旧broker失败,连接新broker正常

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

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

相关文章

“智能控制的新纪元:2025年机器学习与控制工程国际会议引领变革

ICMLCE 2025 | 机器学习与控制工程国际会议 ✨宝子们,今天要为大家介绍的是一个在机器学习和控制工程领域备受瞩目的国际学术盛会——2025年机器学习与控制工程国际会议(ICMLCE 2025)。本次大会将在美丽的大理举行,旨在汇聚全球顶…

公路边坡安全监测中智能化+定制化+全面守护的应用方案

面对公路边坡的安全挑战,我们如何精准施策,有效应对风险?特别是在强降雨等极端天气下,如何防范滑坡、崩塌、路面塌陷等灾害,确保行车安全?国信华源公路边坡安全监测解决方案,以智能化、定制化为…

Julia语言的语法

深入理解Julia语言:高效科学计算的新宠 引言 在当今高速发展的技术环境中,科学计算和数据分析的需求日益增长。作为一种新兴的编程语言,Julia以其高效的性能和简洁的语法吸引了众多研究人员和开发者的注意。本文将深入探讨Julia语言的设计理…

pyqt和pycharm环境搭建

安装 python安装: https://www.python.org/downloads/release/python-3913/ python3.9.13 64位(记得勾选Path环境变量) pycharm安装: https://www.jetbrains.com/pycharm/download/?sectionwindows community免费版 换源: pip config se…

二级建造师考试题库及答案

一、多选题 1.建设行政管理部门对工程质量监督的内容有()。 A.抽查质量检测单位的工程质量行为 B.抽查工程质量责任主体的工程质量行为 C.审核工程建设标准的完整性 D.参与工程质量事故的调查处理 E.监督工程竣工验收 答案:ABDE 解析…

在dynadot进行NS域名服务器设置后网站无法访问的可能原因

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 其他索引: Dynadot平台操作教程索引…

【初接触】【学习】编译 Rust 为 WebAssembly

前言 需要先了解以下知识: WebAssemblyRustwasm_bindgenwasm-packjs-sysweb-sysJavaScriptHTMLCSSwebpack 假设您已经了解所有知识点,并且您的环境中已安装了 Node.js和npm 以及 Rust 的完整开发工具链(包括 rustc、cargo 和 rustup&#…

探秘仓颉编程语言:使用体验与功能剖析

目录 一、引言:仓颉登场,编程新纪元开启 二、初体验:搭建环境与 “Hello World” (一)环境搭建指南 (二)Hello World 初印象 三、核心特性剖析:智能、高效、安全多维解读 &…

[Java]合理封装第三方工具包(附视频)

-1.视频链接 视频版: 视频版会对本文章内容进行详细解释 [Java]合理封装第三方工具包_哔哩哔哩_bilibili 0.核心思想 对第三方工具方法进行封装,使其本地化,降低记忆和使用成本 1.背景 在我们的项目中,通常会引用一些第三方工具包,或者是使用jdk自带的一些工具类 例如: c…

Ubuntu环境 nginx.conf详解(三)

1、nginx.conf 结构详解: http 块:用于配置 HTTP 服务器的相关设置,包括处理 HTTP 和 HTTPS。 stream 块:用于配置 TCP/UDP 代理服务器,适用于需要进行四层负载均衡的情况。 ... # 全局块 events {...} …

AI真的可以“陪伴”吗?

人们普遍渴求陪伴,仅有4.6%的人认为自己的陪伴需求都被满足了,剩下大部分人群都面临着各种各样的社交困境。 “陪伴”有多个层次。最狭义的“陪伴”是在人与人之间发生的;但稍微放宽一些,宠物甚至植物、家具也会让…

Golang 的并发优势

在如今的编程领域,一个程序能够同时处理多个任务的能力非常重要,这就是所谓的并发处理。而 Golang 在并发编程方面表现十分出色,具有很多独特的优势,简直不要太简单。 一、轻量级的协程(Goroutine) 在传统…

基于cobra开发的k8s命令行管理工具k8s-manager

基于cobra开发的k8s命令行管理工具k8s-manager 如果觉得好用,麻烦给个Star!通用配置1 node 分析所有node的资源情况2 analysis 分析Node节点上的资源使用构成3 image 获取指定namespace的所有镜像地址4 resource 获取指定namespace的所有limit 与 Requests大小5 top…

从零开始C++游戏开发之第七篇:游戏状态机与回合管理

在游戏开发的道路上,状态管理是一个无法绕开的重要课题。尤其是在棋牌类游戏中,游戏的进行需要有条不紊地按照回合推进,同时管理多个游戏状态,如“等待玩家加入”、“游戏进行中”、“结算阶段”等。如何优雅且高效地实现这些逻辑…

USB Hub 检测设备

系列文章目录 xHCI 简单分析 USB Root Hub 分析 USB Hub 检测设备 文章目录 系列文章目录一、引言二、hub_eventshub_port_connect_changeusb_alloc_devusb_set_device_statehub_port_initusb_new_device 一、引言 USB Hub 检测设备 一文中讲到,当有 USB 插入时&…

MySQL从入门到入土---MySQL表的约束 (内含实践)---详细版

目录 引入: null 与not null default: comment列描述 : not null 和 default: zerofill : 主键:primary key 复合主键: 自增长:auto_increment 唯一键:unique key 外键&a…

Redis大Key问题全解析

1. 引言 1.1 什么是Redis大Key? Redis大Key是指单个Key对应的数据量过大,占用过多的内存或导致操作耗时较长的现象。大Key可以是以下几种常见数据类型中的任意一种: String类型:单个字符串的长度过大。List类型:包含…

VIVO Android面试题及参考答案

请重写算法题:求数组的全排列。 思路: 要获取一个数组的全排列,我们可以利用回溯算法。具体来说,回溯算法通过递归的方式逐步生成排列,在每一步都将一个元素加入排列中,然后在下一步递归中排除已选元素,回溯的时候撤销选择,尝试其他可能。 步骤: 递归生成排列: 使…

易语言 OCR 文字识别

一.引言 文字识别,也称为光学字符识别(Optical Character Recognition, OCR),是一种将不同形式的文档(如扫描的纸质文档、PDF文件或数字相机拍摄的图片)中的文字转换成可编辑和可搜索的数据的技术。随着技…

postgreSql对分钟级的降雨数据进行插值为整小时

postgreSql对分钟级的降雨数据进行插值为整小时 1.SQL语句实现:对分钟级的降雨数据进行插值为整小时2.SQL语句实现:将水库、水文站、水闸按照分钟时间插值到小时 1.SQL语句实现:对分钟级的降雨数据进行插值为整小时 --核查某个小流域的降雨量…