GoldenGate对接 mysql
环境:
centos 7.4
mysql 5.5.58 glibc 64 位版,下载链接:https://dev.mysql.com/downloads/mysql/5.5.html#downloads
GoldenGate for mysql 12.3.0.1.0 linux 版本,下载链接:http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
之前作者已经写过一篇博客,专门介绍如何使用tar 包离线安装mysql 服务,感兴趣的读者可以浏览查看mysql 5.5.58 tar包安装部署,读者们要特别留意my.cnf 的配置,因为GoldenGate 在对接mysql 时,需要依赖mysql 的binlog 日志。
安装GoldenGate 前,建议大家先创建一个ogg 的系统用户,方便管理
groupadd ogg useradd -s "/bin/bash" -m -d /home/ogg -b /home/ogg -g ogg ogg
切换到 ogg 系统用户下,继续以下操作
su - ogg
解压已经下载好的GoldenGate 软件
mkdir -p /home/ogg/ogg unzip 123011_ggs_Linux_x64_MySQL_64bit.zip -d /home/ogg/ogg/ cd ogg/ tar -xvf ggs_Linux_x64_MySQL_64bit.tar
进入ggsci 控制台
./ggsci
创建GoldenGate的子目录,并且编辑mgr 配置文件
create subdirs
edit param mgr
mgr 服务的配置文件
port 9001 autostart er * autorestart er *
启动mgr 服务
start mgr
编辑 ext_test 服务的配置文件
edit param ext_test
ext_test 服务的配置文件
EXTRACT ext_test SOURCEDB foo@localhost:3306, USERID root, PASSWORD mysql Setenv (NLS_LANG="AMERICAN_AMERICA.UTF8") Setenv (MYSQL_HOME="/opt/mysql-5.5.58-linux-glibc2.12-x86_64") TranLogOptions AltLogDest /opt/mysql-5.5.58-linux-glibc2.12-x86_64/binlog/replicalog.index GETTRUNCATES DISCARDROLLOVER ON FRIDAY DISCARDFILE ./dirrpt/ext_test.dsc , APPEND, MEGABYTES 1024 REPORTCOUNT EVERY 30 MINUTES, RATE EXTTRAIL ./dirdat/ex TABLE foo.test;
GoldenGate 对接mysql 和Oracle的配置文件有所不同,主要是连接 数据库的设置不一样,以及设置数据库事务日志的方法也不同。
SOURCEDB 这个参数中,foo 代表是mysql 的database 名字,localhost 是指定mysql 的连接方式,3306 即是mysql 的端口号,后面接着的鉴权是mysql 数据库中的用户名和密码,而非操作系统的用户名和密码。
TranLogOptions 参数则是指定mysql 事务日志的索引文件路径
再次强调,读者需要通过作者上一篇博客mysql 5.5.58 tar包安装部署 的介绍,用户应该如何设置mysql 的事务日志归档。
设置好ext_test配置后,就是对GoldenGate 增加这个服务。
add extract ext_test, TRANLOG, BEGIN NOW ADD EXTTRAIL ./dirdat/ex , EXTRACT ext_test, MEGABYTES 200
启动ext_test 服务
start ext_test
查看GoldenGate 服务的运行状态
info all
GoldenGate for mysq 另外一个和 对接Oracle 不同的地方,是GoldenGate 获取mysql 表结构的方法。
在 ggsci 控制台上配置defgen 的配置文件
edit param defgen
defgen的配置文件内容
DEFSFILE dirdef/source.def, PURGE
SourceDB foo, UserID root, Password mysql
Table foo.test ;
在shell 窗口中执行以下命令,获取mysql 需要同步的表的表结构
./defgen paramfile dirprm/defgen.prm
之前作者写过一篇完整的GoldenGate的部署博客Oracle GoldenGate对接 Oracle 11g和Kafka,大家可以根据介绍将剩余的 dpe_test 和rep_test部分进行部署。
- 启动ext_test 服务时报错
如果用户在启动 ext_test服务时报错信息如下,则证明是mysql 的binlog 日志ogg 没有读的权限,用户应该修改mysql 的binlog 日志权限,允许其他的系统用户读取
2017-11-28 11:09:58 ERROR OGG-00146 Call to VAMInitialize returned with error status 600: VAM Client Report <CAUSE OF FAILURE : ERROR NO 13 - Confirm that the log file exists, that the path is correct, and that the correct permissions are set for Oracle GoldenGate. Also try specifying the path to the log index file by using the TRANLOGOPTIONS parameter with the ALTLOGDEST option. - /opt/mysql-5.5.58-linux-glibc2.12-x86_64/binlog/replicalog.index WHEN FAILED : While initializing binary log configuration WHERE FAILED : MySQLBinLog Reader Module CONTEXT OF FAILURE : No Information Available!>. 2017-11-28 11:09:58 ERROR OGG-01668 PROCESS ABENDING
修改mysql 的binlog 目录的权限命令
chmod 765 /opt/mysql-5.5.58-linux-glibc2.12-x86_64/binlog/*