使用 pg_dump 公用程式精確建立 PostgreSQL 環境
使用 Oracle GoldenGate 在兩個或兩個以上的 PostgreSQL 相容資料庫之間進行複製時,您可以使用 PostgreSQL 隨附的 pg_dump (pg_dumpall) /pg_restore 備份公用程式。這會建立來源資料庫的備份或快照,以便在目標系統上進行回復。
請參閱 PostgreSQL 文件中的 pg_dump (pg_dumpall) 和 pg_restore 。
下列步驟描述如何將此備份與 Oracle GoldenGate 搭配使用,以確保精確的初始建立,不需要讓來源離線使用,也不需要使用 HANDLECOLLISIONS。
這些步驟使用「管理從屬端」,但您可以從 Oracle GoldenGate Microservices Web 介面和 Rest API 服務端點執行相同的步驟。
開始這些步驟之前,請確定您已經完成準備 Oracle GoldenGate 的 PostgreSQL。請參閱準備 PostgreSQL 小節瞭解詳細資訊。
-
從「管理從屬端」連線至部署:
CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
使用
DBLOGIN命令連線至來源 PostgreSQL 資料庫。如果您尚未設定來源資料庫的資料庫連線,則可以使用新增資料庫連線的步驟,或使用「管理從屬端」的ALTER CREDENTIALSTORE命令進行設定。DBLOGIN USERIDALIAS *alias*例如,如果別名是 ggeast,則命令會是:
DBLOGIN USERIDALIAS ggeast -
新增檢查點表格至來源資料庫。
ADD CHECKPOINTTABLE *owner.table_name*舉例而言:
ADD CHECKPOINTTABLE ggs.checkpoint -
建立您的 Extract 參數檔,以擷取您要複製的表格,並使用
REGISTER EXTRACT命令以來源 PostgreSQL 資料庫註冊新的 Extract,但不要新增 Extract。REGISTER EXTRACT *extract_name*舉例而言:
REGISTER EXTRACT extcdc -
建立一個暫時複製插槽,用於建立 Extract 處理作業的起點以及定位 PostgreSQL 快照。可使用
CREATE_REPLICATION_SLOT指令來完成此動作。以下是設定暫時複製插槽的步驟:-
以具有複製角色的使用者身分,使用
psql登入 PostgreSQL 資料庫。 -
使用
replication=database選項。這和您在步驟 2 中建立的使用者相同。舉例而言:
$ psql "dbname=pgsource replication=database user=ggeast" Password for user ggadmin: psql (16.3) Type "help" for help. pgsource=# CREATE_REPLICATION_SLOT tslot TEMPORARY LOGICAL test_decoding EXPORT_SNAPSHOT; slot_name | consistent_point | snapshot_name | output_plugin ----------+------------------+---------------------+--------------- tslot | 1/4232A6B0 | 00000007-00001142-1 | test_decoding (1 row) -
請記下 `snapshot_name` 和 `consistent_point`。
-
-
使用
pg_dump(或叢集資料庫的pg_dumpall) 建立快照,如下列範例所示:備註:
此命令可能需要一些時間執行。建議您使用
nohup選項來發出此命令,以避免在階段作業關閉時停止該命令。$ nohup /u01/pgsql-16/bin/pg_dump -h pgsource -p 5432 -U ggeast -snapshot=00000007-00001142-1 -F c -b -v -f latestdump.db pgsource &pg_dump/pg_dumpall使用步驟 5c 中從輸出接收的snapshot_name。在指定的範例中,pg_dump選項假設將複製整個資料庫。不過,如果您要複製資料庫的某個子集,您可以只傾印那些物件。 -
使用
ADD EXTRACT命令新增 Extract。Extract 應放置在步驟 5c 中追蹤的consistent_point:ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*舉例而言:
ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0將 Extract 定位為此 LSN 值,確保 Extract 不會擷取傾印中包含的任何資料。
-
使用
ADD EXTTRAIL命令新增 Extract 歷程檔。ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*舉例而言:
ADD EXTTRAIL *east/ea*, EXTRACT *extecdc* -
啟動 Extract。
START EXTRACT *extract_name* -
(選擇性) 如果您需要設定分送路徑,以將歷程檔傳送至其他伺服器,請使用
ADD DISTPATH命令。ADD DISTPATH *name* SOURCE *source_uri* TARGET *target_uri*舉例而言:
ADD DISTPATH *dpecdc* SOURCE *trail://localhost:9002/services/v2/sources?trail=ea* TARGET *wss://localhost:9003/services/v2/targets?trail=ea* -
使用
pg_restore命令還原目標伺服器上的資料庫。就像在pg_dump中一樣,如果階段作業遺失,回復將會失敗,因此建議您使用nohup選項。在此範例中,使用了下列選項:$ nohup /u01/pgsql-16/bin/pg_restore -h pgtarget -p 6432 -U ggadmin -d pgtarget -v latestdump.db & -
(選擇性) 如果您在其他部署中建立「接收者」服務的分送路徑,則可能需要使用「管理從屬端
CONNECT」命令來連線目標部署。CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
使用
DBLOGIN USERIDALIAS命令連線至目標 PostgreSQL 資料庫。如果您尚未設定來源資料庫的資料庫連線,可以使用新增資料庫連線的步驟進行設定,或是使用「管理從屬端」的ALTER CREDENTIALSTORE命令。 -
新增檢查點表格至目標資料庫。
ADD CHECKPOINTTABLE ggs.chkpoint -
新增一個將在資料庫回復完成後,將變更套用至目標資料庫的 Replicat。
ADD REPLICAT *replicat_name*舉例而言:
ADD REPLICAT repecdc -
在回復完成後啟動 Replicat,如下列範例所示:
START REPLICAT *repecdc*