kafka的备份策略:从备份到恢复

news2025/2/12 8:05:48

文章目录

  • 一、全量备份
  • 二、增量备份
  • 三、全量恢复
  • 四、增量恢复

前言:Kafka的备份的单元是partition,也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互,follow从leader副本进行拉数据进行同步,从而保证数据的冗余,防止数据丢失的目的。如图:
在这里插入图片描述
Kafka 数据备份类型:

  • 全量备份
  • 增量备份

全量备份是将整个 Kafka 的数据复制到一个不同的地方。
增量备份是在全量备份后仅仅备份增量的数据。

一、全量备份

# 指定备份的主题
BACKUP_TOPIC=test #指定备份的数据目录
BACKUP_DIR=/tmp/backup #创建备份目录
mkdir -p $BACKUP_DIR #备份主题数据
kafka-console-consumer.sh --bootstrap-server localhost:9092  --topic $BACKUP_TOPIC --from-beginning > $BACKUP_DIR/$BACKUP_TOPIC.txt。

以下是该命令的详细解释:

kafka-console-consumer.sh:这是 Kafka 提供的命令行消费者工具的可执行文件路径。
--bootstrap-server localhost:9092:指定 Kafka 的引导服务器地址和端口,这里是 localhost 的 9092 端口。
--topic $BACKUP_TOPIC:指定要消费的 Kafka 主题,这里是变量 $BACKUP_TOPIC 指定的主题。
--from-beginning:指定从主题的起始位置开始消费消息,而不是从最新的消息开始。
>:这是一个重定向符号,将输出导入到指定的文件中。
$BACKUP_DIR/$BACKUP_TOPIC.txt:指定输出文件的路径和名称,这里是变量 $BACKUP_DIR 指定的目录下创建名为 $BACKUP_TOPIC.txt 的文件。
通过执行这个命令,Kafka 将从指定的主题中读取消息,并将它们写入到指定的文本文件中,从而实现备份的目的。即使用kafka-console-consumer.sh,工具将主题$BACKUP_TOPIC的数据备份到$BACKUP_DIR目录下的$BACKUP_TOPIC.txt文件中。

二、增量备份

增量备份需要借助第三方工具,例如 Kafka 的 MirrorMaker 等实现 。
下面是 MirrorMaker 的用法示例:

# 指定源和目的地址
SOURCE_HOST=localhost:9092
DESTINATION_HOST=backup-host:9092。
# 创建 MirrorMaker 配置文件
cat > /tmp/mirror-maker.properties <<EOF
consumer.bootstrap.servers=$SOURCE_HOST
producer.bootstrap.servers=$DESTINATION_HOST
EOF。
# 运行 MirrorMaker
kafka-run-class.sh kafka.tools.MirrorMaker \
  --consumer.config /tmp/mirror-maker.properties \
--producer.config /tmp/mirror-maker.properties \
--whitelist $BACKUP_TOPIC。

上述代码中创建一个 MirrorMaker 配置文件将源端的数据同步到目标端–whitelist参数指定备份的主题。

下面介绍Kafka数据恢复

三、全量恢复

# 指定恢复的主题
RESTORE_TOPIC=test 
# 指定备份文件路径
BACKUP_FILE=/tmp/backup/$RESTORE_TOPIC.txt。
# 恢复主题数据
kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic $RESTORE_TOPIC  \
--new-producer \
< $BACKUP_FILE

上述代码将$BACKUP_FILE文件中的数据恢复到$RESTORE_TOPIC主题中。
注意:该脚本也是同步操作,恢复时间较长时建议使用异步操作。

kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic $RESTORE_TOPIC  \
--new-producer  \
--async \
< $BACKUP_FILE。

四、增量恢复

增量恢复需要使用 MirrorMaker 来实现,下面是 MirrorMaker 的用法示例:
# 创建MirrorMaker 配置文件
cat > /tmp/mirror-maker.properties <<EOF
consumer.bootstrap.servers=backup-host:9092producer.bootstrap.servers=localhost:9092 
EOF
# 运行MirrorMaker
kafka-run-class.sh kafka.tools.MirrorMaker \
--consumer.config /tmp/mirror-maker.properties \
--producer.config /tmp/mirror-maker.properties \ 
--whitelist $RESTORE_TOPIC  (或者是*,如: --whitelist “.*”)

上述代码中创建一个 MirrorMaker 配置文件将备份端的数据同步到目标端$RESTORE_TOPIC主题中。
注意:增量恢复会将备份端数据的变化同步到目标端,因此恢复时必须先将备份端数据同步完整。
实例:
consumer.properties文件:

#cat consumer.properties
bootstrap.servers=192.168.3.194:9092
group.id=mirrormaker
auto.offset.reset=earliest

producer.properties文件:
#cat producer.properties
bootstrap.servers=192.168.2.123:9092

