OGG安裝部署(oracle=>kafka)

21 篇文章 3 订阅
3 篇文章 0 订阅

OGG安裝部署

1、环境准备

性质版本系统
源端Oracle GoldenGate 19.1.0.0.4 for Oracle on Linux x86-64CentOS Linux release 7.4.1708 (Core)
目标端Oracle GoldenGate for Big Data 19.1.0.0.13 on Linux x86-64CentOS Linux release 7.4.1708 (Core)
数据库12.2.0.1.0CentOS Linux release 7.4.1708 (Core)

2、下载

可在这里旧版本查询下载

3、安裝部署

注意:源端是安装了oracle的机器,oracle环境变量之前都配置好了

3.1 源端

3.1.1、解压安装
mkdir -p /data/oracle/app/ogg
chown -R oracle:oinstall /data/oracle/app/ogg

[oracle@henghe26 tmp] unzip  Oracle GoldenGate 19.1.0.0.4 for Oracle on Linux x86-64.zip 

[oracle@henghe26 tmp]$ ll
总用量 543540
drwxr-xr-x 3 oracle oinstall        19 1018 2019 fbo_ggs_Linux_x64_shiphome
-rw-r--r-- 1 oracle oinstall      1413 529 2019 OGG-19.1.0.0-README.txt
-rw-r--r-- 1 oracle oinstall    332523 1021 2019 OGG_WinUnix_Rel_Notes_19.1.0.0.4.pdf
-rw-r--r-- 1 oracle oinstall 556240981 720 13:30 Oracle GoldenGate 19.1.0.0.4 for Oracle on Linux x86-64.zip

[oracle@henghe26 tmp]$ cd fbo_ggs_Linux_x64_shiphome/Disk1/
[oracle@henghe26 Disk1]$ ll
总用量 8
drwxr-xr-x  4 oracle oinstall  187 1018 2019 install
drwxrwxr-x  2 oracle oinstall   25 720 13:38 response
-rwxr-xr-x  1 oracle oinstall  918 1018 2019 runInstaller
drwxr-xr-x 12 oracle oinstall 4096 1018 2019 stage

[oracle@henghe26 Disk1]$ pwd
/opt/tmp/fbo_ggs_Linux_x64_shiphome/Disk1
[oracle@henghe26 Disk1]$ cat response/oggcore.rsp | grep -Ev "^#|^$"
oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v19_1_0
INSTALL_OPTION=ORA12c
SOFTWARE_LOCATION=/data/oracle/app/ogg
START_MANAGER=false
MANAGER_PORT=
DATABASE_LOCATION=
INVENTORY_LOCATION=
UNIX_GROUP_NAME=
[oracle@henghe26 Disk1]$


3.1.2、 配置OGG环境变量

配置oracle的环境变量文件/home/oracle/.bash_profile里配置,为了怕出问题,我把OGG_HOME等环境变量在/etc/profile配置了一份,不知道这是否是必须的。

vim /home/oracle/.bash_profile

.bash_profile

export ORACLE_BASE=/data/oracle/app/oracle
export ORACLE_SID=orcl
export ROACLE_PID=oral12
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_HOME=/data/oracle/app/oracle/product/12/db_1
export OGG_HOME=/data/oracle/app/ogg

export PATH=$OGG_HOME:$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$OGG_HOME:$ORACLE_HOME/lib:/usr/lib
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'

静默安装

#填写oggcore.rsp的绝对路径地址
./runInstaller -silent -responseFile /absolute/path

!!!至此,GoldenGate安装完成

查看依赖是否正常

ldd ggsci

3.2 目标端

3.2.1、解压
mkdir -p /data/oracle/app/ogg
unzip Oracle GoldenGate 19.1.0.0.13 for Big Dataon Linux x86-64.zip
tar xf OGG_BigData_Linux_x64_19.1.0.0.13.tar  -C /data/oracle/app/ogg

vim /home/oracle/.bash_profile

export JAVA_HOME=/opt/java
export PATH
export OGG_HOME=/data/oracle/app/ogg
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server:$JAVA_HOME/jre/lib/amd64/libjsig.so:$JAVA_HOME/jre/lib/amd64/server/libjvm.so:$OGG_HOME/lib
export PATH=$OGG_HOME:$PATH
source /home/oracle/.bash_profile

查看依赖是否正常

ldd ggsci

4、oracle打开归档模式

su - oracle
export ORACLE_SID=ods

执行下面的命令查看当前是否为归档模式

SQL> archive log list 
Database log mode	       No Archive Mode
Automatic archival	       Disabled
Archive destination	       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     12
Current log sequence	       14

