我想从 Kafka 集群中的某个主题复制所有消息。所以我运行了 Kafka Mirrormaker,但它似乎只复制了源集群中大约一半的消息(我检查了源主题中没有消费者滞后)。我在源集群中有 2 个代理,这与此有关吗?
这是源集群配置:
log.retention.ms=1814400000
transaction.state.log.replication.factor=2
offsets.topic.replication.factor=2
auto.create.topics.enable=true
default.replication.factor=2
min.insync.replicas=1
num.io.threads=8
num.network.threads=5
num.partitions=1
num.replica.fetchers=2
replica.lag.time.max.ms=30000
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
socket.send.buffer.bytes=102400
unclean.leader.election.enable=true
zookeeper.session.timeout.ms=18000
源主题有 4 个分区并且未压缩。Mirrormaker 配置是:
- mirrormaker-consumer.properties
bootstrap.servers=broker1:9092,broker2:9092
group.id=picturesGroup3
auto.offset.reset=earliest
- mirrormaker-producer.properties
bootstrap.servers=localhost:9092
max.in.flight.requests.per.connection=1
retries=2000000000
acks=all
max.block.ms=2000000000
以下是Kafdrop关于源集群主题的统计信息:
分割 | 第一次偏移 | 最后偏移量 | 尺寸 | 领导节点 | 副本节点 | 同步副本节点 | 离线副本节点 | 首选领导者 | 复制不足 |
---|---|---|---|---|---|---|---|---|---|
0 | 13659 | 17768 | 4109 | 1 | 1 | 1 | 是的 | 不 | |
1 | 13518 | 17713 | 4195 | 2 | 2 | 2 | 是的 | 不 | |
2 | 13664 | 17913 | 4249 | 1 | 1 | 1 | 是的 | 不 | |
3 | 13911 | 18072 | 4161 | 2 | 2 | 2 | 是的 | 不 |
这些是 Mirrormaker 运行后目标主题的统计信息:
分割 | 第一次偏移 | 最后偏移量 | 尺寸 | 领导节点 | 副本节点 | 同步副本节点 | 离线副本节点 | 首选领导者 | 复制不足 |
---|---|---|---|---|---|---|---|---|---|
0 | 2132 | 4121 | 1989 | 1 | 1 | 1 | 是的 | 不 | |
1 | 2307 | 4217 | 1910 | 1 | 1 | 1 | 是的 | 不 | |
2 | 2379 | 4294 | 1915年 | 1 | 1 | 1 | 是的 | 不 | |
3 | 2218 | 4083 | 1865年 | 1 | 1 | 1 | 是的 | 不 |
如您所见,根据大小列,大约只有一半的源消息位于目标主题中。我究竟做错了什么?