1. 概述
1.1 版本
| FineDataLink 版本 | 功能變動 |
|---|---|
| 4.2.10.1 | PostgreSQL 作為資料開發-實時任務、實時管道任務的資料來源時,適配 pgoutput 邏輯解碼插件 |
1.2 功能簡介
本文介紹 PostgreSQL 作為資料開發-實時任務、實時管道任務的資料來源且讀取方式選擇 pgoutput 時,需要做的一些配置。

1.3 wal2json和pgoutput的差別
wal2jaon 讀取方式需要額外安裝插件。
2. 操作步驟
本文以 PostgreSQL 安裝在 Linux 系統中操作為例;若 PostgreSQL 安裝在 Windows 系統中,可以在 【Windows環境】PostgreSQL環境準備 文檔中找到與本文步驟相同的操作,進行參考。
2.1 確認當前使用的資料庫版本
PostgreSQL 10 及以上版本& FineDataLink 為 4.2.10.1 及之後版本時,適配 pgoutput 邏輯解碼插件(該插件內建在 PostgreSQL 中,無需使用者手動安裝)。
2.2 修改REPLICA IDENTITY
該屬性決定了當資料發生UPDATE,DELETE時,日誌記錄的欄位。
DEFAULT - 更新和刪除將包含primary key列的先前值
NOTHING - 更新和刪除將不包含任何先前值
FULL - 更新和刪除將包含所有列的先前值
INDEX index name - 更新和刪除事件將包含名為 index name 的索引定義中包含的列的先前值。
修改程式碼如下:
注:所有需要進行實時同步的表,都應該做此操作。
1)使用預設 postgres 帳號登入名為 fdl 的資料庫:-U指定使用者,-d指定資料庫,-h指定伺服器,-p指定埠。
輸入密碼後,登入資料庫。

2)例如將模式為 public 的表「產品名稱維度」修改設定,則輸入如下語句:
![]()
2.3 使用者權限確認
以上都是用預設使用者 Postgres 進行,若用其他使用者進行配置,則需要該使用者為 PostgreSQL replication 角色、PostgreSQL login 角色,並且有需要同步的表的 select 權限。
1)建立一個具有使用者,該使用者為 PostgreSQL replication 角色、PostgreSQL login 角色。
注:wendy 為帳號,123456 為密碼,使用者自訂即可。
2)在指定模式中的所有表上執行 select 操作的權限賦給使用者:
注:schemaname 為模式名稱,username為帳號稱,使用者根據需要修改。
3)賦予使用者 replication 和 login 權限命令。
進入 PostgreSQL 安裝目錄下的 data 資料夾,進入 data 資料夾中,找到 postgresql.conf、pg_hba.conf,對這兩個檔案進行修改。
修改 PostgreSQL 複製槽設定。
本文範例中,postgresql.conf 檔案在/var/lib/pgsql/12/data目錄下,使用vi /var/lib/pgsql/12/data/postgresql.conf(使用者根據實際情況修改 postgresql.conf 所在路徑)語句編輯該檔案,在檔案末尾追加以下配置:
注:或者找到下面程式碼中的設定項,取消註釋,修改對應的值。
設定使用者 replication 權限。
本文範例中,pg_hba.conf 檔案在/var/lib/pgsql/12/data目錄下,使用vi /var/lib/pgsql/12/data/pg_hba.conf(使用者根據實際情況修改 pg_hba.conf 所在路徑)語句編輯該檔案,把下圖中紅圈中的兩行前邊的 # 去掉:

2.4 後續步驟
在進行實時同步前,在 FineDataLink 中配置好需要同步的源端和目標端資料庫資料連結,以便在同步任務配置程式中,透過選擇資料源名稱來控制同步任務,詳情參見:建立並管理資料源