运行mirror-maker
cat run-mirrormaker.sh
kafka-run-class.sh kafka.tools.MirrorMaker \
 --consumer.config ./consumer.properties \
--producer.config ./producer.properties \
--offset.commit.interval.ms 5000 --num.streams 2 \
--whitelist "test0428"

参数说明:
–consumer.config 消费者的配置文件(要消费的集群)
–producer.config 指定生产配置文件(要发送到的目标集群)
–whitelist 要同步的topic白名单,可以匹配正则,也可以指定具体topic
–offset.commit.interval.ms 消费端提交offset时间间隔
–num.streams MirrorMaker 要创建多少个 KafkaConsumer 实例

运行后会提示:
WARNING: The default partition assignment strategy of the mirror maker will change from ‘range’ to ‘roundrobin’ in an upcoming release (so that better load balancing can be achieved). If you prefer to make this switch in advance of that release add the following to the corresponding config: ‘partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor’
主要是说MirrorMaker使用的消费策略是 Range ,以后可能改成 “轮训策略” ,我们可以手动指定“轮询策略”。

在Consuemr.properties中设置:

partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor

此时我们已经运行成功,直接去查看是否可以消费成功即可。
注意:同步前最后将目标集群的Topic创建好,否则会使用Broker默认配置。
使用一个脚本来做备份和恢复:
简单的脚本,用于备份和恢复kafka数据:

#!/bin/bash
function backup_topic() {
    local topic=$1
    local backup_dir=$2

    echo "Starting backup for topic: $topic"

    mkdir -p $backup_dir
    kafka-console-consumer.sh \
        --bootstrap-server localhost:9092 \
        --topic $topic \
        --from-beginning \
        > $backup_dir/$topic.txt

    echo "Backup completed for topic: $topic"
}
function restore_topic() {
    local topic=$1
    local backup_file=$2

    echo "Starting restore for topic: $topic"
    kafka-console-producer.sh \
        --broker-list localhost:9092 \
        --topic $topic \
        --new-producer \
        < $backup_file
    echo "Restore completed for topic: $topic"
}
backup_topic example-topic /tmp/backup
restore_topic example-topic /tmp/backup/example-topic.txt

上述代码中定义了两个函数 backup_topic 和 restore_topic,分别用于备份和恢复 Kafka主题数据。
在这个脚本中备份的主题是 example-topic,备份数据存储的目录是 /tmp/backup。
要恢复数据,请调用 restore_topic 函数,并通过参数指定要恢复的主题和备份文件的路径。在脚本的最后示例恢复了 example-topic 主题的备份数据。

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

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

相关文章

Ubuntu网络配置(桥接模式, nat模式, host主机模式)

windows上安装了vmware虚拟机&#xff0c; vmware虚拟机上运行着ubuntu系统。windows与虚拟机可以通过三种方式进行通信。分别是桥接模式&#xff1b;nat模式&#xff1b;host模式 一、桥接模式 所谓桥接模式&#xff0c;也就是虚拟机与宿主机处于同一个网段&#xff0c; 宿主机…

视频会议是如何实现屏幕标注功能的?

现在主流的视频会议软件都有屏幕标注功能&#xff0c;屏幕标注功能给屏幕分享者讲解分享内容时提供了极大的方便。那我们以傲瑞视频会议&#xff08;OrayMeeting&#xff09;为例&#xff0c;来讲解屏幕标注是如何实现的。 傲瑞会议的PC端&#xff08;Windows、信创Linux、银河…

任务8 数据库服务配置与管理

数据库服务概述 数据库管理系统 用于建立、修改、访问和维护数据库。 具有多用户和多任务的特性&#xff0c;支持多个用户和应用程序同时进行操作。 数据库管理员通过DBMS对数据库进行统一的管理和控制。 维护数据的安全性和完整性。 按照数据在数据库中的存储和管理方式…

汇通达:下沉市场零售业态进入产业互联网2.0时代

纵观2024年&#xff0c;面对全球经济增长放缓、人口红利减弱的挑战&#xff0c;消费品牌“向下”拓展&#xff0c;下沉至低线级城市乃至村镇地区的趋势愈发明显。 这是因为在三四线城市以及农村市场&#xff0c;消费需求增速较快。CIC灼识咨询在《2024中国下沉市场蓝皮书》中提…

直流无刷电机驱动与控制4-stm32定时器-六步换相输出

第F4_专题07 直流无刷电机驱动与控制(第4节)_STM32定时器基础_哔哩哔哩_bilibili STM32定时器霍尔传感器模式 1、输出比较 2、左侧通入霍尔传感器信号:经过异或门,输出0 1 0 1 0 1等信号。 3、通道输入信号时,每个电平跳变,翻转,都输出一个脉冲。所以TI1F_ED输入如下所示…

【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…

Rofin罗芬激光PowerLine L300 PL400 Manual 软件

