前言

一个需求,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. NIO摘录

    NIO,一种基于通道和缓冲区的I/O方式,可以使用native函数库直接分配堆外内存,然后通过一个存储在java 堆的DirectBteBuffer对象作为这块内存的引用进行操作,避免了再java堆和 ...

  2. PL SQL安装

    首先,在官网下载PL SQL 的对应版本,本机是64位的就下载64位的,网址:https://www.allroundautomations.com/downloads.html#PLS 点击应用程序 ...

  3. jmeter 参数化4_Function Helper中的函数

    Function Helper中的函数:  可作为其他参数化方式的补充项,如:随机数生成的函数${__Random(,,)} 操作路径:操作路径:Options-->Function Helpe ...

  4. 全球的IPv6部署急剧增加,但中国几乎没有一个地方部署?

    全球的IPv6部署继续增加,但中国在IPv6方面还需要努力,从部署图上分析,中国几乎没有几个地方是普及IPv6的.这6年来,自世界IPv6发布以来,全球网络和服务提供商的IPv6部署水平急剧增加.如图 ...

  5. python 绘制三国人物关系图

    author:weizhendong data:2019.12.19 func:绘制三国演义人物关系图 """ import codecs import jieba.po ...

  6. HTTP Error 500.30 - ANCM In-Process Start Failure

    环境 windown 10 IIS 10 net core 2.2 vs2019 背景 在vs2019使用net core 2.2发布到IIS 10上(见在 ASP.NET Core 中使用多个环境) ...

  7. list的过滤操作

    假设 l = ['abc', 'mn', 'aq', 'liuming'] 我要过滤出以a开头的元素,方法有以下两种 方法1: l = ['abc', 'mn', 'aq', 'liuming'] l ...

  8. 日志数据如何同步到MaxCompute

    摘要:日常工作中,企业需要将通过ECS.容器.移动端.开源软件.网站服务.JS等接入的实时日志数据进行应用开发.包括对日志实时查询与分析.采集与消费.数据清洗与流计算.数据仓库对接等场景.本次分享主要 ...

  9. 【Elasticsearch】ElasticSearch基本查询

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

  10. BUUCTF | MD5

    题目:e00cf25ad42683b3df678c61f42c6bda flag{admin1} 算是一个资源收集吧,Orz,https://www.cmd5.com/