> ## Documentation Index
> Fetch the complete documentation index at: https://docs.automq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 概述

> AutoMQ 是云原生的下一代 Kafka 兼容服务，支持从 Apache Kafka 和其他 Kafka 发行版无缝迁移，提供高兼容性和成本效益。

# 迁移

AutoMQ 是基于云原生理念重新设计的新一代 Kafka 发行版，与 Apache Kafka 兼容。本文将详细介绍如何从 Apache Kafka 或者其他 Kafka 发行版迁移到 AutoMQ。

## 迁移工具

AutoMQ 开源版推荐使用 MirrorMaker2 工具实现集群间迁移，支持从 Apache Kafka 或者其他 Kafka 发行版迁移至 AutoMQ。

<Tip>
  AutoMQ 企业版提供了 [Kafka Linking 工具](https://docs.automq.com/automq-cloud/migrate-to-automq/overview#overview-of-kafka-linking)，支持 Byte to Byte 消息同步（同步前后消息位点完全一致）和不停机迁移。如果您的业务场景需要更平滑的迁移方案，可以通过 [此处表单](https://www.automq.com/contact) 联系 AutoMQ 团队获取必要的协助和最佳实践。
</Tip>

MirrorMaker2 迁移工具具备如下能力：

* **支持分批次迁移集群：** MirrorMaker2 支持源集群到目标集群内分批次迁移 Topic 和 Group，实现灰度和验证。

* **支持同步消费进度：** MirrorMaker2 支持实时同步源集群消费进度，因此消费者可在迁移后从目标集群继续消费。

* **支持同步 Topic、Group 的动态更新：** MirrorMaker2 支持实时监测 Topic、Group 的动态更新，因此无需担心迁移过程中有遗漏。

MirrorMaker2 的技术架构如下：

<img src="https://mintcdn.com/automq/kFvm7Lwf3ab0EBuj/zh/automq/migration/overview/1.webp?fit=max&auto=format&n=kFvm7Lwf3ab0EBuj&q=85&s=d33d58daf8c9412dae01dc889d2ca824" width="2560" height="944" data-path="zh/automq/migration/overview/1.webp" />

## 核心概念

MirrorMaker2 定义了若干 Connector ，实现了 2 个 Apache Kafka 集群之间的数据同步任务，其中包含了同步所需的配置以及实时运行状态。

* **MirrorSourceConnector** ：用于同步源集群的消息数据。

* **MirrorCheckpointConnector** ：用于同步源集群 ConsumerGroup 的消费进度数据。

* **MirrorHeartbeatConnector** ：用于系统检测同步链路的运行状态。

## 部署 MirrorMaker2

关于 MirrorMaker2 的安装部署，参考 Apache Kafka 社区的相关链接：

* [MirrorMaker2 设计文档。](https://cwiki.apache.org/confluence/display/KAFKA/KIP-382%3A+MirrorMaker+2.0#KIP382:MirrorMaker2.0-ConnectorConfigurationProperties)

* [MirrorMaker2 参数配置文档。](https://kafka.apache.org/documentation/#mirrormakerconfigs)

## 约束和限制

MirrorMaker2 是使用 Connector 在源和目标集群之间同步消息，该机制无法保证源集群和目标集群数据完全一致。因此使用迁移工具需要注意如下约束和限制：

<Callout>
  **消息少量重复**

  消费进度数据为异步、间歇性同步，切换消费者时可能会有位点回退导致重复消费。

  消息同步为异步操作，因机器异常、故障恢复，可能会重复复制部分数据。

  **消费少量乱序**

  切换消费者时如果产生位点回退，则会重复消费少量消息，这部分消息会导致乱序。
</Callout>

## 后续步骤

了解集群迁移的背景之后，建议根据当前集群的情况选择对应方案处理：

* **从 Apache kafka 迁移到 AutoMQ：** 参考迁移方案，分批次按步骤实施迁移。[从 Apache Kafka 迁移到 AutoMQ▸](/zh/automq/migration/migrating-from-apache-kafka-to-automq)
