前言

一个需求,mysql的某些表,实时同步至oracle,于是就产生了这篇文章,安装过程中,走了些弯路,原因是没太深刻理解,官方提供安装步骤所代表的意义。

环境

源端:mysql-server 5.5.39 , Goldengate for mysql 121210 , MySQL-client-5.5.28-1.linux2.6.x86_64.rpm , mysql-connector-odbc-5.2.7-1.el6.x86_64.rpm

目标端:oracle10g,linux Goldengate 11_1_1

注意:Goldengate版本的不一致,会存在兼容问题,比如抓取进程启动不了,投递进程也没发启动等,本环境就是基于不兼容,但官方提供了解决方法,详细过程,我会注明。

开始吧,源端操作

注意:mysql默认我用root账户做同步操作

基础环境安装配置,详细安装不做阐述

假设你已经安装好了mysql-server,并安装了MySQL-client-5.5.28-1.linux2.6.x86_64.rpm,mysql-connector-odbc-5.2.7-1.el6.x86_64.rpm

Goldengate for mysql 121210 也已拷贝至mysql服务器.

1.修改 vi /etc/my.cnf,添加如下参数

[mysqld]
log-bin=mysql-bin --打开二进制文件,可以修改为其他路径 例子: /var/lib/mysql/hh-bin
max_binlog_size=
binlog_format=row --日志格式为行,这个很重要额,不然Goldengate,抓取进程没法启动
socket=/tmp/mysql.sock [client]
socket=/tmp/mysql.sock
注意:这有一个很大的坑,添加后,需用grep "binlog_format" /etc/my.cnf 检查下是否有重复参数,其他做类似操作.

2.创建 /usr/local/etc/odbc.ini 文件

[ODBC Data Sources]
OGGDB1 = MyODBC 3.51 Driver DSN OGGDB1
Driver = /usr/lib64/libmyodbc5a.so --对应的是mysql-connector-odbc-5.2.7-1.el6.x86_64.rpm这个包,rpm -ql mysql-connector-odbc-5.2.7-1.el6.x86_64.rpm 查看
Description = Connector/ODBC 3.51 Driver DSN
Server = localhost
Port =
User = root
Password =
Database = T
Option =
Socket = /tmp/mysql.sock

3.创建列定义...重要  --这部应放在安装ggsci后执行

[root@ramq2 gg]# vi dirprm/dsalesab.prm
[root@ramq2 gg]# cat dirprm/dsalesab.prm
DefsFile dirdef/dsalesab.def, Purge
SourceDB T, UserID root, Password
Table T.*;
[root@ramq2 gg]# ./defgen paramfile dirprm/dsalesab.prm NOEXTATTR --注意goldengate版本不一致,添加了NOEXTATTR选项 scp dirdef/dsalesab.def oracle@192.168.1.105:/opt/oracle/gg/dirdef --拷贝生成的def文件至目标端,注意 以后新添加了表,也要重复这样做一次

4.安装ggsci

[root@ramq2 gg]# tar -xvf ggs_Linux_x64_MySQL_64bit.tar

[root@ramq2 gg]# ./ggsci

GGSCI (host02) > Create Subdirs 

ggsci这样就安装结束了。

5.配置mgr进程

GGSCI (ramq2) > edit param mgr

GGSCI (ramq2) > view param mgr
   port --添加端口

6.配置抓取进程

GGSCI (ramq2) > edit param et

GGSCI (ramq2) > view param et
Extract et --抓取进程名字
setenv (MYSQL_HOME="/usr/local/mysql") --mysql家目录
ExtTrail ./dirdat/ta, format release 11.1 --注意:format release 11.1 默认我版本不一致,才加载此选项,不然目标端,没法写入数据
SourceDB T@localhost:, UserID root, Password 111111 --连接MySQL
TranLogOptions AltLogDest /usr/local/mysql/data/mysql-bin.index --mysql索引日志文件
Table T.*; --抓取的表
GGSCI (host01) > Add Extract et , TranLog, Begin Now  --添加et进程
EXTRACT added. GGSCI (host01) > Add ExtTrail ./dirdat/ta, Extract et, Megabytes 5 --添加抓取数据存放文件ta,抓取进程et操作,大小5m...可以适量加大
EXTTRAIL added.

