

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

# 在线迁移期间上传历史数据
<a name="migration-online-historical"></a>

在实现双重写入来确保将新数据实时写入这两个数据存储之后，迁移计划的下一步是，评估您需要将多少历史数据从 Cassandra 复制或批量上传到 Amazon Keyspaces。这样可以确保在迁移应用程序之前，新的 Amazon Keyspaces 数据库中既有新数据，也有历史数据。

根据您的数据留存要求，例如根据贵组织的政策需要保留多少历史数据，您可以考虑以下两个选项之一。
+ **批量上传历史数据** — 可通过各种技术将历史数据从现有 Cassandra 部署迁移到 Amazon Keyspaces，例如AWS Glue使用或自定义脚本提取、转换和加载 (ETL) 数据。有关使用 AWS Glue 上传历史数据的更多信息，请参阅[离线迁移过程：Apache Cassandra 到 Amazon Keyspaces](migrating-offline.md)。

  在计划批量上传历史数据时，您需要考虑如何解决新写入操作尝试更新正在上传的相同数据时可能发生的冲突。批量上传预计最终将保持一致，这意味着数据最终将到达所有节点。

  如果由于新的写入操作而导致同时更新了相同的数据，则需要确保历史数据上传不会覆盖这些数据。为确保即使在批量导入期间也保留数据的最新更新，您必须将冲突解决方案添加到批量上传脚本或应用程序逻辑中来进行双重写入。

  例如，您可以使用[轻量级事务](functional-differences.md#functional-differences.light-transactions)（LWT）来比较和设置操作。为此，您可以在数据模型中添加一个表示修改时间或状态的额外字段。

  此外，Amazon Keyspaces 支持 Cassandra `WRITETIME` 时间戳功能。您可以使用 Amazon Keyspaces 客户端时间戳来保留源数据库的时间戳并实施冲突解决方案。 last-writer-wins有关更多信息，请参阅 [Amazon Keyspaces 中的客户端时间戳](client-side-timestamps.md)。
+ **使用 Time-to-Live (TTL)**-对于短于 30、60 或 90 天的数据保留期，您可以在迁移期间在 Cassandra 和 Amazon Keyspaces 中使用 TTL，以避免将不必要的历史数据上传到亚马逊密钥空间。TTL 让您可以设置一个时间段，在此之后数据将自动从数据库中删除。

  在迁移阶段，您无需将历史数据复制到 Amazon Keyspaces，而是可以配置 TTL 设置，让历史数据在旧系统（Cassandra）中自动过期，同时使用双重写入方法将新写入内容应用到 Amazon Keyspaces。久而久之，随着 Cassandra 集群中的旧数据不断过期，同时使用双重写入方法写入新数据，Amazon Keyspaces 会自动赶上来，最终包含与 Cassandra 相同的数据。

   这种方法可以显著减少要迁移的数据量，从而提高迁移过程的效率和精简性。在处理具有不同数据留存要求的大型数据集时，可以考虑使用这种方法。有关 TTL 的更多信息，请参阅[使用 Amazon Keyspaces（Apache Cassandra 兼容）的生存时间（TTL）功能让数据过期](TTL.md)。

  考虑以下使用 TTL 数据过期从 Cassandra 迁移到 Amazon Keyspaces 的示例。在此示例中，我们将两个数据库的 TTL 设置为 60 天，并显示 90 天内迁移过程的进展情况。在此期间，两个数据库都使用双重写入方法获得同样的新写入数据。我们将研究迁移的三个不同阶段，每个阶段为期 30 天。

  下图显示了每个阶段的迁移过程的工作原理。  
![\[从 Apache Cassandra 迁移到 Amazon Keyspaces 时，使用 TTL 使历史数据过期。\]](http://docs.aws.amazon.com/zh_cn/keyspaces/latest/devguide/images/migration/online-migration-TTL.png)

  1. 在最初的 30 天之后，Cassandra 集群和 Amazon Keyspaces 一直都在获得新的写入内容。Cassandra 集群还包含留存期尚未达到 60 天的历史数据，这些历史数据占集群中数据的 50%。

     将使用 TTL 自动删除 Cassandra 集群中超过 60 天的数据。此时，Amazon Keyspaces 包含 Cassandra 集群中存储的数据的 50%，其中的数据构成是新写入数据减去历史数据。

  1. 60 天后，Cassandra 集群和 Amazon Keyspaces 都包含了过去 60 天内写入的相同数据。

  1. 在 90 天内，Cassandra 和 Amazon Keyspaces 都包含相同的数据，并且数据的过期进度也相同。

  此示例说明了如何使用过期日期设置为 60 天的 TTL 来避免上传历史数据的步骤。