GoldedGate 21c 值得注意的改进

梁铭图 2022-05-11 17:37:00
作者介绍

梁铭图,新炬网络首席架构师。具有十余年数据库运维、数据库设计、数据治理以及系统规划建设经验,拥有Oracle OCM和ACE Director、Togaf企业架构师(鉴定级)、IBM CATE等认证,曾获dbaplus年度MVP、华为云MVP等荣誉,并参与数据资产管理国家标准的编写工作。在数据库运维管理和架构设计、运维体系规划、数据资产管理方面有深入研究。

 

随着Oracle数据库版本的迭代,Oracle GoldenGate的版本也随之迭代。近期,oracle  已经发布了其最新的版本21c。在测试GoldenGate最新发布的21c过程中,遇到一些与以往版本相比变化比较大的地方,在此与各位分享。

 

安装方式

 

针对 Oracle 数据库的GoldenGate介质,现在只需要单一的安装配置,而不像以前的OGG版本,需要针对不同的DB版本(11g/12c/18c/19c)进行单独的安装;而且也不再需要安装额外的DB客户端。



通过响应文件也可以看到,已经无需指定数据库具体版本了,这一点相对以前来说有较大的改进。

 

连接数据库

 

软件安装完成后,尝试通过GGSCI连接数据库,发现报如下错误:



通过查询相关报错,发现其实跟上面所说的改变有关:



意思就是,OGG 21c自带了客户端lib文件,如果软件位于中间层(某些特殊架构下,OGG软件与Oracle软件不在同一台服务器上),可以不需要安装Oracle客户端。但是自此,通过GGSCI连接数据库就需要指定TNS,环境变量则需要配置TNS_ADMIN的具体路径。必须配置正确后,才可以正常连接数据库并启动进程。

 

测试的环境变量参考如下:

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/.local/bin:$HOME/binexport PATHumask 022export TMP=/tmpexport TMPDIR=$TMPexport ORACLE_SID=orclexport ORACLE_BASE=/opt/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:$ORACLE_HOME/OPatchexport NLS_LANG=american_america.ZHS16GBKexport TNS_ADMIN=$ORACLE_HOME/network/adminexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/libexport OGG=/oggexport PATH=$PATH:$ORACLE_HOME/bin:/oggexport LD_LIBRARY_PATH=/ogg:$LD_LIBRARY_PATHexport PATH

 

OGG for Bigdata的元数据输出

 

OGG for Bigdata从21.1开始,默认不再自动输出元数据,以投递到kafka集群的参数为例,以下参数已经废弃:

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
gg.handler.name.includePrimaryKeysgg.handler.name.includeTableNamegg.handler.name.includeOpTypegg.handler.name.includeOpTimestampgg.handler.name.includeCurrentTimestampgg.handler.name.includePositiongg.handler.name.iso8601Format

         

官方文档里有相应说明:



使用新的gg.handler.name.format.metaColumnsTemplate参数,具体说明如下:
 


我测试的 to kafka的复制进程参数参考如下:

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
gg.handlerlist = kafkahandlergg.handler.kafkahandler.type=kafkagg.handler.kafkahandler.KafkaProducerConfigFile=custom_kafka_producer.propertiesgg.handler.kafkahandler.topicMappingTemplate=testgg.handler.kafkahandler.SchemaTopicName=mytestgg.handler.kafkahandler.format=avro_opgg.handler.kafkahandler.format=delimitedtextgg.handler.kafkahandler.format.fieldDelimiter=|gg.handler.kafkahandler.format.pkUpdateHandling=updategg.handler.kafkahandler.BlockingSend =falsegg.handler.kafkahandler.includeTokens=falsegg.handler.kafkahandler.mode=opgg.handler.kafkahandler.format.nullValueRepresentation=gg.handler.kafkahandler.format.iso8601Format=falsegg.handler.kafkahandler.format.metaColumnsTemplate=${optype},${objectname}gg.handler.kafkahandler.format.insertOpKey=Igg.handler.kafkahandler.format.updateOpKey=Ugg.handler.kafkahandler.format.deleteOpKey=Dgg.handler.kafkahandler.format.truncateOpKey=Tgg.contentreplaceregex=(?<=^.{10}):gg.contentreplacestring=CDATA[ ]goldengate.userexit.timestamp=utc+8goldengate.userexit.writers=javawriterjavawriter.stats.display=TRUEjavawriter.stats.full=TRUEgg.log=log4jgg.log.level=INFOgg.report.time=30secgg.classpath=dirprm/:/data/kafka/libs/*javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar

 

测试消费时,可以正常显示源端数据DML操作的类型,以及具体的表名。

 

其他特性与改进

 

除了上面提过的针对Oracle版本不再需要针对不同的DB版本(11g/12c/18c/19c)进行单独的安装以外,还有Ogg 21c还有两个重要的新特性:

 

  • 除oracle数据库外,其它数据库(DB2 on z/OS, MysQL, PostgreSQL, SQL Server)增加了微服务版本的支持。微服务架构支持用户按照hub的形式部署GoldenGate,从而实现统一的数据同步管理。

 

  • 该版本支持在所有可投递的数据库上提供并行投递(parallel replicat)功能,并行投递从OGG 12.3开始提供,主要目的是提升目标数据库的写入性能,而且在保证事务完整性和数据一致性的情况下,简化了多线程的设置,12.3只支持Oracle数据库,而在21c中已经支持所有数据库。

 

此外,针对不同的数据库也有一些改进:

 

针对oracle 21c数据库:

 

  • 全面支持21c的捕获和投递

  • 支持原生 JSON 数据

  • 自动配置捕获表

  • 增强自动冲突检测和修复

  • 支持按PDB捕获

  • 按分区过滤

  • 其它安全、可靠性和性能的多项增强

 

其它数据库的一些新特性:

 

  • GG for MySQL Database:远程抽取和投递到mysql8,支持mysql8.0中基于binlog的DDL复制,对json类型的支持等。

  • GG for PostgreSQL :支持postgresql 13版本,以及json类型的支持。

  • GG for DB2 for iSeries: 支持远程捕获。


最新评论
访客 2024年04月08日

如果字段的最大可能长度超过255字节,那么长度值可能…

访客 2024年03月04日

只能说作者太用心了,优秀

访客 2024年02月23日

感谢详解

访客 2024年02月20日

一般干个7-8年(即30岁左右),能做到年入40w-50w;有…

访客 2023年08月20日

230721

活动预告