如何进行数据迁移
功能概述
Kafka MirrorMaker 是 Kafka 官方提供的跨数据中心的流数据同步方案。其实现原理是通过从 Source Cluster 消费消息后,再将消息生产到 Target Cluster。
用户只需要通过简单的 Consumer 配置和 Producer 配置,再启动 MirrorMaker,即可实现准实时的数据同步。更多详细信息可以参见官方文档。
操作步骤
步骤一:创建目标 Kafka 集群
-
创建一个与源 Kafka 集群同一 VPC 网络下的 Kafka 集群,用作目标集群。详情可参考如何创建 Kafka 集群。
-
修改目标集群的配置参数
auto.create.topics.enable,设置为true。详情可参考如何修建 Kafka 集群配置参数。
步骤二:配置源集群的消费者参数
登录源集群的客户端节点,执行以下操作。
-
创建消费配置文件
consumer.config,并配置消费者参数。bootstrap.servers=ip:port,ip:port,ip:port // 源集群的 Broker 列表 group.id=xxx // Group ID,用户可自定义 partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor // 同步策略 auto.offset.reset=latest // earliest 同步所有历史消息;latest 仅同步最新消息,从每个 Topic 的最新开始同步;可以不填,默认为 latest示例
bootstrap.servers=192.168.0.45:9092,192.168.0.46:9092,192.168.0.47:9092 group.id=mirror-maker partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor auto.offset.reset=latest -
创建生产者配置文件
producer.config,并配置生产者参数。bootstrap.servers=ip:port,ip:port,ip:port // 目标集群的 Broker 列表 -
执行以下命令,运行
kafka-mirror-maker.sh脚本文件进行数据迁移。/opt/kafka/current/bin/kafka-mirror-maker.sh --consumer.config consumer.config --producer.config producer.config --whitelist ".*"说明 whitelist为迁移的 Topic 白名单," "里是 Java 正则表达式,如果只同步部分指定 Topic,填写格式为"topic1,topic2,topic3"。
步骤三:查看迁移结果
登录目标集群的 Kafka Manager,可以看到目标集群中已有源集群的 Topic。
常见问题
为什么执行同步命令,没有效果?
-
可能原因
consumer.config文件中未配置auto.offset.reset参数,或auto.offset.reset参数配置为latest。此时将只同步最新消息,原来的历史消息都不同步。 -
解决方法
若不需要同步历史消息,可以忽略。如需同步历史消息,可在
consumer.config文件中配置auto.offset.reset参数为earliest。
为什么迁移速度很慢?
-
可能原因
Kafka 集群配置不够高,Kafka 客户端节点配置不够高。
-
解决方法
用户可以单独创建一个配置更高的云服务器,用于安装 Kafka 客户端,再执行上述同步命令。