kafka配置ubuntu怎样备份恢复
小樊
37
2025-12-19 06:51:42
Kafka 在 Ubuntu 的备份与恢复指南
一 备份与恢复总览
- 在 Ubuntu 上,Kafka 的“备份/恢复”通常包含两类对象:
- 数据与主题内容(消息本身);
- 配置与元数据(server.properties、ACL、Topic 配置等)。
- 常用做法:
- 数据与主题内容:用 kafka-console-consumer.sh 导出为文件,或用 MirrorMaker 2 做集群间镜像;
- 配置与元数据:直接拷贝配置目录并导出 Topic 配置;
- 恢复时:用 kafka-console-producer.sh 回灌,或用 MirrorMaker 2 反向同步。
- 注意:Kafka 并非传统数据库,优先依赖 复制机制 与 ISR(In-Sync Replicas) 提供高可用;跨机房/跨地域的“备份”通常通过镜像主题实现。
二 备份步骤
- 备份配置与元数据
- 拷贝服务端配置与证书:
- 配置文件:/etc/kafka/server.properties(以及 producer.properties / consumer.properties)
- 证书与密钥:如 /etc/kafka/certs/(存在时)
- 命令示例:
- sudo cp -a /etc/kafka /backup/kafka-config-$(date +%F)
- sudo tar czf /backup/kafka-config-$(date +%F).tar.gz -C /backup kafka-config-$(date +%F)
- 导出 Topic 配置(需 Kafka 安装目录下执行):
- /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic your_topic > /backup/topic-your_topic-config.txt
- 备份主题数据(内容)
- 方式 A(简单导出到文件,便于审计/小数据量):
- /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic your_topic --from-beginning --timeout-ms 10000 > /backup/topic-your_topic-$(date +%F).txt
- 方式 B(集群间镜像,适合持续/增量“备份”):
- 在“备份集群”创建 MirrorMaker 2 配置 mm2.properties:
- clusters = source, backup
- source.bootstrap.servers = source-kafka:9092
- backup.bootstrap.servers = backup-kafka:9092
- source->backup.enabled = true
- source->backup.topics = your_topic1,your_topic2
- replication.factor = 3
- checkpoints.topic.replication.factor = 3
- offset-syncs.topic.replication.factor = 3
- 启动镜像:
- /opt/kafka/bin/connect-mirror-maker.sh mm2.properties
- 说明:该方式本质为持续同步,可做“准实时备份/容灾”。
三 恢复步骤
- 恢复配置与元数据
- 停止 Kafka 服务:
- sudo systemctl stop kafka(如使用 systemd)
- 恢复配置:
- sudo tar xzf /backup/kafka-config-2025-12-19.tar.gz -C /
- 按需调整 server.properties(如 broker.id、listeners、log.dirs、zookeeper.connect / bootstrap.servers 等)
- 启动服务:
- sudo systemctl start kafka
- 恢复主题数据(内容)
- 方式 A(从文件回灌,适合小数据量或一次性恢复):
- /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic your_topic < /backup/topic-your_topic-2025-12-19.txt
- 方式 B(用 MirrorMaker 2 反向同步,适合持续/增量恢复):
- 在“恢复集群”创建 mm2-restore.properties:
- clusters = backup, restore
- backup.bootstrap.servers = backup-kafka:9092
- restore.bootstrap.servers = restore-kafka:9092
- backup->restore.enabled = true
- backup->restore.topics = your_topic1,your_topic2
- replication.factor = 3
- 启动:
- /opt/kafka/bin/connect-mirror-maker.sh mm2-restore.properties
- 校验:
- 查看 Topic 详情:/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic your_topic
- 消费少量消息验证:/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic your_topic --from-beginning --max-messages 10
四 策略与注意事项
- 高可用优先:Kafka 通过 多副本 与 ISR 保障可用性,跨机房“备份”建议用 MirrorMaker 2 镜像主题 实现,而非仅依赖离线拷贝。
- 一致性:离线导出/回灌期间可能产生重复或乱序,业务侧需具备 幂等/去重 能力。
- 版本兼容:跨大版本恢复需评估 消息格式/协议 兼容性。
- 定期演练:定期做 恢复演练 与 备份完整性校验,确保流程可用。
- 安全:备份文件与配置可能含敏感信息,注意 权限控制 与 加密存储。