暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

「YashanDB个人版体验」使用OGG同步MySQL数据到YashanDB

原创 Skye 2023-11-28
797

前言

对于能支持驱动包加载自定义数据源的工具,我理解YashanDB都应该能支持数据同步的。所以简单测试一下使用OGG是否能将MySQL的数据同步到YashanDB,主要看整个流程是否能跑通,肯定测不了全功能项的。

本测试仅供学习产品使用,切勿商用。

1. OGG 简单介绍

Oracle Golden Gate(简称OGG)。

1.1 OGG产品系列

  1. OCI GoldenGate
  2. Oracle GoldenGate for Marketplace
  3. Oracle GoldenGate for Big Data
  4. Oracle GoldenGate Application Adapters
  5. Oracle GoldenGate for HP NonStop (Guardian)
  6. Oracle GoldenGate Veridata
  7. Oracle GoldenGate Plug-in for EMCC
  8. Oracle GoldenGate Monitor
  9. Oracle GoldenGate Studio

1.2 同步原理

OGG是一种基于日志的结构化数据复制软件,通过捕获源数据库online redo log (在线重做日志)或archive log(归档日志)获得数据变化,形成tail(队列文件 ),再将这些tail通过网络协议,传输到目标数据库,目标端通过解析,插入至目标端数据库,从而实现源端与目标端数据同步。

1.3 特性

  1. 对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制;
  2. 以交易为单位复制,保证交易一致性:只同步已提交的数据;
  3. 支持一对一、一对多、多对一、多对多和双向复制等。

1.4 逻辑架构

image.png
参照上图简单理解解释OGG逻辑架构。在OGG使用过程中主要涉及以下进程及文件

  1. Service Manager:需要源端跟目标端同时运行,主要作用是监控管理其它进程,报告错误,分配及清理数据存储空间,发布阈值报告等;
  2. Extract进程:运行在数据库源端,主要用于捕获数据的变化,负责全量、增量数据的抽取
    3.Trails文件:临时存放在磁盘上的数据文件
  3. Data Pump进程:运行在数据库源端,属于Extract进程的一个辅助进程,如果不配置Data Pump,Extract进程会将抽取的数据直接发送到目标端的Trail文件,如果配置了Data Pump,Extract进程会将数据抽取到本地Trail文件,然后通过Data Pump进程发送到目标端,配置Data Pump进程的主要好处是即使源端到目标端发生网络中断,Extract进程依然不会终止
  4. Collector进程:接收源端传输过来的数据变化,并写入本地Trail文件中
  5. Replicat进程:读取Trail文件中记录的数据变化,创建对应的DML语句并在目标端回放

抓重点,就是它会产生一个中间产物叫Trail文件,这是一种特定格式的文件,其实也就是我们要同步的数据,把它解析应用,就可以同步到目标库了。等会在测试过程中,可以看到这个文件。

2.环境准备

测试使用OGG通过MySQL数据到崖山数据库YashanDB。因为是做功能测试,就使用一台主机,部署两套,一套ogg big data,一套ogg for mysql。

2.1 主机信息

