Skip to main content

实施迁移方案

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

迁移方案

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

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

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

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

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

操作步骤

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

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

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

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

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

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

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

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

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

info

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。
danger

如果目标实例已经存在当前 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。可以按需添加待迁移的业务资源。
danger

如果在 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 写流量以及从源集群复制数据。

tip

注意:

切换 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 回滚配置,切换回源集群即可。
danger

因源集群的消费位点不会自动更新,回滚前建议先重置位点,否则可能会产生消费重复。

阶段三:提升 Mirror Topic 状态

在确保所有的 Producer 和 Consumer 都已经完成切换并且符合预期后,即可提升 Mirror Topic 的状态,停止写流量代理和同步。

操作步骤:

操作步骤:

  • 在 Consumer 切换完成后,建议观察一段时间,确保 Producer、Consumer 应用运行符合预期。

  • 确认符合预期后,在 AutoMQ 控制台,点击提升 Mirror Topic,停止流量代理和复制。

danger

**提升 Mirror Topic ** 之前务必确保以下条件:

所有 Producer 已经切换完成。

所有 Consumer Group 已经切换完成。

预期效果:

  • Mirror Topic 的读写全部集中在目标集群,不再代理回源集群。

回滚操作:

  • Mirror Topic 提升后目标集群的消息数据多于源集群,此时回滚需要注意消息数据不一致。

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