postgresql 自定义表变量_Oracle GoldenGate新支持开源关系型数据库PostgreSQL

本文介绍了Oracle GoldenGate如何从PostgreSQL 10及更高版本中抽取和复制数据,包括配置环境、ODBC连接、数据库设置、抽取进程等详细步骤,旨在实现异构数据库间的实时数据同步。
摘要由CSDN通过智能技术生成

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执行的管理任务。与常规数据库不同,自治数据库无需人工干预即可执行所有这些任务以及更多任务。

9710b29d95ed8e78dfe4e7c7d06e302a.png

您可以在OCI Cloud上运行GoldenGate PostgreSQL,并从Amazon PostgreSQL RDS和Amazon PostgreSQL Aurora远程捕获数据,并将数据复制到自治数据库中。

在部署GoldenGate PostgreSQL时,需要考虑的几个限制:

  • 抽取名称在单个部署中必须唯一

  • 不支持针对系统数据库的捕获和投递

  • 数据库版本必须为10或更高

本文就GoldenGate如何从本地PostgreSQL中抽取数据作一简单介绍,以起到抛砖引玉的作用。主要操作步骤如下:

  • 准备DB环境

  • 配置GoldenGate节点的环境变量

  • 配置ODBC

  • 配置GoldenGate

  • 测试

配置

准备PostgreSQL环境

Oracle GoldenGate PostgreSQL通过逻辑日志读取变更数据。Oracle GoldenGate Capture的每个Extract都需要一个replicat slot,应根据您要运行的抽取程序的数量来设置足够的max_replication_slot值。相应的参数需要添加或修改配置文件postgresql.conf,如下: 

wal_level= logical

max_replication_slots= 10 #可以比该值更大

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

exportOGG_HOME=/root/ogg4pg

exportLD_LIBRARY_PATH=$OGG_HOME/lib

exportODBCINI=/etc/odbc.ini

unixODBC配置

# yum -y install unixODBC

# 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

HostName=192.168.7.98

PortNumber=5432

LogonID=postgres

Password=post3214

执行以下命令,确认odbc配置正确。

$ isql -v testdb postgres post3214

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

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

|Connected!                            |

|                                       |

| sql-statement                         |

| help[tablename]                      |

|quit                                  |

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

SQL>select now();

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

| now                             |

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

|2020-07-18 16:34:08.233492+08   |

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

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

822d9904bd899bc4913887c8109f714b.png

作者简介

蔡东林,甲骨文云平台数据集成资深咨询顾问,专注于甲骨文数据集成相关产品及解决方案。具有15+年的数据仓库、数据处理经验,熟悉甲骨文相关集成产品,方案和项目实施经验。熟悉电信,银行行业。您可以通过donglin.cai@oracle.com与他联系。

了解更多,敬请关注甲骨文开发者社区......

16eb9079acc8fd7f217bfb5bb1be27c9.png

f3bdb503a44625de2f346b63101adf75.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值