主机名 ip 配置
mysql 192.168.23.57 16C/32G
[ogg@mysql ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.23.57 mysql

2.2 安装java环境

(在root用户下执行)

yum -y install java

2.3 创建用户ogg

useradd ogg echo "ogg" |passwd --stdin ogg

2.4 创建需要的目录

(注意系统权限)

mkdir -p /home/stage/oggsc mkdir -p /home/stage/ogg-big-data mkdir -p /home/stage/ogg-big-data-deploy-home mkdir -p /home/stage/ogg-big-data-service-manager chown -R ogg:ogg /home/stage mkdir -p /home/stage2/oggsc mkdir -p /home/stage2/ogg-mysql mkdir -p /home/stage2/ogg-mysql-deploy-home mkdir -p /home/stage2/ogg-mysql-service-manager chown -R ogg:ogg /home/stag #目录说明 - /home/stage/oggsc:存放解压软件包文件的目录 - /home/stage/ogg-big-data:OGG_HOME目录 - /home/stage/ogg-big-data-deploy-home:部署目录 - /home/stage/ogg-big-data-service-manager:service manager目录

2.5 安装ogg big data

用于接受数据,应用到YashanDB。

2.5.1 安装软件

[ogg@mysql ~]$ cd /home/soft [ogg@mysql soft]$ ll total 639412 -rw-r--r--. 1 ogg ogg 308564766 Sep 15 16:29 V1011477-01.zip -rw-r--r--. 1 ogg ogg 346187748 Sep 15 16:30 V1019737-01.zip unzip V1019737-01.zip -d /home/stage/oggsc cd /home/stage/oggsc/ggs_Linux_x64_BigData_services_shiphome/Disk1/ export DISPLAY=192.168.30.49:0.0 ./runInstaller

因为是图形化界面安装,这里通过DISPLAY将界面投射到个人主机上进行操作。

进入安装big data 微服务界面

1.选择安装Oracle GoldenGate for BigData
image.png
2.填写OGG_HOME目录
image.png
3.使用默认的路径的用户组
image.png
4.确认安装信息
image.png
5.使用root用户执行orainsRoot.sh脚本
image.png

[root@mysql soft]# sh /home/stage/oraInventory/orainstRoot.sh Changing permissions of /home/stage/oraInventory. Adding read,write permissions for group. Removing read,write,execute permissions for world. Changing groupname of /home/stage/oraInventory to ogg. The execution of the script is complete.

6.软件安装完成
image.png

2.5.2 创建服务

2.5.2.1 配置环境变量

vim ~/.bash_profile 添加下面两行 export OGG_HOME=/home/stage/ogg-big-data export PATH=$PATH:$OGG_HOME/bin source ~/.bash_profile

2.5.2.2 执行oggca.sh创建服务

export DISPLAY=192.168.30.49:0.0 oggca.sh

进入图形化界面

1.service manager选择,填写部署HOME目录、hostname、端口号。
image.png

(这里不建议用ip,首先使用ip这个步骤要等很久,其次在最后deploy的时候,一直卡在17%,观察日志报错说The Service Manager process is not accepting REST calls.好像是找不到服务,之后改成hostname就没有这个问题了。)

2.选择添加一个新的OGG部署(如果有部署了一半失败的情况,也可以使用这里的remove选线来删除)
image.png
3.填写部署细节,这里的软件目录对应的就是OGG_HOME目录
image.png
4.填写部署目录,用于存放部署的配置文件等,这个路径不建议使用 OGG_HOME ,这样方便升级。也不能使用 第一步的 service manager 的目录。
image.png
5.配置环境变量,官方文章推荐增加这个变量 ENV_LC_ALL=zh_CN.UTF-8
image.png
6.设置管理账号密码
image.png
root/Asdf123.
7.安全选项,为了简化配置,这里不使用ssl/tls
image.png
8.这里将所有的服务都部署上,端口设置第一个后,后面的会自动加1
image.png
9.确认配置信息
image.png
10.安装过程,很快就结束了,所以没截上图
11.安装完成
image.png
12.进入到界面查看,root/Asdf123.
http://192.168.23.57:8688
http://192.168.23.57:8689
image.png

2.6 安装ogg for mysql

用于抓取MySQL中的数据,生成Trail文件。

整个安装步骤和上面类似。

2.6.1 安装软件

cd /home/soft unzip V1011477-01.zip -d /home/stage2/oggsc export DISPLAY=192.168.30.49:0.0 export OGG_HOME=/home/stage2/ogg-mysql cd /home/stage2/oggsc/ggs_Linux_x64_MySQL_services_shiphome/Disk1/ ./runInstaller

进入图形化界面

1.选择ogg for mysql
image.png
2.选择OGG_HOME,这里就是新的针对于mysql的ogg_home
image.png
3.配置确认
image.png
4.安装过程,很快
5.安装完成
image.png

2.6.2 创建服务

[ogg@mysql Disk1]$ export OGG_HOME=/home/stage2/ogg-mysql [ogg@mysql Disk1]$ export PATH=$PATH:$OGG_HOME/bin [ogg@mysql Disk1]$ whereis oggca.sh oggca: /home/stage/ogg-big-data/bin/oggca.sh /home/stage2/ogg-mysql/bin/oggca.sh [ogg@mysql Disk1]$ cd $OGG_HOME/bin [ogg@mysql bin]$ ./oggca.sh

进入图形化界面

1.部署一个新的service manager,路径选择与mysq对象的部署目录
image.png
2.添加一个新的deployment
image.png
3.填写deployment的名字,这里的software home就是OGG_HOME
image.png
4.填写deploy_home
image.png
5.填写环境变量,按照官方文档推荐增加了这个变量 ENV_LC_ALL=zh_CN.UTF-8
image.png
6.填写管理用户密码,root/Asdf123.
image.png
7.安全选项,为了简化配置,这里选择不使用tls
image.png
8.管理服务端口-填入9689,其他端口号留空,会自动递增1,打开监控,监控数据存储路径留空(这里的端口记得要跟楼上的big data的端口分开,别冲突了)
image.png
9.填写默认的schema(没太懂这个含义,随便写了个名字,估计是后面抽取时mysql中默认的database)
image.png
10.确认配置信息
image.png
11.安装。过程很快
12.安装完成
image.png

小结:到这里,源端(MySQL)的ogg环境(ogg for mysql)和目标端(yashan)的ogg 环境(ogg big data)基本部署好了,后面就是配置抽取和插入规则了。

3.配置抽取和插入

3.1 源端配置

1.登录http://192.168.23.57:9689
2.创建用户
image.png
3.添加一个【提取】
image.png
4.初始加载提取
image.png
5.配置提取项,进程名字不能超过8个字符,身份证明选择前面创建的mysql信息,线索名称只能为两个字母,比如ab。
image.png
6.配置参数文件,这里的extfile建议用绝对路径,不然找不到这个trail file会生成在那个目录。
image.png
image.png
7.运行完之后,会在文件目录下生成以线索名开头的trail file,比如ab000000。
8.绿√代表任务正在运行
image.png
9.黄色!代表任务正常运行完成(好一个黄色感叹号,我还以为告警呢了,果然不能想当然)
image.png
10.通过详细信息,可以查看任务执行的相关信息
image.png
11.查看报告,会看到有哪些表提取了多少行等信息
image.png

3.2 配置目标端

1.先把YashanDB JDBC驱动放在对应目录
image.png

cd /home/stage mkdir -p ./ogg-big-data-driver/yashan cd ./ogg-big-data-driver/yashan #放在这个目录下

2.登录http://192.168.23.57:8689
3.添加一个【复制】
image.png
4.选择【经典复制】
image.png
5.填写复制选项,进程名也是不能超过8个字符,线索名就是【提取】时定义的线索名,线索子目录就是提取定义的线索所在路径,目标用JDBC。
image.png
6.配置参数文件,这里记得要配置字符集,也要注意表名的大小写等问题
image.png
7.配置属性文件,就是目标数据库连接方式

# Properties file for Replicat my2yas # JDBC Handler Template # Note: Recommended to only edit the configuration marked as TODO gg.handlerlist=jdbcwriter gg.handler.jdbcwriter.type=jdbc #TODO: Edit the JDBC Driver class name. gg.handler.jdbcwriter.DriverClass=com.yashandb.jdbc.Driver #TODO: Edit the JDBC connectionURL. gg.handler.jdbcwriter.connectionURL=jdbc:yasdb://192.168.3.186:1688/yasdb #TODO: Edit the JDBC database user. gg.handler.jdbcwriter.userName=tpcc #TODO: Edit the JDBC database password. gg.handler.jdbcwriter.password=tpcc #TODO: Edit the classpath to point to the location of the JDBC driver. gg.classpath=/home/stage/ogg-big-data-driver/yashan/yashandb-jdbc-1.5.1.jar jvm.bootoptions=-Xmx512m -Xms32m

8.正常运行完成后,任务不会停止,可以通过详情查看偏移量,知道数据是否同步完成。可以手动停止任务
image.png
image.png
通过偏移量可以看到数据已经同步完成了,可以在数据库里面查询一下即可。

个人感受

这次测试大部分时间都是在安装OGG环境上了,自己的猜想也得到的证实。所以对于这种能使用驱动去自定义数据库源的工具,YashanDB应该都能支持,也可能会有些bug,就看驱动本身实现上有没有一些功能限制了,流程上应该没什么大问题。

像kettle也可以通过驱动自定义数据源,应该也是支持的,下次试试。

最后修改时间:2023-11-29 12:50:21
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论