oracle goldgate 安装配置-单机版(ogg)
准备
OGG 配置分两部分,源端与目标端两部分,安装文件不一致,需注意!
环境: centos7 2台
1. 源端安装oracle 这里不做配置,请查看 Oracle单机版安装部署
2. 目标端安装kafka
源端
1. 开启oracle 归档日志 ,使用dba登录
查询是否是归档模式
LOG_MODE= ARCHIVELOG | NOARCHIVELOG NOARCHIVELOG 代表非归档模式 ARCHIVELOG 代表归档模式
启动归档模式
更改数据库模式要先关闭数据,进入mount
shutdown immediate; --关闭oracle
startup mount; --启动到mount状态
alter database archivelog; --修改至归档模式
alter database open; --打开oracle
archive log list; --查看归档日志
--查询oracle回收站状态 回收站会影响同步功能
SELECT Value FROM V$parameter WHERE Name = 'recyclebin';
--关闭回收站
alter session set recyclebin=off;
--查询NLS_LANG 并配置到linux 解决中文同步乱码
select userenv( 'language') from dual;
export NLS_LANG="AMERICAN_AMERICA.WE8MSWIN1252"
2. 创建账号信息
create tablespace tbs_ogg datafile '/home/oracle/app/oradata/tbs_ogg.dbf' size 500M autoextend on; --建表空间
--建立用户并相关权限
create user ogg identified by 123456 default tablespace tbs_ogg;
GRANT create table to ogg;
GRANT CONNECT TO ogg;
GRANT ALTER ANY TABLE TO ogg;
GRANT ALTER SESSION TO ogg;
GRANT CREATE SESSION TO ogg;
GRANT FLASHBACK ANY TABLE TO ogg;
GRANT SELECT ANY DICTIONARY TO ogg;
GRANT SELECT ANY TABLE TO ogg;
GRANT RESOURCE TO ogg;
GRANT DELETE ANY TABLE TO ogg;
GRANT INSERT ANY TABLE TO ogg;
GRANT UPDATE ANY TABLE TO ogg;
GRANT RESTRICTED SESSION TO ogg;
--登录ogg用户自行建立测试表
create table xxxxxx
3. 下载源端OGG
下载地址: https://www.oracle.com/middleware/technologies/goldengate-downloads.html#license-lightbox
源端下载 xxxxx for Oracle on Linux x86-64
注意了,下载的版本要根据源端数据库以及操作系统来选择
解压 unzip 191004_fbo_ggs_Linux_x64_shiphome.zip
解压后文件如下:
4. 安装ogg
关闭防火墙或者自行配置好出入端口
# 创建安装目录
mkdir ogg # /usr/local/ogg
# 授权给用户:oracle (这里是因为oracle服务端的安装的时候 ,配置、环境变量等都是在oracle这个用户下完成,具体用户看自己的oracle在那个用户下安装的)
# 因为ogg的采集源是oracle 所以需要配置一些oracle相关的东西,所以需要授权给oracle的安装用户
chown -R oracle.oinstall ogg
chown -R oracle.oinstall fbo_ggs_Linux_x64_shiphome
# 切换用户 切换至自己的oracle安装用户
su oracle
# 授权
chmod 755 -R fbo_ggs_Linux_x64_shiphome
# 备份一下文件,一面修改错了 (非必需)
编辑 oggcore.rsp文件
# 配置源端oracle
INSTALL_OPTION=ORA11g
# 安装目录
SOFTWARE_LOCATION=/usr/local/ogg
START_MANAGER=true
# ogg manager进程端口
MANAGER_PORT=7809
# oracle 的地址 配置自己的oracle地址
DATABASE_LOCATION=/home/oracle/product/11.2.0/db_home1
# oracle inventory目录 配置自己的文件目录
INVENTORY_LOCATION=/home/oracle/inventory
# 用户组
UNIX_GROUP_NAME=oinstall
配置环境变量
vi .bash_profile
export PATH=/usr/local/ogg: P A T H e x p o r t L D L I B R A R Y P A T H = PATH export LD_LIBRARY_PATH= PATHexportLDLIBRARYPATH=ORACLE_HOME/lib
wq! 保存
静默安装
./runInstaller -silent -responseFile /usr/local/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp
5. 配置
安装完毕后输入ggsci 进入命令行
FAQ: 如果提示 command not found 命令找不到问题
尝试输入ldd ggsci 查看是否依赖有问题
登录之前创建的数据库用户
dblogin userid ogg
创建ogg所需目录 create subdirs
dirprm 存放配置文件
dirrpt 日志目录
dirdef 异构结构所需的定义文件
dirdat 存放trail文件
配置mgr进程
# 这里配置manager管理进程
edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7920
AUTOSTART er *
AUTORESTART er *, retries 5, waitminutes 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
PORT 7809 --mgr的默认监听端口
DYNAMICPORTLIST 7810-7909 --DYNAMICPORTLIST 动态端口集,当上述指定的端口不可用时在这个区间选择1个,最大范围256
AUTORESTART EXTRACT ,RETRIES 5,WAITMINUTES 3 --表示自动重启所有EXTRACT进程,每次间隔3分钟 最多可以执行5次
PURGEOLDEXTRACTS ./dirdat/,usecheckpoints, minkeepdays 3 --trail文件定期清理 清理超过3天的trail文件
–配置manager进程启动后 自动启动那些进程
–AUTOSTART ER*
– 下面都是自动预警设置
LAGREPORT 1 --mgr进程每隔1小时检测延时情况
LAGINFO 30 --超过了30分钟就把延迟作为信息记录到错误日志中
LAGCRITICAL 45 --延迟超过了45分钟,则把它作为警告写到错误日志中
配置采集进程
edit params ext1
extract ext1 --进程名 可根据需要修改
dynamicresolution
userid ogg,password 123456 --oracle 用户密码
exttrail /usr/local/ogg/dirdat/to --trail文件存放地址
SETENV (ORACLE_SID = "orcl") --环境
SETENV (NLS_LANG = "AMERICAN_AMERICA.WE8MSWIN1252") --环境
--配置采集表
table ogg.test_user;
table ogg.test_user1;
wq! 保存配置 ,添加一个ext1的进程
GGSCI (localhost.localdomain as ogg@orcl) 9> add extract ext1,tranlog,begin now
EXTRACT added.
GGSCI (localhost.localdomain as ogg@orcl) 10> add exttrail /usr/local/ogg/dirdat/to,extract ext1
EXTRACT added.
配置发送进程
GGSCI (localhost.localdomain as oggadmin@orcl) 11> edit params push1
extract push1 --进程名称
passthru --禁止ogg与oracle交互
dynamicresolution --动态解析
userid ogg,password 123456 --oracle用户密码
rmthost 192.168.240.132,mgrport 7809 ----目标服务器ip
rmttrail /usr/local/ogg/dirdat/fr ----目标服务器的trail所在目录
table ogg.test_user;
# 添加一个发送进程 exttrailsource : 表示trail 源端地址
GGSCI (localhost.localdomain as oggadmin@orcl) 12> add extract push1,exttrailsource /usr/local/ogg/dirdat/to
EXTRACT added.
#添加目标端trail地址与push1进程绑定
GGSCI (localhost.localdomain as oggadmin@orcl) 13> add rmttrail /usr/local/ogg/dirdat/fr,extract push1
RMTTRAIL added.
配置define文件(oracle to kakfa属于异构环境,需要对应的中间文件来定义结构)
GGSCI (localhost.localdomain as ogg@orcl) 11> edit param test_user
defsfile /home/ogg/install/dirdef/oggadmin.test_user --define文件存放目录
userid ogg,password 123456 --oracle用户密码
table ogg.test_user;
#执行生成文件
./defgen paramfile dirprm/test_user.prm
至此,源端配置完成
目标端
1. 下载OGG
下载地址: https://www.oracle.com/middleware/technologies/goldengate-downloads.html#license-lightbox
注意了! 因为目标端为kafka 目标端下载 Oracle GoldenGate for Big Data xxxxxx
-
解压
创建安装目录 /usr/local/ogg
mkdir ogg
解压
tar xf OGG_BigData_Linux_x64_12.3.2.1.1.tar -C /usr/local/ogg
配置环境变量
vi /etc/profile
#安装目录
export OGG_HOME=/usr/local/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 /etc/profile
-
配置
4.1 添加一个manager进程
GGSCI (localhost.localdomain) 2> edit params mgr
PORT 7809 DYNAMICPORTLIST 7810-7909 AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3 PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3 # 这里配置介绍不在重复了,可查看源端配置介绍
4.2 配置检查点checkpoint
GGSCI (kafka) 2> edit param ./GLOBALS
CHECKPOINTTABLE test_ogg.checkpoint
4.3 添加replicat进程GGSCI (kafka) 3> edit param rekafka
REPLICAT receive1 --relicate进程名字
sourcedefs /usr/local/ogg/dirdef/ogg.test_ogg --define的映射文件
TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka.props --TARGETDB LIBFILE即定义kafka一些库文件以及配置文件位置
REPORTCOUNT EVERY 1 MINUTES, RATE --复制任务的报告生成频率
GROUPTRANSOPS 10000 --以事务传输时,事务合并的单位,减少IO操作
MAP ogg.test_user, TARGET ogg.test_user; --源端与目标端的映射关系
# 添加replicat 设置trail文件与检查点
GGSCI (localhost.localdomain) 26> add replicat receive1 exttrail /usr/local/dirdat/fr,checkpointtable test_user.checkpoint
REPLICAT added.
4.4 配置kafka文件
[root@localhost dirprm]# pwd
/usr/local/software/ogg/dirprm
[root@localhost dirprm]# vi kafka.props
gg.handlerlist=kafkahandler
gg.handler.kafkahandler.type=kafka
gg.handler.kafkahandler.KafkaProducerConfigFile=kafka_producer.properties
gg.handler.kafkahandler.topicMappingTemplate=test_user #kafka topic名称,OGG12有修改
gg.handler.kafkahandler.format=json
gg.handler.kafkahandler.mode=op
# 路径设置 根据自己的安装情况设置
gg.classpath=dirprm/:/usr/local/software/kafka/kafka_2.11-2.2.0/libs/*:/usr/local/software/ogg/:/usr/local/software/ogg/lib/*
[root@localhost dirprm]# vi kafka_producer
#kafka地址
bootstrap.servers=192.168.240.132:9092
#ack 设置
acks=1
compression.type=gzip
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
至此目标端ogg配置完毕
测试
1. 启动
启动顺序: 源端mgr ---> 目标端mgr ---> 源端extract ---> 源端pump ---> 目标replicate
注意了!查看进程是否启动成功,不能以控制台输出为准,可根据info all命令查看进程状态 或者 dirrpt/* 下查看日志