

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用更改数据捕获（CDC）迁移数据
<a name="migration-hybrid-cdc"></a>

如果您已经熟悉如何使用 [Debezium](https://debezium.io/) 配置更改数据捕获 (CDC) 管道，则可以使用此选项将数据迁移到 Amazon Keyspaces，以此作为替代使用。 CQLReplicatorDebezium 是 CDC 的开源分布式平台，旨在监控数据库并可靠地捕获行级更改。

[Debezium Connector for Apache Cassandra](https://debezium.io/documentation/reference/stable/connectors/cassandra.html) 将更改上传到 Amazon Managed Streaming for Apache Kafka（Amazon MSK），以便下游使用者可以使用和处理这些更改，而下游使用者反过来又可以将数据写入 Amazon Keyspaces。有关更多信息，请参阅 [Guidance for continuous data migration from Apache Cassandra to Amazon Keyspaces](https://aws.amazon.com/solutions/guidance/continuous-data-migration-from-apache-cassandra-to-amazon-keyspaces/)。

要解决任何潜在的数据一致性问题，您可以使用 Amazon MSK 实施一个流程，使用者在该流程中将 Cassandra 中的键或分区与 Amazon Keyspaces 中的键或分区进行比较。

要成功实施此解决方案，我们建议考虑以下几点。
+ 如何解析 CDC 提交日志，例如，如何删除重复的事件。
+ 如何维护 CDC 目录，例如，如何删除旧日志。
+ 如何处理 Apache Cassandra 中的部分故障，例如，如果三个副本中只有一个副本的写入操作成功。
+ 如何处理资源分配，例如增加实例的大小，以满足节点上的 CDC 进程对额外的 CPU、内存、磁盘和 IO 的要求。

这种模式将来自 Cassandra 的更改视为“暗示”，即密钥相比之前的状态可能发生了变化。要确定是否有更改要传播到目标数据库，您必须首先使用 `LOCAL_QUORUM` 操作从源 Cassandra 集群读取最新记录，然后将其写入 Amazon Keyspaces。

如果是范围删除或范围更新，则可能需要对整个分区进行比较，以确定哪些写入或更新事件需要写入到目标数据库。

如果写入并非幂等性的，则在写入 Amazon Keyspaces 之前，您还需要将写入内容与目标数据库中已有的内容进行比较。

下图显示了使用 Debezium 和 Amazon MSK 的 CDC 管道的典型架构。

![\[使用更改数据捕获管道将数据从 Apache Cassandra 迁移到 Amazon Keyspaces。\]](http://docs.aws.amazon.com/zh_cn/keyspaces/latest/devguide/images/migration/hybrid-migration-CDC.png)
