Mirror Maker 2.0停止消息复制时的非重启故障处理方案咨询
Mirror Maker 2.0复制中断的非重启式故障排查与恢复方法
当MM2停止向目标主题复制消息时,优先通过定位根源+针对性修复解决问题,同时采取临时措施降低对目标消费者的影响,具体操作如下:
一、快速定位故障原因
- 查看MM2运行日志(默认路径
logs/mirror-maker.log),搜索ERROR或WARN关键字,直接定位具体问题(比如ACL权限拒绝、主题分区不匹配、网络超时) - 用JMX或MM2内置指标监控关键数据:
source-record-lag:源主题未同步的消息量,持续增长说明拉取受阻failed-produce-requests:向目标集群推送失败的请求数,过高说明目标集群或权限存在问题
- 验证源/目标集群连通性:在MM2节点执行
kafka-topics.sh --list --bootstrap-server <源/目标集群地址>,确认能正常访问主题
二、无需重启的针对性修复
- 权限问题:若日志显示
AuthorizationException,直接在源集群给MM2客户端账号添加READ权限,目标集群添加WRITE权限,MM2会自动重试请求,无需重启实例 - 主题元数据不一致:
- 源主题新增分区但目标未同步:执行
kafka-topics.sh --alter --bootstrap-server <目标集群> --topic <目标主题> --partitions <新增后的总分区数>,MM2后续会自动同步新分区数据 - 主题配置不匹配:用
kafka-configs.sh --alter --bootstrap-server <目标集群> --entity-type topics --entity-name <目标主题> --add-config <源主题配置>同步配置
- 源主题新增分区但目标未同步:执行
- 网络临时中断:若为网络波动导致连接失败,动态调整MM2的producer/consumer参数(修改运行中配置文件后,MM2会自动加载):
- 调大
producer.retries(比如设为10)延长重试次数 - 增加
consumer.max.poll.interval.ms避免消费者超时被踢出组
- 调大
- 偏移量异常:若MM2内部偏移量主题(
mm2-offsets.<集群别名>)损坏,用kafka-consumer-groups.sh手动重置消费位点:kafka-consumer-groups.sh --bootstrap-server <源集群地址> --group <mm2-consumer-group-id> --reset-offsets --to-latest --topic <源主题名> --execute
三、降低目标消费者影响的临时方案
- 临时切换备用主题:若目标集群有提前同步的备用主题(比如定期快照或多工具同步),修改消费者配置的
topic.name切换到备用主题,待MM2恢复后再合并两个主题的数据 - 手动控制消费者偏移量:将目标消费者的
enable.auto.commit设为false,仅在确认消息完整时手动提交偏移量,避免因数据缺失导致重复消费或丢消息 - 启用消费者重试:给目标消费者配置
retries=5和retry.backoff.ms=1000,让消费者在遇到数据中断时自动重试,等待MM2恢复同步
内容的提问来源于stack exchange,提问作者Tushar
相关产品推荐
相关产品推荐

