Skip to main content

实施迁移方案

完成前置条件梳理▸的情况下,可以进行后续的迁移流程。本文详细介绍从 Apache Kafka 迁移到 AutoMQ 的方案以及实施流程。

迁移方案

使用 Kafka Linking 从 Apache Kafka 迁移到 AutoMQ,主要考虑如下工作:

  • 消息数据同步 :Kafka 存储了历史已消费和未消费的消息数据,迁移集群需要保证消息数据按需复制到新集群,不能丢失消息。

  • 生产者切换: 迁移工作除去数据同步,还需要在合适的时机切换生产者应用,使生产者连接目标集群生产新的消息。

  • 消费者切换: 迁移工作除去数据同步,还需要在合适的时机切换消费者应用,使消费者连接目标集群接续之前的消费进度继续消费消息。

整体迁移方案参考下图的流程:

操作步骤

步骤 1:创建 Kafka Link,开始同步数据

在完成前置条件梳理▸后,已经明确当前需要迁移的源集群、目标集群、Topic、ConsumerGroup 范围,接下来开始创建迁移任务。

  1. 创建源 Kafka 集成 配置。前往集成页面创建 Apache Kafka 集成。

每个源集群只需要创建一个集成即可,后续多个迁移任务可以复用该集成配置。

Apache Kafka 集成配置同样支持其他 Kafka 发行版,只需要填写对应的接入点参数即可。

创建 Apache Kafka 集成,需要填写如下参数:

  • 集成名称:用作标识源集群的别名,用户可自定义,方便后期识别。

  • 接入点协议:根据源集群的类型,选择合适的接入点协议。

  • 接入点地址:填写对应协议的 Bootstrap 地址列表。

AutoMQ 迁移工具目前支持 PLAINTEXT协议,暂不支持 SASL_PLAINTEXT、SSL 和 SASL_SSL 协议。如有需求,请及时联系 AutoMQ 技术人员获得帮助和支持。

  1. 创建** Kafka Link** ,前点击目标实例 >> Kafka Links ,按照指引填写相关参数。
参数名称
参数说明
Kafka Link Id
  • 含义:用来表示一组迁移任务,一般建议简短、易识别的名称。
  • 约束:仅支持英文大小写字母、数字、中划线(-)、下划线(_)
源集群
指定需要迁移的源集群,此处选择上一步创建的 Apache Kafka 集成。
目标集群
指定迁移的目标集群,此处选择已经创建的 AutoMQ 实例。
起始同步位置
指定迁移任务启动后同步消息的起始位置。支持如下选项:
  • 从最新位置: Kafka Linking 只复制接下来产生的新消息到目标集群。该模式适合对冷读敏感,希望从当前时刻开始追齐两端集群的迁移场景。
同步 Topic 列表
从源集群选择若干个 Source Topic,Kafka Linking 会在目标实例创建一一映射的 Mirror Topic。

如果目标实例已经存在当前 Topic,则无法创建该 Mirror Topic。

同步 Consumer Group 列表
从源集群选择若干个 Consumer Group,Kafka Linking 会在目标实例创建一一映射的 Consumer Group。
选择目标 topic 和 Consumer Group。

选择目标 topic 和 Consumer Group。

  1. 创建完成后,可以进入 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 提升后目标集群的消息数据多于源集群,此时回滚需要注意消息数据不一致。

当步骤 2 中 Kafka Link 内所有的 Mirror Topic 都已经完成迁移和提升后,迁移任务已经完成,可以删除 Kafka Link。