概述
AutoMQ 是基于云原生理念重新设计的新一代 Kafka 发行版,与 Apache Kafka 兼容。本文将详细介绍如何从 Apache Kafka 或者其他 Kafka 发行版迁移到 AutoMQ。
迁移场景
AutoMQ 兼容 Apache Kafka,支持无缝迁移其他厂商提供的 Kafka 发行版,相关信息列举如下:
源集群 | 目标集群 | 迁移支持 |
---|---|---|
Apache Kafka | AutoMQ Cloud | 支持 |
AWS MSK | 支持 | |
Confluent Platform | 支持 | |
阿里云消息队列 Kafka 版 | 支持 | |
腾讯云 CKafka 版 | 支持 |
如果当前使用的 Kafka 发行版不在上述列表中,请立即联系我们以获取支持和帮助。
迁移工具
AutoMQ Cloud 基于 Kafka MirrorMaker2 为用户提供了开箱即用的 Kafka 迁移工具,支持从 Apache Kafka 或者其他 Kafka 发行版迁移至 AutoMQ。
AutoMQ Cloud 迁移工具具备如下能力:
自适应弹性伸缩: AutoMQ Cloud 基于云厂商弹性伸缩组服务管理迁移组件容量,可以根据同步数据的吞吐压力自动伸缩,确保尽快完成迁移,无需用户手工配置并发度和节点数量。
支持分批次迁移集群: AutoMQ Cloud 支持源集群到目标集群内分批次迁移 Topic 和 Group,实现灰度和验证。
支持同步消费进度: AutoMQ Cloud 迁移工具支持实时同步源集群消费进度,因此消费者可在迁移后从目标集群继续消费。
支持同步Topic、Group的动态更新: AutoMQ Cloud 迁移工具支持实时监测Topic、Group 的动态更新,因此无需担心迁移过程中有遗漏。
AutoMQ Cloud 迁移工具的技术架构如下:
核心概念
迁移任务定义了从一个外部 Apache Kafka 集群(或其他 Kafka 发行版实例)到一个 AutoMQ 实例的一组 Topic 的数据同步任务,其中包含了同步所需的配置以及实时运行状态。
迁移工具底层基于 Kafka MirrorMaker2 工具实现。每个迁移任务等同于 MirrorMaker2 定义的一组 Connector:
MirrorSourceConnector :用于同步源集群的消息数据。
MirrorCheckpointConnector :用于同步源集群 ConsumerGroup 的消费进度数据。
MirrorHeartbeatConnector :用于系统检测同步链路的运行状态。
每个迁移任务的 Connector 是独立分配资源运行,彼此间相互隔离,系统会根据同步数据的规模和压力动态扩缩每个迁移任务底层的 Worker 数量。
AutoMQ 迁移工具免费使用 ,但运行每个迁移任务都会独立分配虚拟机资源并产生云资源费用 。
建议合理划分迁移任务的批次和数量,并在完成迁移后尽快删除迁移任务,以免持续产生云资源费用。
每个迁移任务从创建到删除,伴随如下状态切换过程:
创建中: 初始迁移任务的操作是一个异步过程,创建操作完成时后台会异步部署 MirrorMaker2 组件,该过程中用户不可操作任何变更,直到创建完成。
运行中: 当前迁移任务处于有效运行状态,正在同步数据中。
变更中: 当前迁移任务执行配置变更、状态变更等操作,由于执行过程是异步的,隐藏需要等待完成,在此期间禁止任何操作变更。
服务异常: 当前迁移任务因执行创建、运维变更或者底层基础设施异常导致的无法正常提供服务。
暂停: 当前迁移任务被用户暂时停止,保留配置但不同步数据。一般用于迁移过程中的检查过程。
删除中: 当迁移任务完成数据的同步,应用系统已经完成集群切换。此时操作删除任务,删除是一个异步过程,底层会逐步释放资源。
已删除: 迁移任务已经完成删除过程,已经释放了所有的资源和配置。
约束和限制
MirrorMaker2 是使用 Connector 在源和目标集群之间同步消息,该机制无法保证源集群和目标集群数据完全一致。因此使用迁移工具需要注意如下约束和限制:
消息少量重复
消费进度数据为异步、间歇性同步,切换消费者时可能会有位点回退导致重复消费。
消息同步为异步操作,因机器异常、故障恢复,可能会重复复制部分数据。
消费少量乱序
切换消费者时如果产生位点回退,则会重复消费少量消息,这部分消息会导致乱序。
后续步骤
了解 AutoMQ 迁移工具的运行背景、功能之后,建议按如下顺序处理: