使用更改数据捕获(CDC)迁移数据 - Amazon Keyspaces(Apache Cassandra 兼容)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用更改数据捕获(CDC)迁移数据

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

Debezium Connector for Apache Cassandra 将更改上传到 Amazon Managed Streaming for Apache Kafka(Amazon MSK),以便下游使用者可以使用和处理这些更改,而下游使用者反过来又可以将数据写入 Amazon Keyspaces。有关更多信息,请参阅 Guidance for 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。