若为Disabled,手动打开即可

conn / as sysdba (以DBA身份连接数据库) 
shutdown immediate (立即关闭数据库)
startup mount (启动实例并加载数据库,但不打开)
alter database archivelog; (更改数据库为归档模式)
alter database open; (打开数据库)
alter system archive log start; (启用自动归档)

再执行一下


SQL> archive log list
数据库日志模式            存档模式
自动存档             启用sql
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     1867
下一个存档日志序列   1869
当前日志序列           1869
SQL>

可以看到为Enabled,则成功打开归档模式。

4.1、 Oracle打开日志相关

OGG基于辅助日志等进行实时传输,故需要打开相关日志确保可获取事务内容,通过下面的命令查看该状态

select force_logging, supplemental_log_data_min from v$database;
FORCE_ SUPPLEMENTAL_LOG
------ ----------------
NO     NO

若为NO,则需要通过命令修改

alter database force logging;
alter database add supplemental log data;

再查看一下为YES即可

SQL> select force_logging, supplemental_log_data_min from v$database;

FORCE_ SUPPLEMENTAL_LOG
------ ----------------
YES    YES

4.2、 oracle创建复制用户

首先root用户建立相关文件夹,并赋予权限

mkdir -p /u01/app/oracle/oggdata/orcl
chown -R oracle:oinstall /u01/app/oracle/oggdata/orcl

然后执行下面sql

SQL> create tablespace oggtbs datafile '/u01/app/oracle/oggdata/orcl/oggtbs01.dbf' size 1000M autoextend on;

Tablespace created.

SQL>  create user ogg identified by ogg default tablespace oggtbs;

User created.

SQL> grant dba to ogg;

Grant succeeded.


5、OGG初始化

ggsci
create subdirs

ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.



GGSCI (ambari.master.com) 1> create subdirs

Creating subdirectories under current directory /root

Parameter files                /root/dirprm: created
Report files                   /root/dirrpt: created
Checkpoint files               /root/dirchk: created
Process status files           /root/dirpcs: created
SQL script files               /root/dirsql: created
Database definitions files     /root/dirdef: created
Extract data files             /root/dirdat: created
Temporary files                /root/dirtmp: created
Stdout files                   /root/dirout: created


GGSCI (ambari.master.com) 2> 


5.1、Oracle创建测试表

创建一个用户,在该用户下新建测试表,用户名、密码、表名均为 test_ogg。

create user test_ogg  identified by test_ogg default tablespace users;
grant dba to test_ogg;
conn test_ogg/test_ogg;
create table test_ogg(id int ,name varchar(20),primary key(id));

5.2、OGG源端配置

5.2.1、配置OGG的全局变量

先切换到oracle用户下

su oracle
cd /opt/ogg
ggsci
GGSCI (henghe26 as fund@ods) 1> dblogin userid ogg password ogg
Successfully logged into database.

GGSCI (henghe26 as fund@ods) 2> edit param ./globals


然后和用vim编辑一样添加

oggschema ogg
5.2.2、 配置管理器mgr
GGSCI (henghe26 as fund@ods) 3> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7909
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

说明:

PORT即mgr的默认监听端口;

DYNAMICPORTLIST动态端口列表,当指定的mgr端口不可用时,会在这个端口列表中选择一个,最大指定范围为256个;

AUTORESTART重启参数设置表示重启所有EXTRACT进程,最多5次,每次间隔3分钟;

PURGEOLDEXTRACTS即TRAIL文件的定期清理

5.2.3、 添加复制表
GGSCI (henghe26 as fund@ods) 5> add trandata fund.T_ODS_TRADE_STOCK

2022-07-25 15:11:44  INFO    OGG-15131  Logging of supplemental redo log data is already enabled for table FUND.T_ODS_TRADE_STOCK.

2022-07-25 15:11:44  INFO    OGG-15135  TRANDATA for instantiation CSN has been added on table FUND.T_ODS_TRADE_STOCK.

2022-07-25 15:11:44  INFO    OGG-10471  ***** Oracle Goldengate support information on table FUND.T_ODS_TRADE_STOCK *****
Oracle Goldengate support native capture on table FUND.T_ODS_TRADE_STOCK.
Oracle Goldengate marked following column as key columns on table FUND.T_ODS_TRADE_STOCK: SERIAL_NO.

GGSCI (henghe26 as fund@ods) 6> info trandata fund.T_ODS_TRADE_STOCK

