將 Postgre SQL 資料庫 CDC 來源新增至 Eventstream

本文說明如何將 Postgre SQL 資料庫 異動資料擷取 (CDC) 來源新增至 Eventstream。

注意

在 具備結構感知的事件串流(預覽)中,你可以選擇分類欄位(分類器或判別器欄位)來處理不同形狀的未結構化事件,或保持原始碼未型別,並與同一事件流中的結構化事件合併。 對於支援的來源,你也可以將來源與註冊的結構關聯起來。 欲了解更多資訊,請參閱結構感知事件串流總覽(預覽)。

透過變更資料擷取(CDC),你可以即時串流資料庫變更——插入、更新與刪除——而無需輪詢。 透過將 PostgreSQL 連結為 CDC 來源,您可以建立即時分析流程,並保持下游系統與原始資料的同步。

PostgreSQL 資料庫變更資料擷取(CDC)來源連接器用於 Microsoft Fabric 事件串流,讓您能擷取 PostgreSQL 資料庫中當前資料的快照。 目前,PostgreSQL 資料庫異動數據擷取 (CDC) 支援下列服務,其中可以公開存取資料庫:

  • 適用於 PostgreSQL 的 Azure 資料庫
  • Amazon RDS for PostgreSQL
  • Amazon Aurora PostgreSQL
  • 適用於 PostgreSQL 的 Google Cloud SQL

將 PostgreSQL 資料庫 CDC 來源新增至事件數據流之後,它會擷取指定數據表的數據列層級變更。 然後,這些變更可以實時處理,並傳送到不同的目的地,以進行進一步分析。

注意

透過 DeltaFlow(預覽版),你可以將原始的 Debezium CDC 事件轉換成可分析的串流,鏡像你的來源資料表結構。 DeltaFlow 自動化結構註冊、目的資料表管理及架構演化處理。 要使用 DeltaFlow,請在結構處理步驟中選擇「分析就緒事件和自動更新的結構」。

必要條件

在 PostgreSQL 資料庫中啟用 CDC

本節以適用於 PostgreSQL 的 Azure 資料庫為例。

要在您的 適用於 PostgreSQL 的 Azure 資料庫 Flexible Server啟用 CDC,請依照以下步驟操作:

  1. 在Azure入口網站的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器頁面,在導覽選單中選擇 Server 參數。

  2. 在 [ 伺服器參數] 頁面上:

    • 將 wal_level 設定為 logical。
    • 將 max_worker_processes 更新為至少 16。

    為彈性伺服器部署啟用 CDC 的螢幕擷取畫面。

  3. 儲存變更並重新啟動伺服器。

  4. 確認你的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例是否允許公共網路流量。

  5. 執行下列 SQL 語句, 以授與系統管理員用戶 復寫權限。 如果你想用其他使用者帳號連接你的 PostgreSQL 資料庫(DB)來取得 CDC,請確保使用者是 資料表擁有者。

    ALTER ROLE <admin_user_or_table_owner_user> WITH REPLICATION;
    

啟動選取數據源精靈

如果你還沒在事件串流中新增任何來源,請選擇 「連接資料來源 」磁貼。 你也可以選擇在色帶上選擇「新增來源>」連接資料來源。

截圖顯示了使用外部來源的圖塊選擇過程。

如果你是將原始碼加入已發布的事件串流,請切換到 編輯 模式。 在功能區上,選擇 新增來源>連接資料來源。

顯示新增外部來源選項的截圖。

在 [選取資料來源] 頁面上,搜尋 [PostgreSQL DB (CDC)] 圖格,然後選取其中的 [Connect]。

截圖顯示在「取得事件」精靈中選擇 Azure Database for PostgreSQL (CDC) 作為來源類型。

設定並連線到 PostgreSQL 資料庫 CDC

透過 CDC 自動註冊資料表結構,將 PostgreSQL 資料庫的變更資料引入到 Eventstream。

注意

