Linux PostreSql(单机) 21C OGG标准化挖掘文档

来源:这里教程网 时间:2026-03-03 18:31:35 作者:

一、环境描述

环境描述

IP

系统

PG 版本

OGG 版本

源端

CentOS 7.5

13.4

21.3

目标端

CentOS 7.5

10

21.3

 

Oracle GoldenGate for PostgreSQL 仅支持 DML 操作(插入 / 更新 / 删除)。

不支持从物化视图捕获。

二、检查生产库

不支持的数据类型

如果在 Extract 参数文件中包含包含不受支持的数据类型的表,PostgreSQL 捕获将异常终止。

Arrays box circle composite types Enum JSON Jsonb line lseq object identifiers OID pg_lsn pseduo types Point path polygon range types tsvector tsquery UDT

 

select c.relname, ATTNAME, ATTTYPID, TYPNAME from pg_attribute a, pg_class c, pg_namespace n, pg_type t where a.attrelid = c.oid and a.attnum > 0  and c.relnamespace = n.oid and nspname = 'odc' and a.atttypid = t.oid and typname in ('arrays','box','circle','composite types','enum','json','jsonb','line','lseq','object identifiers','oid','pg_lsn','pseduo types','point','path','polygon','range types','tsvector','tsquery','udt') and c.relkind = 'r';

 

relname | attname | atttypid | typname

---------+---------+----------+---------

 ttt     | id      |      603 | box

 ttt     | id2     |      603 | box

 ttt     | id3     |       26 | oid

 ttt     | id4     |       26 | oid

 

查询物化视图并排除

oggtestdb=# \dm

 

创建pg 用户并赋权(源端/ 目标端)

postgres=# create user odc with password 'odc';

CREATE ROLE

postgres=# ALTER USER odc WITH Replication;

postgres=# alter user odc superuser;

postgres=# \c oggtestdb odc

You are now connected to database "oggtestdb" as user "odc".

postgres=# create schema odc;

 

配置数据库连接(源端/ 目标端)

Vi /odc/ODBC.ini

 

[ODBC Data Sources]

oggtestdb=DataDirect 13 PostgreSQL Wire Protocol 

 

[ODBC]

IANAAppCodePage=106

InstallDir=/odc/

 

[oggtestdb]

Driver=/odc/lib/GGpsql25.so

Database=oggtestdb

Hostname=localhost

PortNumber=5433

LogonID=odc

Password=odc

TransactionErrorBehavior=2

 

oggtestdb=DataDirect 13 PostgreSQL Wire Protocol 

表示pg 数据库的版本以及别名,与[oggtestdb] 相对应

IANAAppCodePage=106

106 表示字符集UTF8

InstallDir

表示ogg 的安装目录下

Driver=/odc/lib/GGpsql25.so

表示driver 插件所在的位置,默认都在odc/lib 目录下

Database Server PortNumber LogonID Password

表示连接的数据库名,服务器名,pg 端口,连接数据库oggtestdb 的用户和密码

TransactionErrorBehavior=2

表示设置为 2 才能适当地处理数据库错误情况

 

修改数据库参数文件(源端)

vi postgresql.conf

wal_level = logical        #minimal, replica, or logical

max_replication_slots = 10          #max number of replication slots

max_wal_sender = 10                 #maximum number of wal sender processes

wal_receiver_status_interval        #optional, keep the system default

wal_sender_timeout                  #optional, keep the system default

track_commit_timestamp              #optional, keep the system default

 

 

修改参数文件后需要重启数据库

pg_ctl restart -D /postgres/product/data2

 

访问libpq 库(源端/ 目标端)

Extract 使用 PostgreSQL 本机 API 进行流式复制。PostgreSQL 本机 API 在库中实现,该库 libpq 位于 PostgreSQL 数据库安装目录中。这个库需要在中指定, LD_LIBRARY_PATH 以便 Extract 可以访问它。您需要为此配置设置以下路径:

export PATH=/postgres/app/pg13/bin:$PATH:/odc

export LD_LIBRARY_PATH=/odc:/postgres/app/pg13/lib/:/odc/lib

export ODBCINI=/odc/odbc.ini

 

三、源端安装软件

安装ogg

利用postgres 用户,创建ogg 目录,上传并解压介质

[root@pgstd ~]# mkdir /odc

[postgres@pgstd /]$ chown postgres:postgres /odc

[postgres@pgstd /odc]$ unzip 21.3_pg_linux.zip

 

安装目录

[postgres@pgstd odc]$ ./ggsci

GGSCI (pgstd) 1> create subdirs

 

注册挖掘进程

