实施迁移方案
完成前置条件梳理▸的情况下,可以进行后续的迁移流程。本文详细介绍从 Apache Kafka 迁移到 AutoMQ 的方案以及实施流程。
迁移方案
使用 Kafka Linking 从 Apache Kafka 迁移到 AutoMQ,主要考虑如下工作:
-
消息数据同步 :Kafka 存储了历史已消费和未消费的消息数据,迁移集群需要保证消息数据按需复制到新集群,不能丢失消息。
-
生产者切换: 迁移工作除去数据同步,还需要在合适的时机切换生产者应用,使生产者连接目标集群生产新的消息。
-
消费者切换: 迁移工作除去数据同步,还需要在合适的时机切换消费者应用,使消费者连接目标集群接续之前的消费进度继续消费消息。
整体迁移方案参考下图的流程:

操作步骤
步骤 1:创建 Kafka Link,开始同步数据
在完成前置条件梳理▸后,已经明确当前需要迁移的源集群、目标集群、Topic、ConsumerGroup 范围,接下来开始创建迁移任务。
- 创建源 Kafka 集成 配置。前往集成页面创建 Apache Kafka 集成。
每个源集群只需要创建一个集成即可,后续多个迁移任务可以复用该集成配置。
Apache Kafka 集成配置同样支持其他 Kafka 发行版,只需要填写对应的接入点参数即可。
创建 Apache Kafka 集成,需要填写如下参数:
-
集成名称:用作标识源集群的别名,用户可自定义,方便后期识别。
-
接入点协议:根据源集群的类型,选择合适的接入点协议 。
-
接入点地址:填写对应协议的 Bootstrap 地址列表。
AutoMQ 迁移工具目前支持 PLAINTEXT协议,暂不支持 SASL_PLAINTEXT、SSL 和 SASL_SSL 协议。如有需求,请及时联系 AutoMQ 技术人员获得帮助和支持。
- 创建** Kafka Link** ,前点击目标实例 >> Kafka Links ,按照指引填写相关参数。
参数名称 | 参数说明 |
---|---|
Kafka Link Id |
|
源集群 | 指定需要迁移的源集群,此处选择上一步创建的 Apache Kafka 集成。 |
目标集群 | 指定迁移的目标集群,此处选择已经创建的 AutoMQ 实例。 |
起始同步位置 | 指定迁移任务启动后同步消息的起始位置。支持如下选项:
|
同步 Topic 列表 | 从源集群选择若干个 Source Topic ,Kafka Linking 会在目标实例创建一一映射的 Mirror Topic。 danger 如果目标实例已经存在当前 Topic,则无法创建该 Mirror Topic。 |
同步 Consumer Group 列表 | 从源集群选择若干个 Consumer Group,Kafka Linking 会在目标实例创建一一映射的 Consumer Group。 |

选择目标 topic 和 Consumer Group。
- 创建完成后,可以进入 Kafka Link 详情,查看指定的 Topic 和 Group 都已经进入同步中 状态。Kafka Link 创建完成后,同样支持添加新的 Topic、Consumer Group。可以按需添加待迁移的业务资源。
如果在 Kafka Link 中删除 Mirror Topic、Consumer Group ,会从目标集群(AutoMQ 实例)中删除对应的 Topic 和 Consumer Group。此操作无法撤销,后续只能重新创建。

步骤 2:切换生产者和消费者,执行迁移流程
当 Kafka Link 创建完成后,用户需要修改 Topic 的 Producer、Consumer 配置,将 Producer 和 Consumer 从源集群切换到目标集群,其主要包含以下三类操作:
-
生产者切流: 更新生产者的接入参数,使其指向目标集群。
-
消费者切流: 更新消费者的接入参数,使其指向目标集群。
-
提升 Mirror Topic 状态 :在 AutoMQ 控制台选择 Mirror Topic 进行状态提升,提升操作本质上是控制 Kafka Linking 组件不再代理 Producer 写流量以及从源集群复制数据。
注意:
切换 Consumer 之前,需要确保 Consumer 在源集群的消费位点 >= Mirror Topic 在目标集群的起始同步位点。
具体 Producer 和 Consumer 切流的操作步骤参考下方阶段:
阶段一:Producer 切换到目标集群
迁移过程,首先切换 Producer 的接入配置,使 Producer 连接到目标集群( AutoMQ 实例)。切换过程的流量拓扑如下图所示:

操作步骤:
- Producer 分批次修改接入参数重启应用,使生产流量切换到目标的 AutoMQ 实例。
预期效果:
-
生产流量分批次 Rolling 目标实例,预期生产流量不停机、无影响。
-
源集群的消费者继续消费所有的消息,无影响。
-
源集群消息会通过 Replicate 任务同步到 AutoMQ。
回滚操作:
- 生产者回滚配置,切换回源集群即可。
阶段二:Consumer 切换到目标集群
第二阶段执行切换 Consumer 的接入配置,使 Consumer 连接到目标集群( AutoMQ 实例)。切换过程的流量拓扑如下图所示:

操作步骤:
-
Consumer 分批次修改接入参数重启应用,连接到 AutoMQ 实例。
-
Kafka Linking 自动判断 Consumer Group 切流完成,并自动提升 Consumer Group,是 Consumer 从新集群继续消费。
预期效果:
-
生产流量仍然维持上一阶段的状态,继续代理回源集群并同步到目标集群。
-
Consumer Group 会继续源集群的消费位点,继续消费,不受影响。
回滚操作:
- Consumer 回滚配置,切换回源集群即可。
因源集群的消费位点不会自动更新,回滚前建议先重置位点,否则可能会产生消费重复。
阶段三:提升 Mirror Topic 状态
在确保所有的 Producer 和 Consumer 都已经完成切换并且符合预期后,即可提升 Mirror Topic 的状态,停止写流量代理和同步。

操作步骤:
-
在 Consumer 切换完成后,建议观察一段时间,确保 Producer、Consumer 应用运行符合预期。
-
确认符合预期后,在 AutoMQ 控制台,点击提升 Mirror Topic,停止流量代理和复制。
**提升 Mirror Topic ** 之前务必确保以下条件:
所有 Producer 已经切换完成。
所有 Consumer Group 已经切换完成。
预期效果:
- Mirror Topic 的读写全部集中在目标集群,不再代理回源集群。
回滚操作:
- Mirror Topic 提升后目标集群的消息数据多于源集群,此时回滚需要注意消息数据不一致。