DeltaFlow(預覽):當你在結構處理步驟選擇分析 就緒事件與自動更新的結構 時,DeltaFlow 會將原始的 Debezium CDC 事件轉換成分析準備的串流,鏡像你的來源資料表結構。 DeltaFlow 也自動化目的資料表建立與結構演化處理。

  1. 在連線頁面上,選取新增連線。

    截圖顯示 PostgreSQL 資料庫的 Connect 頁面,並標示了「新連線」連結。

  2. 在連線設定區段中,輸入下列資訊。

    • 伺服器:PostgreSQL 資料庫的伺服器位址,例如 my-pgsql-server.postgres.database.azure.com。

    • 資料庫:資料庫名稱,例如 my_database。

      截圖顯示 PostgreSQL 資料庫連接器的連線設定區塊。

    • 線上名稱:輸入連線的名稱。

    • 驗證種類,選取 [基本 ],然後 輸入資料庫的使用者 名稱和 密碼 。

      注意

      目前,Fabric事件串流僅支援Basic認證。

    • 選取 [連線 ] 以完成連線設定。 截圖顯示 PostgreSQL 資料庫連接器的連線憑證區塊。

  3. 埠:輸入伺服器的埠號碼。 預設值為 5432。 如果您在 管理連線和閘道中設定選取的雲端連線,請確定埠號碼符合該處設定的埠號碼。 如果兩者不相符,那麼在 管理連線和閘道中,雲端連線的埠號會優先。

  4. 從資料庫資料表擷取變更時,您可以選擇兩個選項:

    • 所有數據表:從資料庫中的每個數據表擷取變更。
    • 輸入資料表名稱(s):可讓您使用逗號分隔清單來指定資料表的子集。 你可以使用:格式中 schemaName.tableName 的完整表格識別碼或有效的正則表達式。 範例:
    • dbo.test.*:選取 test 架構中名稱以 dbo 開頭的所有資料表。
    • dbo\.(test1|test2):選取 dbo.test1 和 dbo.test2。

    您可以在清單中合併這兩種格式。 整個專案的字元總計限製為 102,400 個字元。

  5. 插槽名稱(選擇性):輸入為特定資料庫/架構的特定外掛程式變更而建立的 PostgreSQL 邏輯解碼插槽名稱。 伺服器會使用此位置將事件串流至 Eventstream 串流連接器。 它只能包含小寫字母、數位和底線。

    • 如果未指定,則會使用 GUID 來建立位置,需要適當的資料庫許可權。
    • 如果指定的槽名稱存在,連接器會直接使用該名稱。
  6. 展開 進階設定 以取得更多 PostgreSQL 資料庫 CDC 來源的設定選項:

    • 發行集名稱:指定要使用的PostgreSQL邏輯復寫發行集名稱。 這個值必須與資料庫中已有的出版品相符,否則會根據自動建立模式自動建立。 預設值: dbz_publication。

      注意

      連接器用戶必須具有超級用戶許可權,才能建立發佈。 我們建議您在首次啟動連接器前手動建立發佈文件,以避免權限相關問題。

    • 發行集自動建立模式:控制發行集是否自動建立及如何建立。 這些選項包括:

      • Filtered (預設值):如果指定的發行集不存在,連接器會建立一個只包含所選的數據表的數據表(如數據表包含清單中所指定)。
      • AllTables:如果指定的發行集存在,連接器會使用它。 如果不存在,連接器會建立一個包含資料庫中所有資料表的連接。
      • Disabled:連接器不會建立發行物。 如果指定的發行集遺失,連接器會丟出例外狀況並停止。 在這種情況下,必須在資料庫中手動建立此項目。

      如需更多資訊,請參閱 Debezium 文件中的發行自動建立模式

    • 十進位處理模式:指定連接器如何處理 PostgreSQL DECIMAL 和 NUMERIC 欄位值:

      • Precise:使用精確的十進位類型(例如 Java BigDecimal)來表示數值,以確保資料表示的完全精確與準確度。
      • Double:將值轉換成雙精確度浮點數。 此選項提升了可用性與效能,但可能導致精度下降。
      • String:將值編碼為格式化字串。 此選項使得下游系統容易使用,但會失去原始數字類型的語意資訊。
    • 快照模式:在連接器啟動時指定執行快照的條件:

      • Initial:連接器僅在未曾為邏輯伺服器名稱記錄偏移量時,或偵測到先前快照失敗後才會執行快照。 快照完成後,連接器開始串流事件記錄以供後續資料庫變更使用。
      • InitialOnly:只有在邏輯伺服器名稱沒有記錄任何偏移量時,連接器才會運行快照。 快照完成後,連接器停止運作。 它不會切換到串流來讀取binlog的變更事件。
      • NoData: 連接器執行一個快照,只捕捉結構,卻不捕捉任何資料表資料。 如果你不需要資料的一致快照,但只需要自連接器開始以來發生的變更,就設定這個選項。
    • 心跳動作查詢:指定連接器在發送心跳訊息時,在來源資料庫執行的查詢。

    • 快照查詢語句覆蓋:指定要在快照中包含的表格行。 如果你想讓快照只包含資料表中列的子集,可以使用這個屬性。 此特性僅影響快照。 它不適用於連接器從日誌讀取的事件。