Rofin罗芬激光PowerLine L300 PL400 Manual 软件

WPF系列五:图形控件Ellipse

简介 使用 Ellipse 控件绘制椭圆形和圆形。 若要绘制椭圆形&#xff0c;请创建 Ellipse 元素&#xff0c;并指定其 Width 和 Height。 使用其 Fill 属性指定用于绘制椭圆形内部的颜色。 使用其 Stroke 属性指定用于绘制椭圆形轮廓的颜色。 StrokeThickness 属性指定椭圆形轮廓…

【hackmyvm】Adroit靶机wp

tags: HMVjava反编译SQL注入 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集3. java反编译4. sql注入5. 解密密码6. 提权 靶机链接 https://hackmyvm.eu/machines/machine.php?vmAdroit 作者 alienum 难度 ⭐️⭐️⭐️⭐️️ 2. 信息收集 ┌──(root㉿kali)-[~] └…

map和weakMap的区别

Map 和 WeakMap 都是 JavaScript 中用于存储键值对的数据结构&#xff0c;但它们在设计目的、行为和使用场景上有一些重要的区别。 以下是 Map 和 WeakMap 之间的主要差异&#xff1a; 1. 键的类型 Map&#xff1a;可以使用任何类型的值作为键&#xff0c;包括原始类型&#x…

【专题】2024年悦己生活消费洞察报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38654 在当今时代背景下&#xff0c;社会发展日新月异&#xff0c;人们的生活方式与消费观念正经历深刻变革。MoonFox 月狐数据的《2024 年悦己生活消费洞察报告》聚焦于这一充满活力与变化的消费领域。随着就业、婚姻等社会压力的…

OpenCV-Python实战(5)——图形绘制基础

一、直线 cv2.line(img*,pt1*,pt2*,color*,thickness*,lineTypeLINE_8) img&#xff1a;绘图的背景&#xff08;画布&#xff09;。 pt1、pt2&#xff1a;始/终点坐标&#xff0c;格式为元组&#xff08;&#xff09;。 color&#xff1a;直线颜色&#xff0c;BGR格式。 t…

[原创](Modern C++)现代C++的第三方库的导入方式: 例如Visual Studio 2022导入GSL 4.1.0

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共23年] 职业生涯: 21年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse…

vue3----思维导图

介绍&#xff1a;这是一个前端思维导图展示的插件&#xff0c;以及下载svg功能&#xff0c;内部用的scss&#xff0c;不一样的需要改一下&#xff0c;整体也没写太复杂。 效果&#xff1a; 依赖&#xff1a; {"markmap-common": "^0.14.2","markmap…

.NET 8.0 项目升级到 .NET 9.0

本文项目从.NETCore3.1开始一直延续到目前&#xff0c;如果您没有升级过&#xff0c;请参考以下文章&#xff1a; .Net Core 2.2 升级到 .Net Core 3.1&#xff1a;https://blog.csdn.net/hefeng_aspnet/article/details/131259537 NetCore3.1或Net6.0项目升级到Net7.0&#x…

第23天:信息收集-APP应用产权渠道服务资产通讯抓包静态提取动态调试测试范围

#知识点 1、信息收集-APP应用-公开信息-知识产权&开发者定位 2、信息收集-APP应用-资产信息-抓包&静态提取&动态调试 一、APP渗透测试的范围->应涵盖APP所有功能和组件&#xff0c;包括但不限于以下几个方面&#xff1a; 1、前端安全&#xff1a;包括界面交互、…

Virtualbox安装ubuntu20虚拟机无法打开终端

用Virtualbox安装ubuntu20系统&#xff0c;安装好之后&#xff0c;无法打开终端&#xff1b; 原因&#xff1a;语言设置导致的问题&#xff1b; 修改方法&#xff1a;将/etc/default/locale里LANG这行的值修改为&#xff1a;en_US.UTF-8即可&#xff1b; 步骤&#xff1a;先在…

PH热榜 | 2024-12-25

1. Assistive24 标语&#xff1a;为残障人士提供的免费辅助技术 介绍&#xff1a;Assistive24 是一款免费的 Chrome 浏览器扩展程序&#xff0c;可以帮助患有注意力缺陷多动障碍 (ADHD)、阅读障碍 (dyslexia) 和低视力等障碍的用户更方便地浏览网页。它提供语音导航、自定义…

Torch.gather

1.官方文档 2.使用要点 输入index的shape等于输出value的shape输入index的索引值仅替换该index中对应dim的index值最终输出为替换index后在原tensor中的值 最终输出的shape和index的shape相同 根据dim的值 选择将index[i,j,k]这个结果替换input[i,j,k]里面对应的i or j or…

Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果,Kotlin(3)

Android使用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果&#xff0c;Kotlin&#xff08;3&#xff09; import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Canvas impor…