Kafka MirrorMaker 2.0 复制流问题:始终仅写入同一集群
Kafka MirrorMaker 2.0 单向复制异常排查方案
核心问题根因优先级排序
- 第一优先级:配置转义字符错误
你当前配置中复制流的箭头使用了HTML转义字符>,Properties配置文件无法识别该转义符,等于west->central.enabled = true这条配置完全没有生效,MM2无法识别到你定义的复制流向,会默认加载残留的旧配置或者反向流配置。
请直接修改配置文件中的复制流配置,去掉转义符,写成原生格式:
west->central.enabled = true central->west.enabled = false
- 第二优先级:MM2内部主题残留旧配置
MM2底层基于Kafka Connect运行,首次启动后会把所有配置持久化到集群的内部主题中,后续重启会优先读取集群存储的旧配置,完全忽略本地配置文件的改动,这就是你修改了bootstrap地址仍然不生效的核心原因。
修复步骤
- 清理两个集群中所有遗留的MM2内部主题,避免旧配置干扰:
# 查看west集群MM2相关主题 kafka-topics.sh --bootstrap-server kafka-west.com:30002 --list | grep -E "mm2-|checkpoints.internal|heartbeats" # 批量删除west集群旧MM2主题 kafka-topics.sh --bootstrap-server kafka-west.com:30002 --delete --topic "mm2-.*" --topic ".*checkpoints.internal" --topic heartbeats # 对central集群执行同样的清理操作 kafka-topics.sh --bootstrap-server kafka-central.com:30002 --list | grep -E "mm2-|checkpoints.internal|heartbeats" kafka-topics.sh --bootstrap-server kafka-central.com:30002 --delete --topic "mm2-.*" --topic ".*checkpoints.internal" --topic heartbeats
如果集群开启了主题删除保护,需要先临时调整delete.topic.enable=true配置再执行删除
- 给本次灾备场景的MM2配置单独指定新的内部主题前缀,完全隔离旧配置:
在mm2.properties中新增如下配置:
# 自定义内部主题前缀,避免和历史配置冲突 config.storage.topic = mm2-configs-west-central-dr offset.storage.topic = mm2-offsets-west-central-dr status.storage.topic = mm2-status-west-central-dr # 显式指定要同步west集群的所有主题到central,避免默认过滤规则漏掉数据 west->central.topics = .* west->central.groups = .*
- 启动MM2后验证日志,确认复制流正常加载:
搜索启动日志中的关键字Replicating from,确认输出Replicating from west to central的日志,代表复制流配置已经生效。
内容的提问来源于stack exchange,提问作者Miguel Cardoso
相关产品推荐
相关产品推荐

