附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用 OCI GoldenGate 將內部部署 PostgreSQL 資料庫移轉至 OCI 資料庫 (使用 PostgreSQL)
簡介
具備 PostgreSQL 的 Oracle Cloud Infrastructure Database (具備 PostgreSQL 的 OCI 資料庫) 是一項完全託管的服務,可在建立或刪除資料庫表格時自動調整儲存。這可為您簡化管理並最佳化儲存成本。資料會同時在傳輸中和靜態進行加密。
OCI GoldenGate 支援邏輯線上移轉,可為具備 PostgreSQL 服務資料庫的 OCI 資料庫進行無縫轉換和近乎零停機移轉。此功能支援使用 PostgreSQL 服務版本 14、15 個資料庫和未來的版本,將 VM 上的內部部署 PostgreSQL 資料庫移轉至 OCI 資料庫。
本教學課程概述 OCI GoldenGate 如何協助將 VM 版本 14 上的內部部署 PostgreSQL 資料庫移轉至 PostgreSQL 服務資料庫版本 14 的 OCI 資料庫。初始載入是使用 pg_dump
(pg_dumpall
) /pg_restore
備份公用程式來執行。這將會建立來源資料庫的備份或快照,此備份或快照會在目標系統上回復,後面接著 OCI GoldenGate Change Data Capture (CDC) 複製以同步來源 (內部部署 VM PostgreSQL 資料庫) 和目標 (OCI 資料庫與 PostgreSQL 服務)。
下列影像顯示使用 OCI GoldenGate 將 VM 上的內部部署 PostgreSQL 資料庫移轉至 OCI 資料庫的架構 (使用 PostgreSQL 服務)。
目標
- 使用 OCI GoldenGate 使用 PostgreSQL 服務移轉至 OCI 資料庫。
必要條件
注意:這些先決條件適用於 VM (來源) 上的內部部署 PostgreSQL 資料庫。
-
test_decoding
Plugin: OCI GoldenGate 需要在 PostgreSQL 資料庫上安裝test_decoding
資料庫 Plugin。依照預設,可能無法安裝此外掛程式。 -
PostgreSQL 貢獻套件:確定資料庫伺服器上已安裝
postgresqlversion#-contrib
套裝軟體。 -
從屬端程式庫相容性:PostgreSQL 從屬端程式庫應與資料庫版本相符。請注意,不支援低於 10 的用戶端版本。
sudo yum install postgresql14-contrib (our database is version 14)
作業 1:準備來源資料庫環境
-
執行下列查詢以建立複製使用者,在 OCI 主控台中建立連線時,應使用此使用者。
create user ggadmin with password ‘<<password>>’; GRANT ALL PRIVILEGES ON DATABASE campaign TO ggadmin; alter user ggadmin replication; alter user ggadmin with superuser;
-
應變更下列參數,並重新啟動資料庫系統以修改
wal_level
。ALTER SYSTEM SET wal_level = logical; ALTER SYSTEM SET track_commit_timestamp = on;
工作 2:佈建 OCI GoldenGate 和設定連線
-
登入 OCI 主控台並建立 PostgreSQL 資料庫的 OCI GoldenGate 部署。
-
建立 OCI PostgreSQL 的 OCI GoldenGate 連線。
-
輸入來源連線詳細資訊,然後按一下建立。
-
輸入目標連線詳細資訊,然後按一下建立。
注意:如果為 VM 建立連線,則 SSL 協定應為 Plain ,而對於使用 PostgreSQL 服務的 OCI 資料庫,則 SSL 協定應為 Require 。
-
-
按一下建立以建立連線。
作業 3:設定來源資料庫複製
-
在 OCI GoldenGate 中建立擷取。
注意:在來源資料庫中新增所有適用綱要的綱要交易,然後按一下送出。
注意:按一下建立,然後不要按一下建立並執行。
-
在來源資料庫中建立暫時複製槽位,此槽位將用於為 Extract 處理作業建立起點,以及設定 PostgreSQL 快照的位置。可使用
CREATE_REPLICATION_SLOT
指令來完成。依照步驟設定暫時複製位置:-
以具有複製角色的使用者身分 (例如
postgres
或ggadmin
使用者) 使用psql
登入 PostgreSQL 資料庫。 -
使用
replication=database
選項。psql "dbname=pgsource replication=database user=postgres" 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
-
請注意
snapshot_name
和consistent_point
詳細資訊。注意:
consistent_point
應用於定位 OCI GoldenGate Extract 並啟動 Extract 以擷取 CDC 交易。snapshot_name
應用於使用pg_dump
和pg_restore
從來源至目標資料庫的初始載入。
-
-
將 OCI Goldengate Extract 定位至
consistent_point
日誌序號 (LSN)。建立的 CDC 擷取將會處於停止狀態。
在動作下,按一下 ... 圖示,然後選取更改。
將 LSN 的位置更改為任務 3.2 中擷取的
consistent_point
。 -
按一下送出,然後開始擷取處理作業。
Extract 將處於執行中狀態,將從更改的位置開始 CDC 擷取。
作業 4:在來源與目標資料庫上執行備份與回復
-
執行下列命令以備份來源主要資料庫。
nohup /u01/pgsql-14/bin/pg_dump -h <<Sourceip>> -p 5432 -U <<superuser/ggadmin user>> –snapshot=00000007-00001142-1 -F c -b -v -f latestdump.db pgsource &
-
執行下列命令將傾印回復至目標資料庫。
nohup /u01/pgsql-14/bin/pg_restore -h <<Targetip>> -p 5432 -U admin -d pgtarget -v latestdump.db &
作業 5:設定目標資料庫複製
-
在 OCI GoldenGate 目標資料庫上任何可用的綱要中建立檢查點表格,然後按一下送出。
-
建立具有目標資料庫連線的 Replicat 處理作業,以將 CDC 資料套用至目標資料庫。
-
按一下提交並啟動 Replicat。允許同步。
工作 6:執行實際移轉
使用 PostgreSQL 服務從內部部署 VM PostgreSQL 資料庫切換至 OCI 資料庫。
-
執行已連線至來源 VM 資料庫的應用程式逐步執行。
-
確定來源 VM 資料庫沒有資料庫連線。
-
確定 Extract/Replicat 處理作業中沒有延遲,並執行將應用程式指向目標 OCI 資料庫的切換,PostgreSQL 服務會停止 Extract/Replicat 處理作業。
工作 7:驗證移轉
使用 PostgreSQL 驗證 OCI 資料庫中目標資料庫系統的傳輸資料庫物件和資料,以確保移轉成功,且沒有任何問題或差異。
相關連結
- 使用 OCI GoldenGate 將內部部署 PostgreSQL 資料庫以 PostgreSQL 順暢地移轉至 OCI 資料庫
- 匯入、匯出及移轉資料庫
- 使用 pg_dump 精確建立 PostgreSQL 環境之間的建立
認可
- 作者 - Saravanadurai Rajendran (提升導入專家 - 資料庫)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Migrate an On-Premises PostgreSQL Database to OCI Database with PostgreSQL using OCI GoldenGate
G29132-01
Copyright ©2025, Oracle and/or its affiliates.