串流或來源詳情

  1. 在 Connect 頁面,根據你使用的是 Eventstream 還是 Real-Time hub,依照以下步驟進行。

    • Eventstream:

      在右側 的來源詳情 窗格中,請依照以下步驟操作:

      1. 對於 來源名稱,請選擇 鉛筆 按鈕來更改名稱。

      2. 請注意,事件流名稱 和 串流名稱 為唯讀。

    • 實時樞紐:

      在右側的 [串流詳細數據 ] 區段中,遵循下列步驟:

      1. 選擇你想建立事件串流的 Fabric workspace。

      2. 對於 事件串流名稱,請選擇 鉛筆 按鈕,並輸入事件串流的名稱。

      3. 串流名稱的值會自動為您生成,方法是將-stream附加到事件流名稱上。 當嚮導結束時,這條串流會出現在即時集線器的 「所有資料串流」 頁面上。

  2. 在「配置」頁面底部選擇「下一步」。

評論與連結

在 Review + connect 畫面,檢視摘要,選擇 新增 (事件串流)或 連接 (Real-Time hub)。

模式處理頁面

  1. 在 結構處理 步驟中,請選擇以下選項之一:

    • 分析就緒事件與自動更新結構(DeltaFlow 預覽):連接器將原始 CDC 事件轉換成分析準備的串流,鏡像你的來源資料表結構。 DeltaFlow 透過變更類型(插入、更新或刪除)和時間戳記等元資料豐富事件,並自動管理目的資料表與結構演進。
    • 原始 CDC 事件:連接器會接收並提供原始 CDC 事件。 連接器可選擇性地自動發現資料表結構並將其登錄在結構登錄檔中。 當您想要架構感知但不要 DeltaFlow 轉換時,請使用此選項。

    注意

    以下截圖顯示的是 Azure SQL Database CDC。 所有支援的 CDC 來源連接器的結構處理選項相同。

    顯示 DeltaFlow 與 Raw CDC 事件選項的架構處理步驟截圖,適用於 CDC 來源連接器。

  2. 啟用 事件結構描述關聯。

  3. 在 Workspace,為架構集合選擇一個 Fabric 工作區。

  4. 對於 結構描述集,預設會選取 + 建立 ,這會建立新的結構描述集。 您可以變更它以選取現有的事件結構描述集。

  5. 如果您在上一個步驟中選取 [+ 建立 ] 選項,請輸入結構描述集的名稱。

  6. 在 Review + Connect 頁面,查看摘要,然後選擇 新增 (事件串流)或 連接 (Real-Time hub)。

    截圖顯示 PostgreSQL 資料庫連接器的檢視與建立頁面,並具備擴充功能。

    對於 PostgreSQL 資料庫中所有資料表或選取的資料表,連接器會自動發現並建立結構,並將其註冊到結構登錄檔。

DeltaFlow:分析支援事件轉換(預覽)

啟用 Analytics-ready 事件與自動更新結構(DeltaFlow)時,連接器提供以下功能:

  • 分析就緒事件形態:原始 Debezium CDC 事件會轉換成與來源資料表結構相符的表格格式。 事件會以中繼資料欄位豐富,包括變更類型(insert、 update或 delete)及事件時間戳記。
  • 自動目的地資料表管理:當你將支援 DeltaFlow 的串流路由到支援的目的地(如事件屋)時,目的地資料表會自動建立以符合來源資料表結構。 你不需要手動建立或設定目的資料表。
  • 結構演化處理:當來源資料庫資料表變更(例如新增欄位或建立資料表)時,DeltaFlow 會自動偵測變更,更新註冊的結構,並相應調整目標資料表。 此行為減少了結構變更所造成的人工干預。

