PostgreSQL是一款免費的對象-關系型數據庫(ORDBMS),PostgreSQL支持大部分的SQL標準并且提供了很多其他現代特性,如復雜查詢、外鍵、觸發器、視圖、事務完整性、多版本并發控制等。同樣,PostgreSQL也支持各種擴展,例如通過增加新的數據類型、函數、操作符、聚集函數、索引方法、過程語言等。最后,因為靈活的許可授權,任何人都可以以任何目的免費使用、修改和分發PostgreSQL。
2020年7月,Oracle數據庫產品管理部門很高興宣布Oracle GoldenGate PostgreSQL 的抽取(Capture)支持已全面上市。自GoldenGate 12.1發行以來,GoldenGate已支持到PostgreSQL的交付,并允許用戶將數據從GoldenGate支持的異構數據庫實時復制到PostgreSQL數據庫。現在,除了GoldenGate PostgreSQL Delivery,又增加了從PostgreSQL 10及更高版本的數據庫中捕獲數據的能力。
該產品除了支持本地PostgreSQL的捕獲,它還支持從Amazon PostgreSQL RDS和Amazon PostgreSQL Aurora(或其它基于PostgreSQL內核的RDS)捕獲數據,并幫助您將數據復制到其它任何數據平臺,如Oracle自治數據庫。該數據庫是一個云數據庫,使用機器學習來自動執行數據庫調優、安全設置、備份、打補丁和其他日常由DBA執行的管理任務。與常規數據庫不同,自治數據庫無需人工干預即可執行所有這些任務以及更多任務。
oracle動態sql語句綁定變量?您可以在OCI Cloud上運行GoldenGate PostgreSQL,并從Amazon PostgreSQL RDS和Amazon PostgreSQL Aurora遠程捕獲數據,并將數據復制到自治數據庫中。
在部署GoldenGate PostgreSQL時,需要考慮的幾個限制:
抽取名稱在單個部署中必須唯一
不支持針對系統數據庫的捕獲和投遞
數據庫版本必須為10或更高
oracle創建sequence。本文就GoldenGate如何從本地PostgreSQL中抽取數據作一簡單介紹,以起到拋磚引玉的作用。主要操作步驟如下:
準備DB環境
配置GoldenGate節點的環境變量
配置ODBC
配置GoldenGate
mysql自定義變量。測試
準備PostgreSQL環境
Oracle GoldenGate PostgreSQL通過邏輯日志讀取變更數據。Oracle GoldenGate Capture的每個Extract都需要一個replicat slot,應根據您要運行的抽取程序的數量來設置足夠的max_replication_slot值。相應的參數需要添加或修改配置文件postgresql.conf,如下:?
wal_level= logical
max_replication_slots= 10 #可以比該值更大
linux定義變量?max_wal_senders= 10
如果是遠程部署GoldenGate,則還需要修改pg_hba.conf,允許遠端的主機IP能訪問PG對應的主機,如下示例:
host? all??all 192.168.7.0/24? md5
修改上述參數可能需要重啟PostgreSQL才會生效,詳情可參考PG的手冊。
創建一個testdb,并設置postgres用戶的密碼為post3214
用戶定義的變量、配置GoldenGate節點的環境
GoldenGate安裝
GoldenGate PostgreSQL的安裝與其它DB的安裝相同,不在本文贅述。
OS環境變量配置
exportPGHOST=192.168.7.98
PS變量、exportOGG_HOME=/root/ogg4pg
exportLD_LIBRARY_PATH=$OGG_HOME/lib
exportODBCINI=/etc/odbc.ini
unixODBC配置
# yum -y install unixODBC
sql oracle。# vi /etc/odbc.ini
[ODBC DataSources]
testdb=DataDirect7.1 PostgreSQL Wire Protocol
[ODBC]
IANAAppCodePage=106
自定義表單 前端。InstallDir=/root/ogg4pg
[testdb]
Driver=/root/ogg4pg/lib/GGpsql25.so
Description=DataDirect7.1 PostgreSQL Wire Protocol
Database=testdb
oracle 綁定變量。HostName=192.168.7.98
PortNumber=5432
LogonID=postgres
Password=post3214
執行以下命令,確認odbc配置正確。
mysql定義變量?$ isql -v testdb postgres post3214
+---------------------------------------+
+---------------------------------------+
|Connected!??????????????????????????? |
|?????????????????????????????????????? |
自定義表單系統 開源,| sql-statement???????????????????????? |
| help[tablename]????????????????????? |
|quit????????????????????????????????? |
+---------------------------------------+
SQL>select now();
傳奇自定義變量詳解?+---------------------------------+
| now???????????????????????????? |
+---------------------------------+
|2020-07-18 16:34:08.233492+08?? |
+---------------------------------+
oracle創建一張一樣的表,SQLRowCountreturns -1
1 rowsfetched
經過以上步驟,確認通過ODBC可以正常訪問PostgreSQL。
安裝libpq
針對遠程抽取,需要在安裝GoldenGate的機器上安裝pg lib。
# yum -y install postgresql-libs
配置GoldenGate
配置MGR和附加日志
運行ggsci
GGSCI> create subidrs
配置mgr
GGSCI> edit param mgr
Port 7809
確認OGG可以登錄到PostgreSQL
GGSCI > dblogin sourcedb testdb, useridpostgres, password post3214
Successfully logged into database.
對需要同步的表,添加附加日志
GGSCI> add trandata test.tb1
GGSCI> add trandata test.tb2
配置抽取進程
GGSCI> edit param ex1
extractex1
sourcedbtestdb, userid postgres, password post3214
exttrail./dirdat/ea
tabletest.*;
注冊和添加抽取進程
GGSCI >register extract ex1
2020-07-1816:40:45? INFO??? OGG-25355?Successfully created replication slot 'ex1_46b13bf0f63b63ba' for EXTRACTgroup 'EX1' in database 'testdb'.
GGSCI> add ext ex1, tranlog , begin now
GGSCI >add exttrail ./dirdat/ea, ext ex1
啟動抽取進程
GGSCI > start ex1
GGSCI > info ex1
EXTRACT??? EX1??????Last Started 2020-07-18 16:41??Status RUNNING
CheckpointLag?????? 00:00:00 (updated 00:00:07 ago)
ProcessID?????????? 11376
VAM ReadCheckpoint? 2020-07-18 16:41:02.708290
ReplicationSlot???? ex1_46b13bf0f63b63ba is activewith PID 8338 in database testdb
SlotRestart LSN???? 0/16BAA78
SlotFlush LSN?????? 0/16BAAB0
CurrentLog Position 0/16BAAB0
由上述信息可以看出,GoldenGate可以正常讀取數據庫日志。
測試在PostgreSQL上進行數據變更操作
testdb=#insert into test.tb1 values(1,'abc');
INSERT 01
testdb=#insert into test.tb1 values(2,'abc');
INSERT 01
testdb=#update test.tb1 set name='ksaa' where id=1;
UPDATE 1
testdb=#delete from test.tb1 where id=2;
DELETE 1
查看GoldenGate是否能捕獲增量數據
GGSCI> stats ex1, total
SendingSTATS request to EXTRACT EX1 ...
Start ofStatistics at 2020-07-18 16:42:28.
Output to./dirdat/ea:
Extractingfrom test.tb1 to test.tb1:
*** Totalstatistics since 2020-07-18 16:41:57 ***
??????? Total inserts????????????????????????????????????? 2.00
???? ???Total updates???????????????????????????????????? 1.00
??????? Total deletes????????????????????????????????????? 1.00
??????? Total upserts????????????????????????????????????? 0.00
??????? Total discards???????????????????????????????????? 0.00
??????? Total operations???????????????????????? ??????????4.00
End ofStatistics.
可以看到,GoldenGate已經捕獲到變更數據。
小結GoldenGate配置從PostgreSQL抽取增量數據,與其它數據庫的配置完全一樣。通過使用GoldenGate PostgreSQL,可以在不同異構環境中,實現更多的數據實時集中和分發,以滿足數據同步的需求。針對GoldenGate PostgreSQL更詳細的說明可參考官方文檔:
https://docs.oracle.com/en/middleware/goldengate/core/19.1/installing/installing-postgresql.html
作者簡介
蔡東林,甲骨文云平臺數據集成資深咨詢顧問,專注于甲骨文數據集成相關產品及解決方案。具有15+年的數據倉庫、數據處理經驗,熟悉甲骨文相關集成產品,方案和項目實施經驗。熟悉電信,銀行行業。您可以通過donglin.cai@oracle.com與他聯系。
了解更多,敬請關注甲骨文開發者社區......
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态