2022-07-25 15:11:54  INFO    OGG-10471  ***** Oracle Goldengate support information on table FUND.T_ODS_TRADE_STOCK *****
Oracle Goldengate support native capture on table FUND.T_ODS_TRADE_STOCK.
Oracle Goldengate marked following column as key columns on table FUND.T_ODS_TRADE_STOCK: SERIAL_NO.

Logging of supplemental redo log data is enabled for table FUND.T_ODS_TRADE_STOCK.

All columns supplementally logged for table FUND.T_ODS_TRADE_STOCK.

Prepared CSN for table FUND.T_ODS_TRADE_STOCK: 9626140
GGSCI (henghe26 as fund@ods) 7>
5.2.4、 配置extract进程
GGSCI (henghe26 as fund@ods) 7> edit param extkafka



GGSCI (henghe26 as fund@ods) 8> view param extkafka

extract extkafka
GETUPDATEBEFORES
NOCOMPRESSDELETES
NOCOMPRESSUPDATES
dynamicresolution
SETENV (ORACLE_SID = "ods")
SETENV (NLS_LANG = "american_america.AL32UTF8")
userid fund,password fund
exttrail /data/oracle/app/ogg/dirdat/to
table fund.t_ods_trade_stock;

说明:

第一行指定extract进程名称;

dynamicresolution动态解析;

SETENV设置环境变量,这里分别设置了Oracle数据库以及字符集;

userid ggs,password ggs即OGG连接Oracle数据库的帐号密码,这里使用2.5中特意创建的复制帐号;

exttrail定义trail文件的保存位置以及文件名,注意这里文件名只能是2个字母,其余部分OGG会补齐;

table即复制表的表名,支持*通配,必须以;结尾

添加extract进程:

