本文說明如何將 Postgre SQL 資料庫 異動資料擷取 (CDC) 來源新增至 Eventstream。
適用於 Microsoft Fabric 事件串流的 PostgreSQL 資料庫異動資料擷取 (CDC) 來源連接器,讓您擷取 PostgreSQL 資料庫中目前資料的快照。 目前,PostgreSQL 資料庫異動數據擷取 (CDC) 支援下列服務,其中可以公開存取資料庫:
- 適用於 PostgreSQL 的 Azure 資料庫
- Amazon RDS for PostgreSQL
- Amazon Aurora PostgreSQL
- 適用於 PostgreSQL 的 Google Cloud SQL
將 PostgreSQL 資料庫 CDC 來源新增至事件數據流之後,它會擷取指定數據表的數據列層級變更。 然後,這些變更可以實時處理,並傳送到不同的目的地,以進行進一步分析。
必要條件
在 Fabric 容量授權模式或具有參與者或更高許可權的試用版授權模式中存取工作區。
PostgreSQL 資料庫中已註冊的使用者存取權。
您的 PostgreSQL 資料庫必須可公開存取,且不可位於防火牆後方或在 Azure 虛擬網路中受保護。
在 PostgreSQL 資料庫和資料表中啟用 CDC。
如果您有 適用於 PostgreSQL 的 Azure 資料庫,請遵循下一節中的步驟來啟用 CDC。 如需詳細資訊,請參閱邏輯複寫和邏輯解碼 - 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。
如需其他 PostgreSQL 資料庫,請參閱 PostgreSQL 的 Debezium 連接器:Debezium 文件。
如果您沒有 eventstream, 請建立 eventstream。
在 PostgreSQL 資料庫中啟用 CDC
本節使用適用於 PostgreSQL 的 Azure 資料庫 作為範例。
若要在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中啟用 CDC,請依照這些步驟進行:
在 Azure 入口網站中的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器頁面上,選取導覽功能表中的伺服器參數。
在 [ 伺服器參數] 頁面上:
- 將 wal_level 設定為 logical。
- 將 max_worker_processes 更新為至少 16。
儲存變更並重新啟動伺服器。
確認您的 Azure Database for PostgreSQL 彈性伺服器執行個體允許公用網路流量。
執行下列 SQL 語句, 以授與系統管理員用戶 復寫權限。 如果您要使用其他使用者帳戶來連線 PostgreSQL DB 來擷取 CDC,請確定使用者是 資料表擁有者。
ALTER ROLE <admin_user_or_table_owner_user> WITH REPLICATION;
啟動選取數據源精靈
如果你還沒在事件串流中新增任何來源,請選擇 「使用外部來源 」磁磚。
如果你是將原始碼加入已發布的事件串流,請切換到 編輯 模式。 在色帶上選擇 新增來源>外部來源。
在 [選取資料來源] 頁面上,搜尋 [PostgreSQL DB (CDC)] 圖格,然後選取其中的 [Connect]。
設定並連線到 PostgreSQL 資料庫 CDC
在連線頁面上,選取新增連線。
在連線設定區段中,輸入下列資訊。
伺服器:PostgreSQL 資料庫的伺服器位址,例如 my-pgsql-server.postgres.database.azure.com。
資料庫:資料庫名稱,例如 my_database。
線上名稱:輸入連線的名稱。
驗證種類,選取 [基本 ],然後 輸入資料庫的使用者 名稱和 密碼 。
注意
目前,Fabric 事件數據流僅支援 基本 身份驗證。
選取 [連線 ] 以完成連線設定。
埠:輸入伺服器的埠號碼。 預設值為 5432。 如果您在 管理連線和閘道中設定選取的雲端連線,請確定埠號碼符合該處設定的埠號碼。 如果兩者不相符,那麼在 管理連線和閘道中,雲端連線的埠號會優先。
從資料庫資料表擷取變更時,您可以選擇兩個選項:
- 所有數據表:從資料庫中的每個數據表擷取變更。
-
輸入資料表名稱(s):可讓您使用逗號分隔清單來指定資料表的子集。 您可以使用
schemaName.tableName格式的完整資料表識別碼或有效的正則表示式。 範例: -
dbo.test.*:選取test架構中名稱以dbo開頭的所有資料表。 -
dbo\.(test1|test2):選取dbo.test1和dbo.test2。
您可以在清單中合併這兩種格式。 整個專案的字元總計限製為 102,400 個字元。
插槽名稱(選擇性):輸入為特定資料庫/架構的特定外掛程式變更而建立的 PostgreSQL 邏輯解碼插槽名稱。 伺服器會使用此位置將事件串流至 Eventstream 串流連接器。 它只能包含小寫字母、數位和底線。
- 如果未指定,則會使用 GUID 來建立位置,需要適當的資料庫許可權。
- 如果指定的槽名稱存在,連接器會直接使用該名稱。
您可以展開 進階設定 以存取更多 PostgreSQL 資料庫 CDC 來源的設定選項:
發行集名稱:指定要使用的PostgreSQL邏輯復寫發行集名稱。 這必須符合資料庫中的現有發行集,否則會根據自動創建模式自動建立它。 預設值:
dbz_publication。注意
連接器用戶必須具有超級用戶許可權,才能建立發佈。 建議您在第一次啟動連接器之前手動建立刊物,以避免許可權相關問題。
發行集自動建立模式:控制發行集是否自動建立及如何建立。 這些選項包括:
-
Filtered(預設值):如果指定的發行集不存在,連接器會建立一個只包含所選的數據表的數據表(如數據表包含清單中所指定)。 -
AllTables:如果指定的發行集存在,連接器會使用它。 如果不存在,連接器會建立一個包含資料庫中所有資料表的連接。 -
Disabled:連接器不會建立發行物。 如果指定的發行集遺失,連接器會丟出例外狀況並停止。 在這種情況下,必須在資料庫中手動建立此項目。
如需更多資訊,請參閱 Debezium 文件中的發行自動建立模式
-
十進位處理模式:指定連接器如何處理 PostgreSQL
DECIMAL和NUMERIC欄位值:-
Precise:表示使用精確十進位型別的值(例如 JavaBigDecimal),以確保數據表示的完整精確度和精確度。 -
Double:將值轉換成雙精確度浮點數。 這可改善可用性和效能,但可能會導致精確度降低。 -
String:將值編碼為格式化字串。 這可讓它們輕鬆地在下游系統中取用,但會遺失原始數值類型的語意資訊。
-
快照模式:在連接器啟動時指定執行快照的條件:
-
Initial:當沒有為邏輯伺服器名稱記錄偏移量,或偵測到先前的快照未完成時,連接器僅會執行快照。 快照完成後,連接器開始串流事件記錄以供後續資料庫變更使用。 -
InitialOnly:僅當邏輯伺服器名稱尚未記錄偏移時,連接器才會執行快照。 快照完成後,連接器停止運作。 它不會切換到串流來讀取binlog的變更事件。 -
NoData: 連接器執行一個快照,只捕捉結構,卻不捕捉任何資料表資料。 如果你不需要資料的一致快照,但只需要自連接器開始以來發生的變更,請設定此選項。
-
心跳動作查詢:指定連接器在發送心跳訊息時,在來源資料庫執行的查詢。
快照選擇語句覆蓋:指定要在快照中包含的資料表列。 如果你想讓快照只包含資料表中列的子集,可以使用這個屬性。 此特性僅影響快照。 它不適用於連接器從日誌讀取的事件。
在 [ 檢閱 + 連線 ] 頁面上,檢閱摘要,然後選取 [ 新增]。
檢視更新的事件串流
您可以在編輯模式中看到 Postgre SQL 資料庫 CDC 來源新增至 Eventstream。
若要實作這個新增的 PostgreSQL DB CDC 來源,請選取 [ 發佈]。 完成這些步驟之後,PostgreSQL DB CDC 來源可在即時檢視中提供視覺效果。
相關內容
其他連接器: