love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

利用GoldenGate实现DB2到PostgreSQL(MogDB)数据同步

近期由于某项目需要,需要测试一下GoldenGate是否支持DB2到MogDB(openGauss)的数据同步。我们知道GoldenGate是支持PostgreSQL的,经查支持9.2版本。而MogDB的内核也是基于PostgreSQL 9.2.4进化而来。下面直接开始测试步骤:

1、安装DB2 10.5 for Linux

2、创建dascrt

3、初始化实例

4、更新配置

5、启动数据库实例

6、创建测试数据库enmotech并配置归档

配置归档后做一次一次数据库全备份生效参数即可。

7、源端部署GoldenGate(软件安装步骤略,解压即可)

 

8、DB2端创建测试表并插入测试数据

 

9、启动源端抽取进程和投递进程

源端DB2端也需要进行odbc相关编译和配置,步骤省略,参考下面目标端的配置步骤。

这里为了进行验证,我在目标端分别部署了PostgreSQL 9.2和MogDB2.0

如下是目标端端的相关配置:

1、首先配置ODBC

最后修改用户.bash_profile增加如下环境变量:

需要注意的是,这里需要先下载unixODBC-2.3.7pre.tar.gz然后进行编译,步骤略(Opengauss2.0和MogDB2.0 不支持太老的odbc版本)。

odbc配置成功之后,可以通过如下方式来进行验证是否正常;如果提示说明配置正常。

 

2、部署目标端goldengate(对于PostgreSQL9.2版本,只能用ogg 11.2版本,其他版本不支持)

可见对PostgreSQL 9.2.24版本支持良好,数据正常同步。 由于MogDB基于基于openGauss 内核,而openGauss内核是基于PostgreSQL 9.2.4 演进而来。

对于DB2到PostgreSQL的数据同步,可以参考文档:
How To Replicate Data from Oracle to Postgres Using GoldenGate (Doc ID 1544137.1)

那么Goldengate软件能否支持openGauss或者MogDB2.0呢?经过测试发现,暂时不支持,数据复制时会报如下:

 

在进行相关测试的过程中,还遇到了如下几个方面问题:

1)其他问题

上述错误是指配def文件中timezone有异常;虽然我在os层面将目标端和源端的timezone都调整了一致,发现仍然报错。 这里通过在def配置文件中将Timezone 一行记录删除即可避免该错误。

参考如下mos文档:
OGG v11.2.1 Java Adapter Abend: OGG-00303 Expecting File, Table, Or Record Definition: TimeZone (Doc ID 2040347.1)

 

2) goldengate由高到低数据同步,trail文件格式问题

由于这里GoldenGate同步是从高到低版本进行复制,因此需要加入相关参数。 在源端的extract 进程和pump进程参数文件中加入如下参数:

最后简单总结一下:

1、GoldenGate 对于PostgreSQL 很早就已经支持了,但是对于PostgreSQL 9.2版本,最低支持replicate复制的版本是GoldenGate 11.2.1.0.2;
这是对于目标端而言,如果要进行PostgreSQL数据抽取,那么需要用GoldenGate 12.1版本。

2、GoldenGate支持DB2的多个版本的数据抓取和同步。

3、GoldenGate 赞不支持MogDB或者openGauss进行数据异构同步。

 

 


Leave a Reply

You must be logged in to post a comment.