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

您可以在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

作者简介

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

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

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

  1. 三款开源关系型数据库对比:MySQL、PostgreSQL、SQLite

    在这篇DigitalOcean文章中,我们将尝试理解一些最常用.最流行的关系型数据库管理系统(RDBMS)的内核区别.我们将会探索最底层的区别--特性与功能,它们如何工作,在哪方面更出色,以帮助程序员 ...

  2. MYSQL 使用自定义表变量

    mysql  用户自定义表变量,ENGINE=MyISAM DEFAULT CHARSET=gb2312; 制定编码方式,防止乱码 DROP TABLE IF EXISTS p_temp; creat ...

  3. 华为云数据库 PostgreSQL 支持 10.3 ,高性能,新体验

    日前,华为云数据库 PostgreSQL 正式支持 PostgreSQL10.3.这是继支持PostgreSQL 10 版本.性能显著提升后的又一次优化,无论是从功能特性还是用户体验角度,无疑都为用户 ...

  4. 【译】表变量和临时表的比较(转)

    关于表变量是什么(和表变量不是什么),以及和临时表的比较让很多人非常困惑.虽然网上已经有了很多关于它们的文章,但我并没有发现一篇比较全面的.在本篇文章中,我们将探索表变量和临时表是什么(以及不是什么) ...

  5. 【译】表变量和临时表的比较

    关于表变量是什么(和表变量不是什么),以及和临时表的比较让很多人非常困惑.虽然网上已经有了很多关于它们的文章,但我并没有发现一篇比较全面的.在本篇文章中,我们将探索表变量和临时表是什么(以及不是什么) ...

  6. SQL Server 表变量和临时表的区别

    一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约 ...

  7. dedecms自定义表单加验证码

    一,在后台左侧点击核心->自定义表单->增加新的自定义表单,按照提示填写信息,保存出来再点击编辑进去添加字段 二,自定义表单的调用,网上有调用方法,可是测试没成功,我就用自己的方法吧,点击 ...

  8. 表变量与临时表的优缺点?(ZT)

    什么情况下使用表变量?   什么情况下临时表?   ---------------------------------------------------------------     表变量只存放 ...

  9. SQL Server 2019中SQL表变量延迟编译

    In an article, An overview of the SQL table variable, we explored the usage of SQL table variables i ...

最新文章

  1. 【Java_基础】Java中Native关键字的作用
  2. bzoj 2435: [Noi2011]道路修建 树上 dp
  3. OpenGL ES之基本简介和渲染流程
  4. java压缩----使用ANT JDK压缩---解决中文问题
  5. 流程图伪代码计算机语言,流程图与伪代码 PPT课件
  6. DRF url控制 解析器 响应器 版本控制 分页(常规分页,偏移分页,cursor游标分页)...
  7. 腾讯视频app官方下载_腾讯视频怎么快进
  8. 斯坦福大学机器学习公开课视频及课件
  9. 与数据绑定相关的接口(转)
  10. Jquery第二章常用方法,一二级菜单淡入淡出,event事件,复选框的全选反选第一节
  11. jedate插件的使用
  12. 2022年系统分析师论文模拟题--押题
  13. 以CIM平台推动数字孪生落地 以数字孪生助力智慧城市建设
  14. 如何自制条形码扫描器
  15. 硬盘SMART监控工具Scrutiny
  16. 神舟笔记本怎么进入bios?神舟笔记本bios设置U盘启动教程
  17. 两个通宵熬出来的互联网大厂最新面试题收集整理1000道(三-Memcached),欢迎点赞收藏!!!
  18. 河南省第二类医疗器械首次注册
  19. php实现邮箱激活功能
  20. fatal: 无法访问 ‘https://gitlab.com/libeigen/eigen.git/‘:Failed to connect to gitlab.com port 443: 没有到主机

热门文章

  1. Borg Maze POJ - 3026 (BFS + 最小生成树)
  2. 【 VS 插件开发 】三、Vs插件简单功能的实现
  3. JSP的优势与劣势浅析
  4. scp实现mac与linux服务器之间文件传输
  5. nginx添加nginx_mod_h264_streaming-2.2.7模块编译报错
  6. 求助帖--C++中单引号' '内多个字符是什么意思
  7. 获取PowerShell某个对象的所有命令
  8. [转载] python3 字符串比较函数_python3 字符串操作相关函数
  9. [转载] Python-科赫雪花(科克曲线)
  10. 判断字符串中是否包含指定字符的N种方法对比