GGSCI ((henghe26 as fund@ods) 16> add extract extkafka,tranlog,begin now
EXTRACT added.

添加trail文件的定义与extract进程绑定:

add exttrail /data/oracle/app/ogg/dirdat/to,extract extkafka
5.2.5、 配置pump进程

pump进程本质上来说也是一个extract,只不过他的作用仅仅是把trail文件传递到目标端,配置过程和extract进程类似,只是逻辑上称之为pump进程

GGSCI (henghe26 as fund@ods) 9> edit param pukafka



GGSCI (henghe26 as fund@ods) 10> view param pukafka

extract pukafka
passthru
dynamicresolution
userid fund,password fundDB_1
rmthost master mgrport 7809
rmttrail /data/oracle/app/ogg/dirdat/to
table fund.t_ods_trade_stock;

说明:

第一行指定extract进程名称;

passthru即禁止OGG与Oracle交互,我们这里使用pump逻辑传输,故禁止即可;

dynamicresolution动态解析;

userid ogg,password ogg即OGG连接Oracle数据库的帐号密码rmthost和mgrhost即目标端(kafka)OGG的mgr服务的地址以及监听端口;

rmttrail即目标端trail文件存储位置以及名称。

分别将本地trail文件和目标端的trail文件绑定到extract进程:

GGSCI (henghe26 as fund@ods) 1> add extract pukafka,exttrailsource /data/oracle/app/ogg/dirdat/to
EXTRACT added.
GGSCI (henghe26 as fund@ods) 2> add rmttrail /data/oracle/app/ogg/dirdat/to,extract pukafka
RMTTRAIL added.

5.2.6、 配置define文件

Oracle与MySQL,Hadoop集群(HDFS,Hive,kafka等)等之间数据传输可以定义为异构数据类型的传输,故需要定义表之间的关系映射,在OGG命令行执行:

GGSCI (henghe26 as fund@ods) 11> edit param t_ods_trade_stock



GGSCI (henghe26 as fund@ods) 12> view param t_ods_trade_stock

defsfile /data/oracle/app/ogg/dirdef/t_ods_trade_stock
userid fund,password fund
table fund.t_ods_trade_stock;

在OGG主目录下执行(oracle用户):


[oracle@henghe26 ogg]$ ./defgen paramfile dirprm/t_ods_trade_stock.prm

***********************************************************************
        Oracle GoldenGate Table Definition Generator for Oracle
      Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054
   Linux, x64, 64bit (optimized), Oracle 12c on Oct 17 2019 13:20:56

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

                    Starting at 2022-07-25 15:26:10
***********************************************************************

Operating System Version:
Linux
Version #1 SMP Tue Aug 22 21:09:27 UTC 2017, Release 3.10.0-693.el7.x86_64
Node: henghe26
Machine: x86_64
                         soft limit   hard limit
Address Space Size   :    unlimited    unlimited
Heap Size            :    unlimited    unlimited
File Size            :    unlimited    unlimited
CPU Time             :    unlimited    unlimited

Process id: 63941

***********************************************************************
**            Running with the following parameters                  **
***********************************************************************
defsfile /data/oracle/app/ogg/dirdef/t_ods_trade_stock
userid fund,password ***
table fund.t_ods_trade_stock;
Retrieving definition for FUND.T_ODS_TRADE_STOCK.


Definitions generated for 1 table in /data/oracle/app/ogg/dirdef/t_ods_trade_stock.

[oracle@henghe26 ogg]$

将生成的/data/oracle/app/ogg/dirdef/t_ods_trade_stock发送的目标端ogg目录下的dirdef里:

scp -r /data/oracle/app/ogg/dirdef/t_ods_trade_stock root@henghe47:/data/oracle/app/ogg/dirdef/

5.3、OGG远端配置

5.3.1、开启kafka服务
cd /opt/kafka_2.11-1.1.0/
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties

5.3.2、配置管理器mgr
GGSCI (henghe47) 65> edit param mgr



GGSCI (henghe47) 66> view param mgr

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

5.3.3、配置checkpoint

checkpoint即复制可追溯的一个偏移量记录,在全局配置里添加checkpoint表即可。

edit  param  ./GLOBALS
CHECKPOINTTABLE t_ods_trade_stock.checkpoint

5.3.4、配置replicate进程
GGSCI (henghe47) 67> edit param rekafka

GGSCI (henghe47) 69> view param rekafka

REPLICAT rekafka
sourcedefs  /data/oracle/app/ogg/dirdef/t_ods_trade_stock
TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka.props
REPORTCOUNT EVERY 1 MINUTES, RATE
GROUPTRANSOPS 10000
MAP fund.t_ods_trade_stock, TARGET fund.t_ods_trade_stock;



GGSCI (henghe47) 70>

说明:

REPLICATE rekafka定义rep进程名称;

sourcedefs即在4.6中在源服务器上做的表映射文件;

TARGETDB LIBFILE即定义kafka一些适配性的库文件以及配置文件,配置文件位于OGG主目录下的dirprm/kafka.props;

REPORTCOUNT即复制任务的报告生成频率;

GROUPTRANSOPS为以事务传输时,事务合并的单位,减少IO操作;

MAP即源端与目标端的映射关系

5.3.5、配置kafka
vim $OGG_HOME/dirprm/kafka.props

gg.handlerlist=kafkahandler
gg.handler.kafkahandler.type=kafka
gg.handler.kafkahandler.format.includePrimaryKeys=true
gg.handler.kafkahandler.KafkaProducerConfigFile=custom_kafka_producer.properties
gg.handler.kafkahandler.topicMappingTemplate=T_ODS_TRADE_STOCK_TOPIC_MOCK
gg.handler.kafkahandler.format=json
gg.handler.kafkahandler.mode=op
gg.classpath=dirprm/:/data/libs/*:/data/oracle/app/ogg/:/data/oracle/app/ogg/lib/*
vim $OGG_HOME/dirprm/custom_kafka_producer.properties

bootstrap.servers=ycloud-kafka02.ycloud:30802
acks=1
compression.type=none
reconnect.backoff.ms=1000
value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
batch.size=102400
linger.ms=10000

5.3.6、添加trail文件到replicate进程
GGSCI (henghe47) add replicat rekafka exttrail /data/oracle/app/ogg/dirdat/to,checkpointtable t_ods_trade_stock.checkpoint

6、测试

6.1 启动所有进程

在源端和目标端的OGG命令行下使用start [进程名]的形式启动所有进程。
启动顺序按照源mgr——目标mgr——源extract——源pump——目标replicate来完成。
全部需要在ogg目录下执行ggsci目录进入ogg命令行。
源端依次是

start mgr
start extkafka
start pukafka

目标端

start mgr
start rekafka

可以通过info all 或者info [进程名] 查看状态,所有的进程都为RUNNING才算成功

源端

GGSCI (henghe26 as fund@ods) 13> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EXTKAFKA    00:00:00      00:00:10
EXTRACT     RUNNING     PUKAFKA     00:00:00      00:00:05


GGSCI (henghe26 as fund@ods) 14>

目标端

GGSCI (henghe47) 71> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    RUNNING     REKAFKA     00:00:00      00:00:08


GGSCI (henghe47) 72>

6.2 异常解决

如果有不是RUNNING可通过查看日志的方法检查解决问题,具体通过下面两种方法

vim ggser.log

或者ogg命令行,以rekafka进程为例

GGSCI (ambari.slave1.com) 2> view report rekafka

参考文献

博客1
博客2
OGG官网
OGG-Kafka

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值