7.配置传输进程

GGSCI (ramq2) 9> edit param pt
GGSCI (ramq2) > view param pt Extract pt
RmtHost 192.168.1.105, MgrPort , Compress --投递目标机gg
RmtTrail ./dirdat/p5, format release 11.1 -- 创建目标端数据文件p5 注意: format release 11.1 ,解释同上
Passthru
Table T.*;
GGSCI (host01) > Add Extract pt, ExtTrailSource ./dirdat/ta  --从哪里取数据
EXTRACT added. GGSCI (host01) > Add RmtTrail ./dirdat/p5, Extract pt, Megabytes 5 --添加目标端p5文件,要添加成功,目标端mgr也该启动,数据大小5m
RMTTRAIL added.

目标端操作

假设oracle已安装好

检查环境变量

ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/
ORACLE_SID=orcl
LD_LIBRARY_PATH=/opt/oracle//lib:$LD_LIBRARYPATH --注意:不对,ggsci没法启动
PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH

1.安装ggsci,方法同上,不在啰嗦..

配置mgr进程
GGSCI (ramq2) 3> edit param mgr

GGSCI (ramq2) 4> view param mgr
   port 7809 --添加端口
添加全局配置文件
GGSCI (gg) > edit param ./GLOBALS GGSCI (gg) > view param ./GLOBALS CHECKPOINTTABLE system.checkpointtable
--为什么要添加呢?暂时想不起来了,但必须有,如果要做双向同步,另一方也需添加
GGSCI (gg) 387> Dblogin userid system, password oracle

GGSCI (gg) 387> Add checkpointtable  system.checkpointtable

 

2.添加复制进程,目的是把传输过来的数据,取出,写入oracle

GGSCI (gg) > view param rmy

replicat rmy
setenv (NLS_LANG=American_America.AL32UTF8) --对应mysql编码,不然中文乱码
userid system,password
HANDLECOLLISIONS --数据结构的一致性,不然delete ,update ,进程就挂了
--ASSUMETARGETDEFS --想要操作ddl 就开启把
SourceDefs dirdef/dsalesab.def --还记得源端生成的def文件吗
discardfile ./dirrpt/rmy.dsc,append,megabytes 50 --数据复制写入失败的记录,很重要额,出了错误,就可以看这个。
map "T.t1", target chis.my; --坑额,mysql的表,需加""号
map "T.CH*", target chis.*;
--map T.*, target chis.*;
Add Replicat rmy , ExtTrail ./dirdat/p5   --添加复制进程

启动

ok,完成了,源端和目标端启动进程吧!

常用命令

start extract *   --启动抓取进程  all

start replicat *   --启动复制进程 all

info all   --查看所有进程

stats  进程名  --目标端操作,查看复制进程工作没

view report 进程名 --查看日志信息

send [replicat|extract ]  进程名 ,report  --发送 抓取进程或写入进程的报告 获取后执行 view report 进程名 //输出报告

help start  extract  --获取帮助信息

start replicat  进程名   SKIPTRANSACTION    --复制进程遇到错误,跳过错误,启动

提示: 善用help

总结

写这教程耗时1个半小时,力求完美,但还是不够详细,忘读者谅解.

安装过程中参考了如下文章:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/11g/mysql_orcl/index.html  --官方教程,其中map mysql表没打" "号,坑...

http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/11g/GGS_Sect_Config_UX_MSQ_to_UX_ORA.pdf --官方原味文档,无bug

