数据ogg版本
源端 MySQL5.X ogg版本 123015_ggs_Linux_x64_MySQL_64bit
目标端版本kafka_2.11-1.1.0 ogg版本 OracleGoldenGate for Big Data Version 12.3.1.1.1
检查/etc/my.cnf文件是否存在,不存在则执行如下命令(Mysql5.7+):
# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
1、开启binlog
在/etc/my.cnf的[mysqld]下添加如下参数:
# 行级日志模式
binlog_format=row
# 日志保存目录
log-bin=mysql-bin
# 日志保存30天
expire_logs_days=30
server-id=2
重启:
Centos6:servicemysqld restart
Centos7: systemctlrestart mysqld
MySQL5.7:systemctlrestart mysql
注意:源端是安装了MySql的机器,MySql环境变量之前都配置好了
创建ogg用户:
# useradd -G mysql ogg
2、解压
先建立ogg目录:
mkdir -p /opt/ogg
unzip122022_ggs_Linux_x64_MySQL_64bit.zip
解压后得到一个tar包,再解压这个tar:
tar xfggs_Linux_x64_MySQL_64bit.tar -C /opt/ogg
chown -R ogg:mysql/opt/ogg
3、配置环境变量
配置ogg环境变量文件/home/ogg/.bash_profile里配置:
vim /home/ogg/.bash_profile
export GGS_HOME=/opt/ogg
export PATH=$GGS_HOME:$PATH
使之生效:
source/home/ogg/.bash_profile
测试一下ogg命令:
cd /opt/ogg
./ggsci
如果命令成功即可进行下一步,不成功请检查前面的步骤。
4、ogg初始化
在ogg目录下create subdirs,创建目录文件
create subdirs
5、mysql创建测试表
创建一个用户,在该用户下新建测试表,用户名、密码、表名均为 test_ogg:
use test;
create tabletest_ogg(
a varchar(100) primary key,
b varchar(100),
c integer
)type = innodb;
6、建立软连接
如果/tmp/mysql.sock不存在或者没有进行软连接可以输入以下命令:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
OGG登录到mysql数据库:
cd /opt/ogg
./ggsci
GGSCI(ambari.master.com) 1> dblogin sourcedb [email protected]:3306,userid root,password xxxx
7、配置管理器mgr
GGSCI(ambari.master.com) 3> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7909
AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLD EXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3
说明:PORT即mgr的默认监听端口;DYNAMICPORTLIST动态端口列表,当指定的mgr端口不可用时,会在这个端口列表中选择一个,最大指定范围为256个;AUTORESTART重启参数设置表示重启所有EXTRACT进程,最多5次,每次间隔3分钟;PURGEOLDEXTRACTS即TRAIL文件的定期清理
8、配置extract进程
因安全审计需要,在REPLICAT 中设置USERID and PASSWORD 的时候避免采用明文造成安全隐患,可以采用加密后的密码。
GGSCI(3c809f267d19 DBLOGIN as root) 10> encrypt password 1234,ENCRYPTKEY default
Using Blowfishencryption with DEFAULT key.
Encryptedpassword: AACAAAAAAAAAAAEAFCBERGFHJCMEBDEE
Algorithmused: BLOWFISH
我这里没有指定具体的加密算法,默认就是AES128算法
GGSCI(3c809f267d19) 2> dblogin sourcedb [email protected]:3306,userid root,password AACAAAAAAAAAAAEAFCBERGFHJCMEBDEE,ENCRYPTKEY default
编辑extkafka进程文件:
GGSCI(ambari.master.com) 6> edit param extkafka
extract extkafka
setenv(MYSQL_HOME="/var/lib/mysql")
tranlogoptionsaltlogdest /var/lib/mysql/mysql-bin.index
[email protected]:3306,userid root,passwordAACAAAAAAAAAAAEAFCBERGFHJCMEBDEE,ENCRYPTKEY default
exttrail /opt/ogg/[extkafka]/to
dynamicresolution
gettruncates
GETUPDATEBEFORES
NOCOMPRESSDELETES
NOCOMPRESSUPDATES
table test.*;
说明:第一行指定extract进程名称;dynamicresolution动态解析;SETENV设置环境变量,这里分别设置了mysql数据库以及字符集;userid root,password Hismart@2019即OGG连接mysql数据库的帐号密码,这里使用2.5中特意创建的复制帐号;exttrail定义trail文件的保存位置以及文件名,注意这里文件名只能是2个字母,其余部分OGG会补齐;table即复制表的表名,支持*通配,必须以;结尾。
添加extract进程:
GGSCI(ambari.master.com) 16> add extract extkafka,tranlog,begin now
EXTRACT added.
添加trail文件的定义与extract进程绑定:
GGSCI(ambari.master.com) 17> add exttrail /opt/ogg/[extkafka]/to,extract extkafka
EXTTRAIL added.
9、配置pump进程
pump进程本质上来说也是一个extract,只不过他的作用仅仅是把trail文件传递到目标端,配置过程和extract进程类似,只是逻辑上称之为pump进程:
GGSCI(ambari.master.com) 18> edit param pukafka
extract pukafka
passthru
dynamicresolution
rmthost192.168.124.173 mgrport 7809
rmttrail /opt/ogg/[extkafka]/to
table test.*;
说明:第一行指定extract进程名称;passthru即禁止OGG与Oracle交互,我们这里使用pump逻辑传输,故禁止即可;dynamicresolution动态解析;rmthost和mgrhost即目标端(kafka)OGG的mgr服务的地址以及监听端口;rmttrail即目标端trail文件存储位置以及名称。
分别将本地trail文件和目标端的trail文件绑定到extract进程:
GGSCI(ambari.master.com) 1> add extract pukafka,exttrailsource /opt/ogg/[extkafka]/to
EXTRACT added.
GGSCI(ambari.master.com) 2> add rmttrail /opt/ogg/[extkafka]/to,extract pukafka
RMTTRAIL added.
10、配置define文件
Oracle与MySQL,Hadoop集群(HDFS,Hive,kafka等)等之间数据传输可以定义为异构数据类型的传输,故需要定义表之间的关系映射,在OGG命令行执行:
GGSCI(ambari.master.com) 3> edit param [extkafka]
defsfile /opt/ogg/dirdef/[extkafka]
[email protected]:3306,userid root,passwordAACAAAAAAAAAAAEAFCBERGFHJCMEBDEE,ENCRYPTKEY default
table test_ogg.test_ogg;
在OGG主目录下执行(oracle用户):
./defgen paramfiledirprm/[extkafka].prm
。。。
Definitions generated for 1 table in /opt/ogg/dirdef/ext_xxb_oracle_108
将生成的/opt/ogg/dirdef/test_ogg.test_ogg发送的目标端ogg目录下的dirdef里:
scp -r /opt/ogg/dirdef/[extkafka] [email protected]:/opt/ogg/dirdef/
源端就配置完毕!有问题可以评论,我会进行回复解答