注意

DeltaFlow (Preview) 目前支援於 Azure SQL Database CDC、Azure SQL 受控執行個體 CDC、虛擬機上的 SQL Server 及 PostgreSQL CDC 來源連接器。

關於 DeltaFlow 如何將原始 CDC 事件轉換為分析可用輸出(包括操作類型與元資料欄位)的詳細資訊,請參見 DeltaFlow 輸出轉換。

檢視更新的事件串流

  1. PostgreSQL 資料庫的 CDC 原始碼會在你的事件串流中以 編輯模式顯示。

    PostgreSQL 資料庫 CDC 原始碼在編輯檢視中的截圖,附有擴展功能。

  2. 若要實作這個新增的 PostgreSQL DB CDC 來源,請選取 [ 發佈]。 完成這些步驟之後,PostgreSQL DB CDC 來源可在即時檢視中提供視覺效果。

    啟用擴充功能時,Live 檢視中的 PostgreSQL 資料庫 CDC 來源截圖。

設定啟用結構描述之來源的目的地

目前,只有 Eventhouse、自訂端點及衍生串流目的地支援帶有相關結構的事件串流。

注意

本節程序適用於現有的 Eventstream 體驗。 關於結構感知事件串流中目的地的資訊,請參閱結構感知事件串流概述(預覽)。

設定自訂端點目的地的架構

  1. 選擇 轉換事件或新增目的地,然後選擇 自訂端點。

  2. 在 自訂端點 面板中,指定目的地名稱。

  3. 針對 輸入架構,選取事件的架構。 啟用事件串流的結構支援時,你會在這個框中選擇。

截圖顯示了設定自訂端點的面板。

如需設定自訂端點目的地的詳細步驟,請參閱將 自訂端點或自訂應用程式目的地新增至事件串流。

設定 Eventhouse 作為目的地的架構

  1. 選取 [轉換事件] 或 [新增目的地],然後選取 [Eventhouse]。

  2. 在 Eventhouse 窗格中,設定以下與結構相關的設定:

    1. 對於 輸入架構,從下拉選單中選擇一個或多個架構。

      截圖顯示 eventhouse 設定窗格,並選取輸入結構。

      注意

      如果你在設定事件集線來源時選擇了 「透過標頭的動態結構 」選項,你可能已經為該來源設定了多個結構,並將它們對應到各種屬性及其值。

    2. 在建立 表格的方法中,根據需求,選擇一個 包含所有結構的單一表格 ,或是每個 結構分別使用獨立表格。

      截圖顯示了 eventhouse 設定窗格及資料表建立方法。

    3. 針對 寫入資料方式,選取下列其中一個選項:

      • 僅限有效載荷:將擷取的有效載荷資料寫入資料表。 如果有多個輸入結構描述,則資料會傳送至多個資料表。
      • 中繼資料和承載:將中繼資料和承載資料寫入單一資料表。 範例欄位包括 source 、 subject、 type、 data和 。

      截圖顯示了事件屋設定窗格及寫入資料的選項。

關於如何設定活動屋目的地的詳細步驟,請參見 「將活動屋目的地加入事件串流」。

檢視 DeltaFlow 分析就緒輸出(預覽)

如果啟用了分析就緒事件與自動更新結構(DeltaFlow),目標資料表會自動建立,其結構會鏡像您的來源資料庫資料表。 每個資料表都包含原始欄位,以及變更類型和時間戳記的元資料欄位。

注意

以下截圖顯示的是 Azure SQL Database CDC。 DeltaFlow 目的地表的輸出對所有支援的 CDC 來源連接器相同。

截圖顯示 DeltaFlow 建立的 Eventhouse 目的地表格,已準備好分析。

你可以使用 Kusto 查詢語言(KQL)或其他分析工具查詢這些資料表,無需解析原始的 Debezium CDC 有效載荷。

其他連接器: