1. 介绍

有时候需要跨集群之间的数据同步和数据迁移的需求。这个可以利用官方提供的工具:官方文档的6.1 Basic Kafka Operations

2. 原理说明

这个工具就是启动了一个消费者从源集群消费数据,然后交给一个生产者往目标集群发送消息。

3.使用技巧以及注意点

3.1 使用技巧

开启多个mirror maker进程:mirror maker进程可以同时开启多个,提高吞吐量。如果其中一个进程挂了,其他线程还能接管其同步任务。

3.2 注意点

The source and destination clusters are completely independent entities: they can have different numbers of partitions and the offsets will not be the same. For this reason the mirror cluster is not really intended as a fault-tolerance mechanism (as the consumer position will be different); for that we recommend using normal in-cluster replication. The mirror maker process will, however, retain and use the message key for partitioning so order is preserved on a per-key basis.

4. 准备生产者和消费者配置

3.1 生产者配置——producer.properties

# 目标集群
bootstrap.servers=10.45.10.33:9092,10.45.10.34:9092,10.45.10.35:9092
acks=all
retries=3
# 批次大点,增加点吞吐量性能
batch.size=16384
buffer.memory=33554432
linger.ms=1
key.serializer=org.apache.kafka.common.serialization.StringSerializer
value.serializer=org.apache.kafka.common.serialization.StringSerializer

3.2 消费者配置——consumer.properties

PS: 消费者可能是为了兼容老集群,所以用的是老的consumer来拉数据的。

group.id=mirror-maker
auto.commit.enable=true
auto.commit.interval.ms=2000
zookeeper.connect=10.8.12.139:2181
auto.offset.reset=smallest