

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用混合遷移解決方案：Apache Cassandra 到 Amazon Keyspaces
<a name="migrating-hybrid"></a>

下列遷移解決方案可視為線上和離線遷移之間的混合。透過這種混合方法，資料會以近乎即時的方式寫入目的地資料庫，而不會在寫入一致性後提供讀取。這表示新寫入的資料不會立即可用，且預期會發生延遲。如果您需要寫入一致性後的讀取，請參閱 [線上遷移至 Amazon Keyspaces：策略和最佳實務](migrating-online.md)。

若要從 Apache Cassandra 近乎即時地遷移至 Amazon Keyspaces，您可以選擇兩種可用的方法。
+ **CQLReplicator** – （建議） CQLReplicator 是 [Github](https://github.com/aws-samples/cql-replicator) 上提供的開放原始碼公用程式，可協助您近乎即時地將資料從 Apache Cassandra 遷移至 Amazon Keyspaces。

  為了判斷要傳播到目的地資料庫的寫入和更新，CQLReplicator 會掃描 Apache Cassandra 字符範圍，並使用 AWS Glue任務來移除重複的事件，並直接將寫入和更新套用至 Amazon Keyspaces。
+ **變更資料擷取 (CDC)** – 如果您熟悉 Cassandra CDC，則透過將遞交日誌複製到單獨的 CDC 目錄來允許擷取變更的 Apache Cassandra 內建 CDC 功能是實作混合遷移的另一個選項。

  您可以將資料變更複寫至 Amazon Keyspaces，讓 CDC 成為資料遷移案例的替代選項。

如果您在寫入一致性後不需要讀取，則可以使用 CQLReplicator 或 CDC 管道，根據您的偏好和對工具的熟悉程度，將資料從 Apache Cassandra 遷移到 Amazon KeyspacesAWS 服務。使用這些方法來近乎即時地遷移資料，可視為遷移的混合方法，提供線上遷移的替代方案。

此策略被視為混合式方法，因為除了本主題中概述的選項之外，您還必須實作線上遷移進度的一些步驟，例如歷史資料複製和[線上遷移主題中討論的應用程式遷移](migrating-online.md)策略。

以下章節會詳細說明混合遷移選項。

**Topics**
+ [使用 CQLReplicator 遷移資料](migration-hybrid-cql-rep.md)
+ [使用變更資料擷取 (CDC) 遷移資料](migration-hybrid-cdc.md)

# 使用 CQLReplicator 遷移資料
<a name="migration-hybrid-cql-rep"></a>

使用 [CQLReplicator](https://github.com/aws-samples/cql-replicator)，您可以使用 CQL 查詢智慧掃描 Cassandra 字符環，近乎即時地從 Apache Cassandra 讀取資料。CQLReplicator 不使用 Cassandra CDC，而是實作快取策略，以減少完整掃描的效能懲罰。

為了減少目的地的寫入次數，CQLReplicator 會自動移除重複的複寫事件。使用 CQLReplicator，您可以調整從來源資料庫到目的地資料庫的變更複寫，以便近乎即時地將資料從 Apache Cassandra 遷移到 Amazon Keyspaces。

下圖顯示 CQLReplicator 任務使用的一般架構AWS Glue。

1. 若要允許存取在私有 VPC 中執行的 Apache Cassandra，請設定與AWS Glue連線類型 **Network** 的連線。

1. 若要使用 CQLReplicator 任務移除重複項目並啟用金鑰快取，請設定 Amazon Simple Storage Service (Amazon S3)。

1. CQLReplicator 任務會將已驗證的來源資料庫直接變更為 Amazon Keyspaces。

![\[使用 CQLReplicator 將資料從 Apache Cassandra 遷移至 Amazon Keyspaces。\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/images/migration/hybrid-migration-CQLRep.png)


如需使用 CQLReplicator 遷移程序的詳細資訊，請參閱下列文章：AWS資料庫部落格[使用 CQLReplicator 將 Cassandra 工作負載遷移至 Amazon Keyspaces](https://aws.amazon.com/blogs/database/migrate-cassandra-workloads-to-amazon-keyspaces-using-cqlreplicator/)，AWS以及[使用 將 Apache Cassandra 工作負載遷移至 Amazon KeyspacesAWS Glue](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-apache-cassandra-workloads-to-amazon-keyspaces-using-aws-glue.html) 的規範指引。

# 使用變更資料擷取 (CDC) 遷移資料
<a name="migration-hybrid-cdc"></a>

如果您已經熟悉使用 [Debezium](https://debezium.io/) 設定變更資料擷取 (CDC) 管道，您可以使用此選項將資料遷移到 Amazon Keyspaces，作為使用 CQLReplicator 的替代方案。Debezium 是 CDC 的開放原始碼分散式平台，旨在監控資料庫並可靠地擷取資料列層級的變更。

[Apache Cassandra 的 Debezium 連接器](https://debezium.io/documentation/reference/stable/connectors/cassandra.html)會將變更上傳至 Amazon Managed Streaming for Apache Kafka (Amazon MSK)，讓下游消費者可以取用和處理這些變更，進而將資料寫入 Amazon Keyspaces。如需詳細資訊，請參閱[從 Apache Cassandra 到 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、記憶體、DIK 和 IO 需求。

此模式會將來自 Cassandra 的變更視為「提示」，表示金鑰可能已從先前的狀態變更。若要判斷是否有變更要傳播到目的地資料庫，您必須先使用 `LOCAL_QUORUM`操作從來源 Cassandra 叢集讀取，以接收最新的記錄，然後將其寫入 Amazon Keyspaces。

在範圍刪除或範圍更新的情況下，您可能需要對整個分割區執行比較，以判斷哪些寫入或更新事件需要寫入目的地資料庫。

如果寫入不等冪，您也需要在寫入 Amazon Keyspaces 之前，將寫入與目的地資料庫中已存在的寫入進行比較。

下圖顯示使用 Debezium 和 Amazon MSK 的 CDC 管道典型架構。

![\[使用變更資料擷取管道，將資料從 Apache Cassandra 遷移至 Amazon Keyspaces。\]](http://docs.aws.amazon.com/zh_tw/keyspaces/latest/devguide/images/migration/hybrid-migration-CDC.png)
