pysx0503
作者pysx0503联盟成员·2020-04-17 21:52
系统工程师·第十区。散人

GoldenGate 部署 手册

字数 15006阅读 708评论 0赞 4

南大通用数据技术有限公司 - 1 -
GoldenGate 部署手册
GoldenGate 部署 手册, 南大通用数据技术股份有限公司
GBase 版权所有©2004-2017,保留所有权利。
版权声明
本文档所涉及的软件著作权、版权和知识产权已依法进行了相关注册、登记,由南大通用数
据技术股份有限公司合法拥有,受《中华人民共和国著作权法》、《计算机软件保护条例》、
《知识产权保护条例》和相关国际版权条约、法律、法规以及其它知识产权法律和条约的保
护。未经授权许可,不得非法使用。
免责声明
本文档包含的南大通用公司的版权信息由南大通用公司合法拥有,受法律的保护,南大通用
公司对本文档可能涉及到的非南大通用公司的信息不承担任何责任。在法律允许的范围内,
您可以查阅,并仅能够在《中华人民共和国著作权法》规定的合法范围内复制和打印本文档。
任何单位和个人未经南大通用公司书面授权许可,不得使用、修改、再发布本文档的任何部
分和内容,否则将视为侵权,南大通用公司具有依法追究其责任的权利。
本文档中包含的信息如有更新,恕不另行通知。您对本文档的任何问题,可直接向南大通用
数据技术股份有限公司告知或查询。
未经本公司明确授予的任何权利均予保留。
通讯方式
南大通用数据技术股份有限公司
天津华苑产业区海泰发展六道 6 号海泰绿色产业基地 J 座(300384)
电话:400-013-9696 邮箱:info@gbase.cn
商标声明
是南大通用数据技术股份有限公司向中华人民共和国国家商标局申请注册的注
册商标,注册商标专用权由南大通用公司合法拥有,受法律保护。未经南大通用公司书面许
可,任何单位及个人不得以任何方式或理由对该商标的任何部分进行使用、复制、修改、传
播、抄录或与其它产品捆绑使用销售。凡侵犯南大通用公司商标权的,南大通用公司将依法
追究其法律责任。
GoldenGate 部署手册
南大通用数据技术股份有限公司 I
目 录
1 前言 ......................................................... 1
2 Goldengate 发送端 ............................................. 1
2.1 安装软件包 ........................................... 1
2.2 Oracle 配置 ........................................... 1
2.2.1 开启归档日志 ...................................... 1
2.2.2 开启附加日志 ...................................... 2
2.2.3 开启强制日志模式 .................................. 2
2.2.4 创建表空间与用户 .................................. 2
2.2.5 为用户赋权........................................ 3
2.3 Goldengate 配置 ....................................... 3
3 Goldengate 接收端 ............................................. 5
3.1 安装软件包 ........................................... 5
3.2 Kafka ................................................ 5
3.3 Goldengate 安装 ....................................... 6
3.4 JDK 配置 .............................................. 6
3.5 Goldengate 配置 ....................................... 6
4 启动 ........................................................ 10
4.1 发送端 .............................................. 10
4.2 接收端 .............................................. 10
5 异常问题处理 ................................................ 11
5.1 Goldengate 接收端的 replicat 启动异常 1 ................ 11
5.1.1 现象 ............................................ 11
5.1.2 解决办法 ........................................ 11
5.2 Goldengate 接收端的 replicat 启动异常 2 ................ 12
5.2.1 现象 ............................................ 12
5.2.2 解决办法 ........................................ 12
5.3 复制失败 ............................................ 13
5.3.1 现象 ............................................ 13
5.3.2 解决办法 ........................................ 13
5.4 ggsci 启动失败 ....................................... 13
5.4.1 现象 ............................................ 13
5.4.2 解决办法 ........................................ 14
GoldenGate 部署手册
南大通用数据技术股份有限公司 1
1 1 前言
本文档描述 Goldengate_Kafka 同步方案中,Goldengate 的部署。
Goldengate 版本
发送端:Oracle GoldenGate 12.2.0.1.1 release
接收端:OGG_BigData_12.2.0.1.1
OS:RedHat 6.2
Oracle:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

  • 64bit Production
    JDK:jdk-7u80
  • 2 e Goldengate 发送 端
    2.1 安装软件包
    fbo_ggs_Linux_x64_shiphome.zip
    在图形界面运行: fbo_ggs_Linux_x64_shiphome/Disk1/runInstaller
    配置 oracle 和 goldengate 环境变量,添加到~/.bash_profile
    export ogg_send=/home/oracle/product/goldengate
    ORACLE_HOME=/opt/oracle/product/OraHome
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    2.2 e Oracle 配置
    2.2.1 开启归档日志
    GoldenGate是基于oracle日志变化的捕获,所以为了完整的捕获到oracle
    数据库的变化,有必要将归档模式开启。
    用 oracle 用户建立归档日志文件夹,以下用 /arch 为例
    mkdir /arch
  • 南大通用数据技术股份有限公司
    chown oracle:oracle /arch
    SQL> alter system set log_archive_dest_1='location=/arch'
    scope=both;
    SQL> shutdown immediate
    SQL> startup mount
    SQL> alter database archivelog;
    SQL> alter database open;
    SQL> archive log list;
    2.2.2 开启附加日志
    SQL> alter database add supplemental log data;
    SQL> alter database add supplemental log data (ALL) columns;
    SQL> alter system switch logfile;
    SQL> select supplemental_log_data_min from v$database;
    2.2.3 开启强制日志模式
    SQL> alter database force logging;
    SQL> SELECT FORCE_LOGGING FROM V$DATABASE;
    2.2.4 创建表空间与用户
    SQL> create tablespace data_goldengate datafile
    '/home/oracle/goldengate_space' size 440m autoextend on;
    SQL> create temporary tablespace temp TEMPFILE 'temp01.dbf' SIZE
    500m AUTOEXTEND ON;
    SQL> create user ogg identified by ogg default tablespace
    data_goldengate temporary tablespace temp;
    GoldenGate 部署手册
    南大通用数据技术股份有限公司 3
    2.2.5 为用户赋权
    SQL> grant CONNECT,RESOURCE to ogg;
    SQL> grant CREATE SESSION,ALTER SESSION to ogg;
    SQL> grant SELECT ANY DICTIONARY,SELECT ANY TABLE to ogg;
    SQL> grant CREATE TABLE,ALTER ANY TABLE to ogg;
    SQL> grant unlimited tablespace to ogg;
    2.3 e Goldengate 配置
    连接 oracle,创建要同步的表
    [oracle11g@localhost ~]$ sqlplus ogg/ogg
    SQL> create table gtest(a int, b int, primary key(a));
    进入 goldengate 控制台
    [root@localhost goldengate]# $ogg_send/ggsci
    Oracle GoldenGate Command Interpreter for Oracle
    Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140727.2135.1_FBO
    Linux, x64, 64bit (optimized), Oracle 11g on Aug 7 2014 09:14:25
    Operating system character set identified as UTF-8.
    Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights
    reserved.
    GGSCI (localhost.localdomain) 1>
    创建子目录
    GGSCI > create subdirs
    Creating subdirectories under current directory
    /home/oracle/product/goldengate
    Parameter files
  • 南大通用数据技术股份有限公司
    /home/oracle/product/goldengate/dirprm: already exists
    Report files
    /home/oracle/product/goldengate/dirrpt: already exists
    Checkpoint files
    /home/oracle/product/goldengate/dirchk: already exists
    Process status files
    /home/oracle/product/goldengate/dirpcs: already exists
    SQL script files
    /home/oracle/product/goldengate/dirsql: already exists
    Database definitions files
    /home/oracle/product/goldengate/dirdef: already exists
    Extract data files
    /home/oracle/product/goldengate/dirdat: already exists
    Temporary files
    /home/oracle/product/goldengate/dirtmp: already exists
    Credential store files
    /home/oracle/product/goldengate/dircrd: already exists
    Masterkey wallet files
    /home/oracle/product/goldengate/dirwlt: already exists
    Dump files
    /home/oracle/product/goldengate/dirdmp: already exists
    创建 extract extkafka
    GGSCI> add extract extkafka, tranlog, begin now
    GGSCI> edit params extkafka
    extract extkafka
    userid ogg, password ogg (oracle 实例的用户名和密码)
    rmthost 192.168.141.129, mgrport 7810 (goldengate 接收端的 IP 和端
    口)
    rmttrail /usr/local/ogg/dirdat/oa (goldengate 接收端的数据文件路
    径)
    table ogg.gtest; (定义 goldengate 输出端表名称)
    创建 mgr 和 extract extkafka
    GGSCI> edit param mgr
    GoldenGate 部署手册
    南大通用数据技术股份有限公司 5
    PORT 7809
    GSSCI> ADD EXTTRAIL /usr/local/ogg/dirdat/oa, EXTRACT extkafka (此
    处填写 goldengate 接收端的数据文件路径)
    创建 def2ka
    GGSCI> edit params def2ka
    defsfile /home/oracle/product/goldengate/dirdef/to_kafka.def (此
    处填写$ogg_send 路径)
    userid ogg,password ogg
    table ogg.gtest;
    生成表定义文件 to_kafka.def,并拷贝到 goldengate 接收端的 dirdef 下
    $ogg_send/defgen paramfile $ogg_send/dirprm/def2ka.prm
    scp $ogg_send/dirdef/to_kafka.def
    root@192.168.141.129:/usr/local/ogg/dirdef
  • 3 e Goldengate 接收端
    3.1 安装软件包
    122011_ggs_Adapters_Linux_x64.zip
    jdk-7u80-linux-x64.rpm
    kafka_2.11-0.10.1.0.tgz
    3.2 K Ka af f ka
    解压 kafka_2.11-0.10.1.0.tgz
    配置 kafka 路径,添加到~/.bash_profile
    export kafka_home=/usr/local/kafka
  • 南大通用数据技术股份有限公司
    3.3 e Goldengate 安装
    解 压 122011_ggs_Adapters_Linux_x64.zip , 将 其 中 的
    ggs_Adapters_Linux_x64.tar 再次解压并放到目标目录下
    配置 goldengate 路径,添加到~/.bash_profile
    export ogg_recv=/usr/local/ogg
    3.4 J JK DK 配置
    安装 java1.7.0
    java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64.rpm
    java-1.7.0-openjdk-devel-1.7.0.65-2.5.1.2.el6_5.x86_64.rpm
    jdk-7u80-linux-x64.rpm
    需要对原有 bin 中 java 做替换(如果没有安装 java-1.7.0)
    cd /usr/bin/
    rm java
    ln -s /etc/alternatives/java java
    添加配置
    echo 'pathmunge /usr/java/jdk1.7.0_80/bin' > /etc/profile.d/jdk.sh
    [root@v178 software]# vim ~/.bash_profile
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/java/jdk1.7.0_80/jr
    e/lib/amd64/libjsig.so:/usr/java/jdk1.7.0_80/jre/lib/amd64/server/li
    bjvm.so:/usr/java/jdk1.7.0_80/jre/lib/amd64/server:/usr/java/jdk1.7.
    0_80/jre/lib/amd64
    export JAVA_HOME=/usr/java/jdk1.7.0_80
    3.5 e Goldengate 配置
    进入 goldengate 控制台
    GoldenGate 部署手册
    南大通用数据技术股份有限公司 7
    [root@v178 ogg]# $ogg_recv/ggsci
    Oracle GoldenGate Command Interpreter
    Version 12.2.0.1.160419
    OGGCORE_12.2.0.1.0OGGBP_PLATFORMS_160430.1401
    Linux, x64, 64bit (optimized), Generic on Apr 30 2016 16:21:34
    Operating system character set identified as UTF-8.
    Copyright (C) 1995, 2016, Oracle and/or its affiliates. All rights
    reserved.
    GGSCI (v178) 1>
    创建子目录
    GGSCI (v178) 1> create subdirs
    Creating subdirectories under current directory /usr/local/ogg
    Parameter files /usr/local/ogg/dirprm: created
    Report files /usr/local/ogg/dirrpt: created
    Checkpoint files /usr/local/ogg/dirchk: created
    Process status files /usr/local/ogg/dirpcs: created
    SQL script files /usr/local/ogg/dirsql: created
    Database definitions files /usr/local/ogg/dirdef: created
    Extract data files /usr/local/ogg/dirdat: created
    Temporary files /usr/local/ogg/dirtmp: created
    Credential store files /usr/local/ogg/dircrd: created
    Masterkey wallet files /usr/local/ogg/dirwlt: created
    Dump files /usr/local/ogg/dirdmp: created
    拷贝配置文件
    cd $ogg_recv/AdapterExamples/big-data/kafka
    cp * $ogg_recv/dirprm/
    配置 kafka.props
    vim $ogg_recv/dirprm/kafka.props
  • 南大通用数据技术股份有限公司
    gg.handlerlist = kafkahandler
    gg.handler.kafkahandler.type = kafka
    gg.handler.kafkahandler.KafkaProducerConfigFile =
    custom_kafka_producer.properties
    gg.handler.kafkahandler.TopicName = oggtopic (Kafka topic 的名字)
    gg.handler.kafkahandler.format = json (用 JSON格式输出到 Kafka,
    还可以是 avro_op、XML 等格式)

    gg.handler.kafkahandler.SchemaTopicName = mySchemaTopic (向这个

    topic 发送数据库的信息,可以不设置)
    gg.handler.kafkahandler.BlockingSend = true
    gg.handler.kafkahandler.includeTokens = false
    gg.handler.kafkahandler.mode = tx
    gg.handler.kafkahandler.format.jsonDelimiter = ,
    gg.handler.kafkahandler.format.includePrimaryKeys = true (json
    格式中加入主键信息)

    gg.handler.kafkahandler.maxGroupSize = 100, 1Mb

    gg.handler.kafkahandler.minGroupSize = 50, 500Kb

    goldengate.userexit.utf8mode=true
    goldengate.userexit.timestamp = utc
    goldengate.userexit.writers = javawriter
    javawriter.stats.display = TRUE
    javawriter.stats.full = TRUE
    gg.log = log4j
    gg.log.level = INFO
    gg.report.time = 30sec
    gg.classpath=dirprm/:/usr/local/kafka/libs/* ( 此 处 应 该 填 写
    $kafka_home 下 的 libs 目
    录):/usr/java/jdk1.7.0_80/jre/lib:/usr/java/jdk1.7.0_80/jre/lib/rt.
    jar:/usr/local/ogg(此处填写$ogg_recv 路径)
    javawriter.bootoptions=-Djava.class.path=/usr/java/jdk1.7.0_80/j
    re/lib:/usr/java/jdk1.7.0_80/jre/lib/rt.jar:/usr/local/ogg:/usr/loca
    l/ogg/ggjava/ggjava.jar(此处填写$ogg_recv 的路径)
    配置 custom_kafka_producer.properties
    GoldenGate 部署手册
    南大通用数据技术股份有限公司 9
    vim $ogg_recv/dirprm/custom_kafka_producer.properties
    bootstrap.servers=192.168.6.178:9092,192.168.6.179:9092,192.168.
    6.180:9092 (Kafka Server 的 IP 和端口)
    acks=all
    compression.type=gzip
    reconnect.backoff.ms=1000
    value.serializer=org.apache.kafka.common.serialization.ByteArray
    Serializer
    key.serializer=org.apache.kafka.common.serialization.ByteArraySe
    rializer

    100KB per partition

    batch.size=102400
    linger.ms=10000
    max.request.size=10240000
    send.buffer.bytes=10240000
    配置 rkafka.prm
    vim $ogg_recv/dirprm/rkafka.prm
    REPLICAT rkafka (对应的 replicat 名字)
    -- Trail file for this example is located in "AdapterExamples/trail"
    directory
    -- Command to add REPLICAT
    -- add replicat rkafka, exttrail AdapterExamples/trail/tr
    sourcedefs /usr/local/ogg/dirdef/to_kafka.def(此处填写$ogg_recv
    的路径,to_kafka.def 是从 goldengate 生产端拷贝而来的表定义信息)
    TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka.props (此
    处填写对应的.props)
    REPORTCOUNT EVERY 1 MINUTES, RATE
    GROUPTRANSOPS 10000 (一次 kafka 消息可以合并的最大 json 事务数)
    MAP ogg.gtest, TARGET bdtest.gtest; (将 goldengate 输出端表名称
    和接收端表名称一一对应,可以配置多个对应关系,每个一行)
    MAP ogg.ts, TARGET bdtest.ts, COLMAP(USEDEFAULTS, target_colum
    n = @DATE('YYYY-MM-DD HH:MI:SS', 'YYYY-MM-DD HH:MI:SS', source_colum

  • 南大通用数据技术股份有限公司
    n)); (如果表中有 timestamp 和 date 字段,需要对相应的列做格式转换,
    target_column 是目标表的列名,source_column 是源表的列名。source_colum
    n 不能有下划线,target_column 要设为与 source_column相同)
    创建 mgr 和 replicat rkafka
    GGSCI> edit param mgr
    PORT 7810
    GGSCI> add replicat rkafka, exttrail dirdat/oa, begin now (dirdat/oa
    的名称应和 goldengate 输出端配置相一致)
    注意:如果有多个 topic,则需要配置多组.props 和.prm 文件,创建多个
    replicat
  • 4 启动
    需要 kafka 服务器已配置好并正常启动运行,创建好相关 topic
    4.1 发送端
    GGSCI> start mgr
    GGSCI> start extkafka
    4.2 接收端
    GGSCI> start mgr
    GGSCI> start rkafka
    GoldenGate 部署手册
    南大通用数据技术股份有限公司 11
  • 5 异常问题处理
    5.1 G Ge oldengate 接收端 的 t replicat 启动异常
  • 1
    5.1.1 现象
    GGSCI (ogg.gbase.cn) 11> start replicat rkafka
    Sending START request to MANAGER ...
    REPLICAT RKAFKA starting
    报错信息如下
    2016-11-13 22:39:29 INFO OGG-00987 Oracle GoldenGate Command
    Interpreter: GGSCI command (gbase): info all.
    2016-11-13 22:39:29 INFO OGG-15052 Oracle GoldenGate
    Delivery, rkafka.prm: Using Java class path:
    ggjava/ggjava.jar:ggjava/resources/lib/optional/log4j-1.2.17.jar:ggj
    ava/resources/lib/optional/slf4j-log4j12-1.7.6.jar.
    2016-11-13 22:39:29 ERROR OGG-15050 Oracle GoldenGate
    Delivery, rkafka.prm: Error loading Java VM runtime library: (2 No such
    file or directory).
    2016-11-13 22:39:29 ERROR OGG-01668 Oracle GoldenGate
    Delivery, rkafka.prm: PROCESS ABENDING.
    5.1.2 解决办法
    修改 JAVA_HOME,没有效果
    echo $JAVA_HOME
    /usr/java/jdk1.7.0_80 => /usr/java/jdk1.7.0_80/jre
  • 南大通用数据技术股份有限公司
    修改 LD_LIBRARY_PATH,没有效果。
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/java/jdk1.7.0_80/jre/lib/a
    md64/libjsig.so:/usr/java/jdk1.7.0_80/jre/lib/amd64/server/libjvm.so
    :/usr/java/jdk1.7.0_80/jre/lib/amd64/server:/usr/java/jdk1.7.0_80/jr
    e/lib/amd64
    修改.bash_profile 和 kafka.props 中的 classpath,没有效果。
    vi dirprm/kafka.props
    javawriter.bootoptions=-Xmx512m -Xms32m
    -Djava.class.path=/usr/local/ogg: /usr/local/ogg/ggjava/ggjava.jar
    按网上的说法,配置 LD_LIBRARY_PATH 即可,但通过 GGSCI 接口执行 start
    replicat rkafka 仍然失败(报同样的错误)。
    最后通过手工执行如下命令成功启动。
    $ogg_recv/replicat paramfile $ogg_recv/dirprm/rkafka.prm
    注:这是最早配置时出现的情况,按照目前的配置可以直接执行 start
    rkafka。如果遇到相同问题可以关闭再重启 mgr
    5.2 G Ge oldengate 接收端的 t replicat 启动异常
  • 2
    5.2.1 现象
    ERROR OGG-15051 Java or JNI
    exception:oracle.goldengate.util.GGException: Exception while
    trying to send producer record to blocking kafka producer:.
    5.2.2 解决办法
    打开 gg.log.level=DEBUG
    看到如下错误信息:
    GoldenGate 部署手册
    南大通用数据技术股份有限公司 13
    ERROR [main] (BlockingKafkaProducer.java:65) - Exception while
    trying to send producer record to blocking kafka producer:
    org.apache.kafka.common.errors.RecordTooLargeException: The message
    is 2110878 bytes when serialized which is larger than the maximum request
    size you have configured with the max.request.size configuration.
    消息大小超过了 max.request.size 的设置
    在 dirprm/custom_kafka_producer.properties 设置:
    max.request.size=10240000
    send.buffer.bytes=10240000
    待验证:据说能够支持的最大数据量是 2G-1
    5.3 复制失败
    5.3.1 现象
    2016-11-13 23:24:50 INFO OGG-06505 Oracle GoldenGate
    Delivery, rkafka.prm: MAP resolved (entry ogg.gtest): MAP
    "OGG"."GTEST", TARGET ogg.gtest.
    2016-11-13 23:24:50 ERROR OGG-00423 Oracle GoldenGate
    Delivery, rkafka.prm: Could not find definition for OGG.GTEST.
    2016-11-13 23:24:50 ERROR OGG-01668 Oracle GoldenGate
    Delivery, rkafka.prm: PROCESS ABENDING.
    5.3.2 解决办法
    需在 rkafka.prm 中增加
    sourcedefs /opt/ogg_adapter_bigdata/dirdef/to_kafka.def
    5.4 i ggsci 启动 失败
    5.4.1 现象
    ./ggsci: error while loading shared libraries: libnnz11.so: cannot
    open shared object file: No such file or directory
  • 南大通用数据技术股份有限公司
    5.4.2 解决办法
    需要配置环境变量
    ORACLE_HOME=/opt/oracle/product/OraHome
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    GoldenGate 部署手册
    南大通用数据技术股份有限公司 15

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广