本文將說明如何將 Azure SQL Database 變更資料擷取(CDC)來源加入事件串流。
Azure SQL Database CDC 的 Microsoft Fabric 事件串流來源連接器允許您擷取 Azure SQL database 中當前資料的快照。 接著,連接器會監視並記錄此數據的任何未來數據列層級變更。 一旦變更被記錄在事件串流中,你可以即時處理這些 CDC 資料,並將其傳送到 Fabric 內的不同目的地進行進一步處理或分析。
備註
透過 DeltaFlow(預覽版),你可以將原始的 Debezium CDC 事件轉換成可分析的串流,鏡像你的來源資料表結構。 DeltaFlow 自動化結構註冊、目的資料表管理及架構演化處理。 要使用 DeltaFlow,請在結構處理步驟中選擇「分析就緒事件和自動更新的結構」。
必要條件
- 在 Fabric 容量授權模式或試用授權模式下使用貢獻者或更高權限存取工作空間。
- 啟動中的 Azure SQL 伺服器與一個 Azure SQL 資料庫。
- 你的 Azure SQL 資料庫應該是公開存取的,而不是設在防火牆後面或設在虛擬網路中。 如果它位於受保護的網路中,請使用 Eventstream 連接器虛擬網路注入連接。
- 在您的Azure SQL資料庫中執行儲存程序
sys.sp_cdc_enable_db啟用 CDC。 如需詳細資料,請參閱啟用和停用異動資料擷取。
備註
不要在你的 Azure SQL 資料庫啟用鏡像。
在你的 Azure SQL Database 啟用 CDC
進入Azure入口網站,打開你的Azure SQL資料庫,選擇查詢編輯器。 請選擇一種認證方式登入。
執行下列 SQL 命令,在您的資料庫中啟用 CDC:
-- Enable Database for CDC EXEC sys.sp_cdc_enable_db; -- Enable CDC for a table using a gating role option EXEC sys.sp_cdc_enable_table @source_schema = N'dbo', @source_name = N'MyTable', @role_name = NULL GO
- 如果您沒有 eventstream, 請建立 eventstream。
啟動選取數據源精靈
如果你還沒在事件串流中新增任何來源,請選擇 「連接資料來源 」磁貼。 你也可以選擇在色帶上選擇「新增來源>」連接資料來源。
如果你是將原始碼加入已發布的事件串流,請切換到 編輯 模式。 在功能區上,選擇 新增來源>連接資料來源。
在選擇資料來源頁面,搜尋並選擇Connect,位於Azure SQL DB(CDC)圖塊上。
配置並連接 Azure SQL Database CDC
透過 CDC 自動表結構註冊,從 Azure SQL 資料庫中將變更資料導入 Eventstream。
備註
DeltaFlow(預覽):當你在結構處理步驟選擇分析 就緒事件與自動更新的結構 時,DeltaFlow 會將原始的 Debezium CDC 事件轉換成分析準備的串流,鏡像你的來源資料表結構。 DeltaFlow 也自動化目的資料表建立與結構演化處理。
在 [連線] 頁面上,選取 [新的連線]。
在Connection settings區塊中,輸入以下Azure SQL資料庫的數值:
Server: 從Azure入口輸入Azure SQL伺服器名稱。 格式如下:
mysqlservername.database.windows.net。Database: 從Azure入口輸入Azure SQL資料庫名稱。
向下卷動,然後在 [ 連線認證 ] 區段中,遵循下列步驟。
對於連線名稱,請輸入連線的名稱。
針對 [ 驗證種類],選取 [ 基本]。
備註
目前,Fabric Eventstream 僅支援 Basic認證。
輸入資料庫的使用者名稱和密碼。
選取 Connect。
現在,在 [連線] 頁面上,選取 [所有資料表],或 [輸入資料表名稱]。 如果您選取後者,請使用完整資料表標識碼 (
schemaName.tableName) 或有效正則表達式的逗號分隔清單來指定資料表。 例如:- 使用
dbo.test.*來選取名稱開頭為dbo.test的所有數據表。 - 使用
dbo\.(test1|test2)來選取dbo.test1並dbo.test2。
您可以使用逗號來混合這兩種格式。 整個專案的字元總計限製為 102,400 個字元。
- 使用
您可以展開進階設定以取得更多Azure SQL Database CDC 來源的設定選項:
-
十進位處理模式:定義連接器如何處理
DECIMAL欄位NUMERIC值:-
Precise:使用精確的十進位類型(例如 JavaBigDecimal)來表示數值,以確保資料表示的完全精確與準確度。 -
Double:將值轉換成雙精確度浮點數。 此設定可改善可用性和效能,但可能會導致精確度損失。 -
String:將值編碼為格式化字串。 此設定可讓您輕鬆在下游系統中使用,但會遺失原始數值類型的語意資訊。
-
-
快照模式:在連接器啟動時指定執行快照的條件:
-
Initial:連接器會僅在尚未為邏輯伺服器名稱記錄任何位移時,或偵測到先前的快照未能完成時,執行一次快照。 快照完成後,連接器開始串流事件記錄以供後續資料庫變更使用。 -
InitialOnly:連接器僅在邏輯伺服器名稱未記錄任何偏移時執行快照。 快照完成後,連接器停止運作。 它不會切換到串流來讀取binlog的變更事件。 -
NoData: 連接器執行一個快照,只捕捉結構,卻不捕捉任何資料表資料。 如果你不需要資料的一致快照,但只需要自連接器開始以來發生的變更,就設定這個選項。
-
- 欄位排除清單:指定欄位以完全限定名稱(schemaName.tableName.columnName)排除事件值變更。
-
Database applicationIntent:決定 SQL Server Always On 可用性群組中的路由行為。
-
ReadWrite: 連線到主要副本。 如果連線需要同時執行讀寫操作,請使用此選項。 -
ReadOnly允許路由至可讀的次要副本以進行僅限讀取操作。 用它直接在複本上啟用 CDC。 它需要將 snapshot.isolation.mode 設為 snapshot,這是唯一支援唯讀副本的事務隔離模式。
-
- 快照選擇語句覆寫功能:若要快照只包含資料表的部分資料列,請使用該屬性。 此特性僅影響快照。 它不適用於連接器從日誌讀取的事件。
-
十進位處理模式:定義連接器如何處理
串流或來源詳情
在 Connect 頁面,根據你使用的是 Eventstream 還是 Real-Time hub,依照以下步驟進行。
Eventstream:
在右側 的來源詳情 窗格中,請依照以下步驟操作:
對於 來源名稱,請選擇 鉛筆 按鈕來更改名稱。
請注意,事件流名稱 和 串流名稱 為唯讀。
實時樞紐:
在右側的 [串流詳細數據 ] 區段中,遵循下列步驟:
選擇你想建立事件串流的 Fabric workspace。
對於 事件串流名稱,請選擇 鉛筆 按鈕,並輸入事件串流的名稱。
串流名稱的值會自動為您生成,方法是將-stream附加到事件流名稱上。 當嚮導結束時,這條串流會出現在即時集線器的 「所有資料串流」 頁面上。
在「配置」頁面底部選擇「下一步」。
評論與連結
在 Review + connect 畫面,檢視摘要,選擇 新增 (事件串流)或 連接 (Real-Time hub)。
模式處理頁面
在 結構處理 頁面中,選擇以下選項之一:
- 分析就緒事件與自動更新結構(DeltaFlow 預覽):連接器將原始 CDC 事件轉換成分析準備的串流,鏡像你的來源資料表結構。 DeltaFlow 透過變更類型(插入、更新或刪除)和時間戳記等元資料豐富事件,並自動管理目的資料表與結構演進。
- 原始 CDC 事件:連接器會接收並提供原始 CDC 事件。 連接器可選擇性地自動發現資料表結構並將其登錄在結構登錄檔中。 當您想要架構感知但不要 DeltaFlow 轉換時,請使用此選項。
備註
以下截圖顯示的是 Azure SQL Database CDC。 所有支援的 CDC 來源連接器的結構處理選項相同。
啟用 事件結構描述關聯。
在 Workspace,為架構集合選擇一個 Fabric 工作區。
對於 結構描述集,預設會選取 + 建立 ,這會建立新的結構描述集。 您可以變更它以選取現有的事件結構描述集。
如果您在上一個步驟中選取 [+ 建立 ] 選項,請輸入結構描述集的名稱。
在 Review + Connect 頁面,選擇 新增 (Eventstream)或 Connect (Real-Time hub)。
對於 Azure SQL 資料庫中所有資料表或選取的資料表,連接器會自動發現並建立結構,並將其註冊到結構登錄檔。
選取中間的 事件串流 節點,然後切換至底部窗格中的 [相關聯的結構描述 ] 索引標籤。
模式集
導覽至您在上一個步驟中選取的工作區。 在下列範例中,它是 [我的工作區]。
選擇 Azure SQL Database (CDC) 連接器所建立的結構集。
您會看到模式集合中的模式,如下圖所示。
若要查看結構描述的 JSON 版本,請切換至 JSON 結構描述 檢視。
不要用這個編輯器更改這些發現的結構,因為這會與 Azure SQL 資料庫來源中的資料表結構不符。
DeltaFlow:分析支援事件轉換(預覽)
啟用 Analytics-ready 事件與自動更新結構(DeltaFlow)時,連接器提供以下功能:
分析就緒事件形態:原始 Debezium CDC 事件會轉換成與來源資料表結構相符的表格格式。 事件會以中繼資料欄位豐富,包括變更類型(
insert、update或delete)及事件時間戳記。自動目的地資料表管理:當你將支援 DeltaFlow 的串流路由到支援的目的地(如事件屋)時,目的地資料表會自動建立以符合來源資料表結構。 你不需要手動建立或設定目的資料表。
結構演化處理:當來源資料庫資料表變更(例如新增欄位或建立資料表)時,DeltaFlow 會自動偵測變更,更新註冊的結構,並相應調整目標資料表。 此選項可減少因結構變更而產生的人工介入。
備註
DeltaFlow(預覽版)目前支援於 Azure SQL Database CDC、Azure SQL Managed Instance CDC、SQL Server on VM CDC 及 PostgreSQL CDC 來源連接器。
關於 DeltaFlow 如何將原始 CDC 事件轉換為分析可用輸出(包括操作類型與元資料欄位)的詳細資訊,請參見 DeltaFlow 輸出轉換。
檢視更新的事件串流
你可以在編輯模式中看到已添加的 Azure SQL Database (CDC) 來源。
要實作這個新加入的 Azure SQL Database CDC 來源,請選擇 Publish。 完成這些步驟後,您的Azure SQL Database CDC 來源即可在 Live View 中進行視覺化。
設定 Eventstream 的目的地來使用結構
目前,僅支援 Eventhouse、自訂端點及衍生串流目的地,以供相關結構的事件串流使用。 本節說明如何在為事件資料流啟用擴充功能 (例如結構描述支援) 時新增和設定 Eventhouse 目的地。
備註
當你使用 DeltaFlow(預覽版) 搭配支援的變更資料擷取(CDC)來源時,事件屋中的目標資料表會自動建立並管理,使其結構與來源資料表相符。 你不需要手動設定目的地資料表的結構。 當來源資料表變更時,DeltaFlow 也能自動處理結構演化。
設定自訂端點目的地的架構
選擇 轉換事件或新增目的地,然後選擇 自訂端點。
在 自訂端點 面板中,指定目的地名稱。
針對 輸入架構,選取事件的架構。 啟用事件串流的結構支援時,你會在這個框中選擇。
如需設定自訂端點目的地的詳細步驟,請參閱將 自訂端點或自訂應用程式目的地新增至事件串流。
設定 Eventhouse 終端的結構方案
選取 [轉換事件] 或 [新增目的地],然後選取 [Eventhouse]。
在 Eventhouse 窗格中,設定以下與結構相關的設定:
關於如何設定活動屋目的地的詳細步驟,請參見 「將活動屋目的地加入事件串流」。
檢視 DeltaFlow 分析就緒輸出(預覽)
如果啟用了分析就緒事件與自動更新結構(DeltaFlow),目標資料表會自動建立,其結構會鏡像您的來源資料庫資料表。 每個資料表都包含原始欄位,以及變更類型和時間戳記的元資料欄位。
你可以使用 Kusto 查詢語言(KQL)或其他分析工具查詢這些資料表,無需解析原始的 Debezium CDC 有效載荷。
::: 區域端
相關內容
其他連接器包括: