OGG安裝部署
文章目录
- OGG安裝部署
- 1、环境准备
- 2、下载
- 3、安裝部署
- 3.1 源端
- 3.1.1、解压安装
- 3.1.2、 配置OGG环境变量
- 3.2 目标端
- 3.2.1、解压
- 4、oracle打开归档模式
- 4.1、 Oracle打开日志相关
- 4.2、 oracle创建复制用户
- 5、OGG初始化
- 5.1、Oracle创建测试表
- 5.2、OGG源端配置
- 5.2.1、配置OGG的全局变量
- 5.2.2、 配置管理器mgr
- 5.2.3、 添加复制表
- 5.2.4、 配置extract进程
- 5.2.5、 配置pump进程
- 5.3、OGG远端配置
- 5.3.1、开启kafka服务
- 5.3.2、配置管理器mgr
- 5.3.3、配置checkpoint
- 5.3.4、配置replicate进程
- 5.3.5、配置kafka
- 5.3.6、添加trail文件到replicate进程
- 6、测试
- 6.1 启动所有进程
- 6.2 异常解决
- 参考文献
1、环境准备
性质 | 版本 | 系统 |
源端 | Oracle GoldenGate 19.1.0.0.4 for Oracle on Linux x86-64 | CentOS Linux release 7.4.1708 (Core) |
目标端 | Oracle GoldenGate for Big Data 19.1.0.0.13 on Linux x86-64 | CentOS Linux release 7.4.1708 (Core) |
数据库 | 12.2.0.1.0 | CentOS 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 10月 18 2019 fbo_ggs_Linux_x64_shiphome
-rw-r--r-- 1 oracle oinstall 1413 5月 29 2019 OGG-19.1.0.0-README.txt
-rw-r--r-- 1 oracle oinstall 332523 10月 21 2019 OGG_WinUnix_Rel_Notes_19.1.0.0.4.pdf
-rw-r--r-- 1 oracle oinstall 556240981 7月 20 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 10月 18 2019 install
drwxrwxr-x 2 oracle oinstall 25 7月 20 13:38 response
-rwxr-xr-x 1 oracle oinstall 918 10月 18 2019 runInstaller
drwxr-xr-x 12 oracle oinstall 4096 10月 18 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
参考文献