本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
變更資料擷取串流 (預覽)
重要
此功能以 AWS 預覽版形式提供,可能會有所變更。如需詳細資訊,請參閱 AWS 服務條款
在一般可用性之前,我們會將新的操作類型 ("op": "u" 用於更新) 新增至串流承載。為了確保您的應用程式在不修改的情況下處理這些變更,請套用after承載,將任何無法辨識op的值視為 upsert。如需詳細資訊,請參閱 了解 CDC 記錄。
Amazon Aurora DSQL 變更資料擷取 (CDC) 會近乎即時地將遞交的資料庫變更直接串流到 Amazon Kinesis Data Streams。Aurora DSQL 會將每個遞交的資料列層級變更作為結構化 JSON 記錄交付至您設定的 Kinesis 資料串流。
當您想要:
-
保持下游系統同步 – 將變更複寫至搜尋索引、快取、資料倉儲或分析系統,無需批次工作。
-
建置事件驅動型架構 – 觸發工作流程、通知或微服務動作,以回應資料庫變更。
-
維護稽核線索 – 擷取每個遞交的變更以進行合規、偵錯或歷史分析。
-
將生產者與消費者分離 – 讓資料庫專注於交易,同時下游系統以自己的步調處理變更。
運作方式
Aurora DSQL 會讀取遞交的交易、將每一列變更格式化為結構化 JSON 記錄,並將其交付至您設定的 Kinesis 資料串流。CDC 會自動擷取叢集中DELETE所有使用者資料表的每個 INSERTUPDATE、 和 。使用每個 CDC 記錄中的 source.schema和 source.table 欄位,在下游應用程式中套用篩選邏輯,以專注於資料表或變更您的應用程式需求。
CDC 串流受到完整管理。Aurora DSQL 會管理擷取變更事件、監控串流運作狀態,以及透過 GetStream API 操作和 CloudWatch 指標報告狀態所需的所有基礎設施。
CDC 串流使用bring-your-own-target模型。您會在帳戶中建立和管理 Kinesis 資料串流,而 Aurora DSQL 會擔任您設定為代您撰寫 CDC 記錄的 IAM 角色。您要負責目標的容量、加密和保留設定。如需最新支援的目標,請參閱《Amazon Aurora DSQL API 參考》中 CreateStream 中的 TargetDefinition 參數。如需 CDC 串流 API 操作的完整清單,請參閱 Amazon Aurora DSQL API 參考。
本頁主題
相關主題
訂購和交付語意
交付保證
Aurora DSQL CDC 保證每個遞交的變更至少達到目標一次。Aurora DSQL 可以多次交付記錄。設計您的應用程式來處理重複項目。您可以比較 source.ts_ns和主索引鍵值來識別重複項目 - 重複項目的值與原始交付項目的值相同。
排序
CDC 串流使用 UNORDERED 模式。實際上,記錄會以大致遞交順序抵達,因為 Aurora DSQL 會循序讀取和發佈變更。不過,Aurora DSQL 不保證嚴格排序。具體而言:
-
Aurora DSQL 可以按任何順序交付來自不同交易的記錄。
-
來自不同交易的相同主索引鍵的記錄可能會脫離遞交順序。
-
來自單一交易的記錄可以與其他交易的記錄互斥。當您的工作流程需要記錄時,使用
source.txId欄位依交易分組記錄。
每個 CDC 記錄都包含一個source.ts_ns欄位,其中包含以奈秒為單位的交易遞交時間戳記。使用此欄位在接收端建立遞交順序。
消費者策略
由於記錄可能無法按遞交順序送達,並且可以出現超過一次,因此您的應用程式必須考慮這兩種條件。
重要
在參與 CDC 的所有資料表上定義主索引鍵。如果沒有主索引鍵,您的應用程式就無法刪除重複記錄,或將刪除與受影響的資料列建立關聯。
Last-writer-wins (材料化檢視、快取)
追蹤每個主索引鍵的最高source.ts_ns值。捨棄source.ts_ns任何小於或等於追蹤值的記錄。這會同時篩選重複和out-of-order的記錄,保持每個金鑰的最新狀態。當您處理刪除 (op: "d") 時,請存放主索引鍵的 tombstone,以保留source.ts_ns值,而不是移除項目。tombstone 可確保在刪除後到達source.ts_ns的 插入或更新不會錯誤地還原資料列。
每次變更處理 (稽核記錄、事件來源)
透過比較與主索引鍵值source.ts_ns的組合來移除重複項目。緩衝傳入記錄並在處理source.ts_ns之前依 排序,以重建遞交順序。
多區域 CDC 串流組態
CDC 串流是區域資源。每個串流都屬於單一 AWS 區域,並將變更交付至相同區域中的 Kinesis 資料串流。在多區域叢集上,任何一個區域中的 CDC 串流都會擷取叢集中所有區域的遞交寫入。這表示無論寫入來源為何,您只需要一個串流來擷取每個變更。若要在多個區域中交付 CDC 記錄,請在每個區域中建立個別的串流。每個串流會獨立擷取整個叢集的整組遞交變更。
所有資源—Aurora DSQL 叢集、Kinesis 資料串流、IAM 服務角色和呼叫委託人—都必須位於相同的 AWS 帳戶和區域。
處理下游的 CDC 記錄
CDC 記錄送達 Kinesis 資料串流後,您可以使用 AWS 整合服務直接處理它們或將其路由到其他目的地。下表摘要說明常見的處理模式。
| 模式 | 運作方式 |
|---|---|
| 直接耗用 | Read records from Kinesis by using the Amazon Kinesis Client Library (KCL), the AWS SDK, or a Kinesis Data Streams consumer. See 開發 KCL 消費者 in the Amazon Kinesis Data Streams 開發人員指南. |
| AWS Lambda | Configure a Lambda function as an event source for your Kinesis data stream to process each batch of CDC records as they arrive. See 搭配 Amazon Kinesis 使用 AWS Lambda in the AWS Lambda 開發人員指南. |
| Amazon Data Firehose | Deliver CDC records from Kinesis to Amazon S3, Amazon Redshift, Amazon OpenSearch Service, or other destinations for analytics and archival. See 將資料傳送至交付串流 in the Amazon Data Firehose 開發人員指南. |
| 自我管理的消費者 | Run Apache Kafka Connect with the Kinesis source connector, Apache Flink, or other stream processing frameworks to transform and route records. For Apache Flink on AWS, see 設定應用程式輸入 in the Amazon Managed Service for Apache Flink 開發人員指南. |
每個 CDC 記錄都包含 source.schema、 source.table和 等欄位op,您可以用來在處理邏輯中路由和篩選記錄。如需完整的記錄結構描述,請參閱 了解 CDC 記錄。