Goldengate 应用环境 mysql to oracle的更多相关文章

  1. GoldenGate对接 mysql

    环境: centos 7.4 mysql 5.5.58 glibc 64 位版,下载链接:https://dev.mysql.com/downloads/mysql/5.5.html#download ...

  2. Oracle GoldenGate 异构平台同步(Mysql到Oracle)

    一.OGG安装配置(源端) 1.OGG下载 http://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.htm ...

  3. 异构平台同步(Mysql到Oracle)

    Oracle GoldenGate学习之--异构平台同步(MySQL到Oracle) 如图所示:源端采用Mysql库,目标端采用Oracle库 一.OGG安装配置(源端) 1.OGG下载 https: ...

  4. 【无私分享:ASP.NET CORE 项目实战(第十二章)】添加对SqlServer、MySql、Oracle的支持

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 增加对多数据库的支持,并不是意味着同时对多种数据库操作,当然,后面,我们会尝试同时对多种数据库操作,这可能需要多个上下文,暂且 ...

  5. MySQL、Oracle和SQL Server的分页查询语句

    假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...

  6. MySql类似Oracle的dual虚拟表

    在mysql里也存在和oracle里类似的dual虚拟表:官方声明纯粹是为了满足select ... from...这一习惯问题,mysql会忽略对该表的引用. 你可千万注意了: select * f ...

  7. MySQL与Oracle的主要区别

    Mysql与Oracle区别 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. ...

  8. MySql和Oracle的日期转换到底有哪些不同?我们来比较一下

    1.MySql和Oracle的日期转换 mysql中有2种日期格式DATE和TIME,oracle只有一种日期格式DATE. oracle> select to_char(sysdate,'yy ...

  9. 数据库MySQL与Oracle的一些去O注意项

    一.oracle递归查询语句start with ...connect by prior ① 给你一张表,表里面有主键id,以及该项的父节点parent_id,查询出该表中所有的父子关系节点树? Or ...

随机推荐

  1. spring整合Quartz2持久化任务调度

    转摘 https://blog.csdn.net/qwe6112071/article/details/50999386 因为通过Bean配置生成的JobDetail和CronTrigger或Simp ...

  2. 数据库与缓存:2.Redis数据库的基本知识

    1.属于什么类型的数据库 not only sql  非关系型数据库,与传统的关系型数据库不同,存储形式都是kv形式. 2.特点 几乎不支持事务,key-value形式存储,支持队列和缓存(可以设置数 ...

  3. java基础复习(一)

    一.常用的DOS命令  打开命令提示符窗口的方式: ① win + R --> 输入cmd --> 回车 ② 开始 --> 搜索程序和文件的框中输入  cmd  --> 回车 ...

  4. Linux的cat命令详解

    The cat command reads one or more files and copies them to standard output 也就是说,cat命令读取文件,并显示在 stand ...

  5. Delphi fmx 找不到android设备解决办法

    刚接触到移动开发,很多不熟悉.配置好Android SDK后,​​如果​用模拟器来调试程序的话,那速度会让人崩溃,我用的Nexus7平板​​,插上电脑,开启USB调试,但奇怪在Delphi里就是找不到 ...

  6. 【Elasticsearch】ElasticSearch基本查询

    学习elasticsearch查询用法的时候,发现这篇文章写得很详细,为以后方便查看,就直接搬过来了,原文链接在下面. 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附 ...

  7. 数据中 int 转 double 方式

    在mysql 中,得出一个int整数型数值 int整数值/int整数值   在被引用时,发现还是int类型 但是实际需要转换为 double 小数类型 查看相关函数,没有找到好的方法 后采用了 rou ...

  8. SVG开发包, 20 个有用的 SVG 工具,提供更好的图像处理

    20 个有用的 SVG 工具,提供更好的图像处理 SVG 现正在 Web 设计领域变得越发流行, 你可以使用 Illustrator 或者 Inkscape 来创建 SVG 图像. 但当进行 Web ...

  9. rabbitmq for C#的异步消息确认机制

    代码: using (var conn = RabbitmqHelper.GetConnection()) { using (var channel = conn.CreateModel()) { / ...

  10. 4.tensorflow——CNN

    1.CNN结构:X-->CONV(relu)-->MAXPOOL-->CONV(relu)-->FC(relu)-->FC(softmax)-->Y 1.1 卷积层 ...