当前位置: 首页 > news >正文

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

文章目录

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

前言: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=earliestproducer.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=$1local backup_dir=$2echo "Starting backup for topic: $topic"mkdir -p $backup_dirkafka-console-consumer.sh \--bootstrap-server localhost:9092 \--topic $topic \--from-beginning \> $backup_dir/$topic.txtecho "Backup completed for topic: $topic"
}
function restore_topic() {local topic=$1local backup_file=$2echo "Starting restore for topic: $topic"kafka-console-producer.sh \--broker-list localhost:9092 \--topic $topic \--new-producer \< $backup_fileecho "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 主题的备份数据。

相关文章:

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

文章目录 一、全量备份二、增量备份三、全量恢复四、增量恢复 前言&#xff1a;Kafka的备份的单元是partition&#xff0c;也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互&#xff0c;follow从leader副本进…...

【畅购商城】微信支付之支付回调和支付状态

目录 Nuxt.js IP 启动 支付回调 回调接口 后端实现 查看支付状态 后端实现 前端实现 ​​​​​​​前置技术&#xff1a;RabbitMQ ​​​​​​​更新订单状态 ​​​​​​​Nuxt.js IP 启动 "config": {"nuxt": {"host": "0.0…...

【Compose multiplatform教程18】多平台资源的设置和配置

要正确配置项目以使用多平台资源&#xff0c;请执行以下操作&#xff1a; 添加库依赖项。 为每种资源创建必要的目录。 为限定资源创建其他目录&#xff08;例如&#xff0c;深色 UI 主题或本地化字符串的不同图像&#xff09;。 依赖项和目录设置 要访问多平台项目中的资源…...

MT6765核心板_MTK6765安卓核心板规格参数_联发科MTK模块开发

MTK6765安卓核心板是基于联发科高效八核处理器平台开发的一款强大硬件解决方案。这款核心板的核心是采用12纳米工艺打造的MTK6765 CPU&#xff0c;具备四个主频高达2.3GHz的CORTEX-A53核心和四个主频为1.8GHz的CORTEX-A53核心&#xff0c;提供了卓越的处理性能。用户可以根据需…...

conda常用维护命令

文章目录 1. 初始化和更新 Conda更新 Conda初始化 Conda&#xff08;如果需要&#xff09; 2. 管理环境创建新环境激活环境停用当前环境列出所有环境删除环境 3. 管理包安装包卸载包更新包更新所有包查找包列出已安装包 4. 导入导出环境导出环境配置从文件创建环境 5. 管理通道…...

Html——10 关键字和描述

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>淘宝网</title><meta name"keywords" content"我要自学网,自学HTML,自学CSS"/><meta name"description" content"要设置…...

Mysql(MGR)和ProxySQL搭建部署-Docker版本

项目路径&#xff1a;D:\study\backend\mysql\mgr 一、Mysql(MGR) 1.1 docker-compose.yaml volumes: # MySQL配置文件目录 - "./mysql-1/conf.d/my.cnf:/etc/mysql/my.cnf" # MySQL工作目录 - "./mysql-1/data:/var/lib/mysql" …...

QML学习(一) Qt Quick和QML介绍以及适用场景说明

一.介绍 1.Qt Quick 介绍 Qt Quick 提供了一套高动态&#xff0c;丰富的 QML 元素来定制用户界面的说明性框架。Qt Quick 有助于程序开发员与界面设计员的合作为便携式设备建立流畅的用户界面&#xff0c;例如&#xff1a;移动电话、媒体播放器&#xff0c;机顶盒以及上网本等…...

深入理解 PyTorch 的 view() 函数:以多头注意力机制(Multi-Head Attention)为例 (中英双语)

深入理解 PyTorch 的 view() 函数&#xff1a;以多头注意力机制&#xff08;Multi-Head Attention&#xff09;为例 在深度学习模型的实现中&#xff0c;view() 是 PyTorch 中一个非常常用的张量操作函数&#xff0c;它能够改变张量的形状&#xff08;shape&#xff09;而不改…...

使用PHP函数 “setcookie“ 设置cookie

在网站开发中&#xff0c;cookie是一种非常常用的技术&#xff0c;它用于在用户的浏览器中存储少量的数据&#xff0c;以便在不同页面之间传递信息。PHP提供了一个名为 "setcookie" 的函数&#xff0c;用于设置cookie的值和属性。在本文中&#xff0c;我们将学习如何…...

redis优化

在高并发、高性能、高可用系统中&#xff0c;Redis 的优化至关重要。以下是一些在面试中可以详细说明的 Redis 优化策略&#xff0c;以及具体的实践经验和技术亮点&#xff1a; 1. 数据模型与结构设计优化 使用合适的数据结构 &#xff1a;根据业务需求选择合适的 Redis 数据结…...

数据分析的革命——解读云数据库 SelectDB 版的力量

在当今数据驱动的时代&#xff0c;实时数据分析已成为企业决策中的关键一环。如何在海量数据中快速找到核心价值&#xff0c;如何让决策者在毫秒间洞悉变化&#xff0c;这不仅考验着企业的技术能力&#xff0c;也对基础设施提出了新的要求。云数据库 SelectDB 版&#xff0c;正…...

Ngnix介绍、安装、实战及用法!!!

一、Nginx简介 1、Nginx概述 Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强&#xff0c;能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数 。 2、正向代理 正向代理&#xff1a;如果把局…...

算法基础一:冒泡排序

一、冒泡排序 1、定义 冒泡排序&#xff08;英语&#xff1a;Bubble Sort&#xff09;是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序&#xff08;如从大到小、首字母从A到Z&#xff09;错误就把他们交换过来。 …...

云开发实战教程:手把手教你高效开发应用

声明&#xff1a;本文仅供实践教学使用&#xff0c;没有任何打广告成分 目录 1.引言 2.云开发 Copilot介绍 云开发 Copilot 的功能与特点 3.环境准备 步骤一登录账号 步骤二新建环境 4.开发实践 4.1AI 生成低代码应用 4.2AI 生成低代码页面/区块 4.3AI 优化低代码组件…...

Git基本操作快速入门(30min)

Git基本操作快速入门&#xff08;30min&#xff09; 文章目录 Git基本操作快速入门&#xff08;30min&#xff09;1. 建立本地仓库2. 本地仓库链接到远端仓库3. 将本地仓库推送到远端4. Git常用命令 作为一名程序员&#xff0c;使用Github来进行代码的版本管理是必修课&#xf…...

VS Code AI开发之Copilot配置和使用详解

随着AI开发工具的迅速发展&#xff0c;GitHub Copilot在Cursor、Winsuf、V0等一众工具的冲击下&#xff0c;推出了免费版本。接下来&#xff0c;我将为大家介绍GitHub Copilot的配置和使用方法。GitHub Copilot基于OpenAI Codex模型&#xff0c;旨在为软件开发者提供智能化的代…...

QT中使用OpenGL function

1.前言 QT做界面编程很方便&#xff0c;QTOpenGL的使用也很方便&#xff0c;因为QT对原生的OpenGL API进行了面向对象化的封装。 如&#xff1a; 函数&#xff1a;initializeOpenGLFunctions()...... 类&#xff1a;QOpenGLVertexArrayObject、QOpenGLBuffer、QOpenGLShader…...

STM32-笔记16-定时器中断点灯

一、实验目的 使用定时器 2 进行中断点灯&#xff0c;500ms LED 灯翻转一次。 二&#xff0c;定时器溢出时间计算 Tout&#xff1a;定时器溢出时间 Ft&#xff1a;定时器的时钟源频率 ARR&#xff1a;自动重装载寄存器的值&#xff08;可设置ARR从0开始&#xff0c;但是计数到…...

Live555、FFmpeg、GStreamer介绍

Live555、FFmpeg 和 GStreamer 都是处理流媒体和视频数据的强大开源框架和工具&#xff0c;它们广泛应用于实时视频流的推送、接收、处理和播放。每个框架有不同的设计理念、功能特性以及适用场景。下面将详细分析这三个框架的作用、解决的问题、适用场景、优缺点&#xff0c;并…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...