ggsci> DBLOGIN SOURCEDB oggtestdb

ggsci> Register Extract pg_ext

 

ps :在注册之前不要添加任何挖掘进程

 

启用补充日志

PostgreSQL 事务日志默认在数据库级别启用,但它记录每个表的事务日志的默认级别,这是低级。Oracle GoldenGate PostgreSQL Extract 需要增强日志记录才能在目标上构建 DML 操作。

ggsci> DBLOGIN SOURCEDB oggtestdb

ggsci> ADD TRANDATA owner.table

 

配置mgr

GGSCI (pgstd) 1> edit param mgr

port 7809

DYNAMICPORTLIST 7800-7810

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPHOURS 24

autorestart extract * retries 10 waitminutes 10

 

启动mgr

GGSCI (pgstd) 1> start mgr

 

配置挖掘进程

ggsci> add extract pg_ext tranlog begin now

ggsci> add exttrail ./dirdat/pg extract pg_ext

 

ggsci> edit param pg_ext

extract pg_ext

setenv (ODBCINI="/odc/odbc.ini")

sourcedb oggtestdb

exttrail ./dirdat/pg

FETCHOPTIONS FETCHPKUPDATECOLS

dynamicresolution

table odc.*;

 

 

配置传输进程

ggsci>add extract pg_dmp EXTTRAILSOURCE ./dirdat/pg

ggsci>ADD RMTTRAIL ./dirdat/pg, EXTRACT pg_dmp

 

GGSCI (pgstd) 2> edit param pg_dmp

extract pg_dmp

setenv (ODBCINI="/odc/odbc.ini")

sourcedb oggtestdb

rmthost 192.168.239.31, mgrport 7809

rmttrail ./dirdat/pg

passthru

table odc.*;

table public.*;

 

 

四、目标端安装软件

用户应在目标上禁用触发器和约束(如删除级联)。Oracle GoldenGate 不支持触 发器和约束(级联更新/ 删除)。

安装ogg

利用postgres 用户,创建ogg 目录,上传并解压介质

[root@pgstd ~]# mkdir /odc

[postgres@pgstd /]$ chown postgres:postgres /odc

[postgres@pgstd /odc]$ unzip 21.3_pg_linux.zip

 

安装目录

[postgres@pgstd odc]$ ./ggsci

GGSCI (pgstd) 1> create subdirs

配置mgr

GGSCI (pgstd) 1> edit param mgr

port 7809

DYNAMICPORTLIST 7800-7810

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPHOURS 24

autorestart replicat * retries 10 waitminutes 10

 

启动mgr

GGSCI (pgstd) 1> start mgr

 

创建checkpoint

ggsci> DBLOGIN SOURCEDB target

GGSCI (pgstd) 2> add checkpointtable  odc.checkpointtab

Successfully created checkpoint table odc.checkpointtab.

 

创建应用进程

ggsci> DBLOGIN SOURCEDB target

ggsci>add replicat pg_rep exttrail ./dirdat/pg

 

ggsci>edit param pg_rep

replicat pg_rep

--SETENV(PGCLIENTENCODING="UTF8")

SETENV(ODBCINI="/odc/odbc2.ini")

targetdb target

discardfile ./dirrpt/pg.rpt, append

map odc.* target odc.*;

map public.* target public.*;

 

 

五、初始化数据库

由于目前未找到根据时间点来起应用进程的方法,只能利用ogg 自带的初始化进程。

源端设置

ggsci> ADD EXTRACT test1, SOURCEISTABLE

ggsci> EDIT PARAMS test1

EXTRACT TEST1

setenv (ODBCINI="/odc/odbc.ini")

sourcedb oggtestdb

rmthost 192.168.239.31, mgrport 7809

RMTTASK REPLICAT, GROUP REST1

table odc.*;

 

目标端设置

ggsci> ADD REPLICAT rest1, SPECIALRUN

ggsci> EDIT PARAMS rest1

 

REPLICAT REST1

setenv (ODBCINI="/odc/odbc.ini")

targetdb oggtestdb

--SOURCEDEFS ./dirdef/test.def

DISCARDFILE ./dirrpt/REST1.dsc, PURGE

map odc.* target odc.*;

 

mgr 配置中增加参数

GGSCI (pgstd) 34> view param mgr

ACCESSRULE,prog *,IPADDR 192.168.*.*, ALLOW

 

启动源端TEST1 ,目标端不需要启动

GGSCI (pgstd) 35> start test1

 

注意:

挖掘进程需要在启动初始化之后才能开启,若在之前开启会造成数据重复的现象。

 

相关推荐