如何使用MirrorMaker 2复制AWS MSK中的空主题
解决MirrorMaker 2同步空主题的问题
方法1:配置定期主题元数据同步
MirrorMaker 2默认仅在源主题有消息写入时触发主题同步,空主题因无偏移量更新不会被检测到。通过以下配置可强制定期扫描源集群主题元数据,同步空主题:
- 开启主题配置同步:添加
source->target.sync.topic.configs=true,确保目标集群主题的分区数、副本数等配置与源一致 - 指定需同步的主题范围:通过
source->target.topic.list设置具体空主题列表或用通配符*覆盖所有主题 - 设置元数据扫描间隔:配置
source->target.sync.topics.interval.ms,比如设为30000(30秒),定期触发同步检查
示例配置片段:
source-cluster: bootstrap.servers: <源MSK集群地址> target-cluster: bootstrap.servers: <目标MSK集群地址> source->target: enable: true enable.topic.creation: true sync.topic.configs: true topic.list: "health-check-topic-1,health-check-topic-2" # 或用*匹配所有主题 sync.topics.interval.ms: 30000
方法2:缩短元数据刷新间隔
Kafka 3.5.0版本的MM2可通过source->target.metadata.max.age.ms降低元数据缓存时长,让MM2更快发现新创建的空主题:
source->target: metadata.max.age.ms: 10000 # 10秒刷新一次元数据
方法3:结合AdminClient预创建主题(针对特定场景)
若仅需同步指定空主题,可先通过Kafka命令行工具在源集群创建主题,再配合MM2的定期扫描配置自动同步到目标集群:
示例创建空主题命令:
./kafka-topics.sh --create --topic health-check-empty --bootstrap-server <源MSK地址> --partitions 1 --replication-factor 2
注意事项
- 确保MM2运行账号对源集群有
DescribeTopics权限,对目标集群有CreateTopics权限 - 使用通配符
*时,可通过source->target.blacklist排除内部主题(如__consumer_offsets):source->target: blacklist: "__consumer_offsets,__transaction_state"
内容的提问来源于stack exchange,提问作者Karthik Gopalaswamy
相关产品推荐
相关产品推荐

