Goldengate 应用环境 mysql to oracle

前言

一个需求,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=4096
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 = 3306
User = root
Password = 111111
Database = T
Option = 3
Socket = /tmp/mysql.sock

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

[[email protected] gg]# vi dirprm/dsalesab.prm
[[email protected] gg]# cat dirprm/dsalesab.prm
DefsFile dirdef/dsalesab.def, Purge
SourceDB T, UserID root, Password 111111
Table T.*;
[[email protected] gg]# ./defgen  paramfile  dirprm/dsalesab.prm NOEXTATTR  --注意goldengate版本不一致,添加了NOEXTATTR选项

scp dirdef/dsalesab.def [email protected]:/opt/oracle/gg/dirdef   --拷贝生成的def文件至目标端,注意 以后新添加了表,也要重复这样做一次

4.安装ggsci

[[email protected] gg]# tar -xvf ggs_Linux_x64_MySQL_64bit.tar

[[email protected] gg]# ./ggsci

GGSCI (host02) 1> Create Subdirs 

ggsci这样就安装结束了。

5.配置mgr进程

GGSCI (ramq2) 3> edit param mgr

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

6.配置抓取进程

GGSCI (ramq2) 8> edit param et

GGSCI (ramq2) 8> view param et
Extract et   --抓取进程名字
setenv (MYSQL_HOME="/usr/local/mysql")   --mysql家目录
ExtTrail ./dirdat/ta, format release 11.1  --注意:format release 11.1 默认我版本不一致,才加载此选项,不然目标端,没法写入数据
SourceDB [email protected]:3306, 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 ptGGSCI (ramq2) 9> view param pt

Extract pt
RmtHost 192.168.1.105, MgrPort 7809, 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/102
ORACLE_SID=orcl
LD_LIBRARY_PATH=/opt/oracle/102/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) 387> edit param ./GLOBALS

GGSCI (gg) 387> view param ./GLOBALS

CHECKPOINTTABLE system.checkpointtable--为什么要添加呢?暂时想不起来了,但必须有,如果要做双向同步,另一方也需添加

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

GGSCI (gg) 389> view param rmy

replicat rmy
setenv (NLS_LANG=American_America.AL32UTF8) --对应mysql编码,不然中文乱码
userid system,password 111111
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 p5 , 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

时间: 2024-07-31 18:34:20

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

使用GoldenGate实现MySQL到Oracle的数据实时同步

step 1: 配置mysql修改配置文件my.ini#for goldengatelog-bin = "C:/mysql/logbin/logbin.log"binlog-format = ROWlog-bin-index = "C:\mysql\logindex"binlog_cache_size=32mmax_binlog_cache_size=512mmax_binlog_size=512m 添加数据库用户ggs,具有DBA权限 step 2: 在mysql

异构平台同步(Mysql到Oracle)

Oracle GoldenGate学习之--异构平台同步(MySQL到Oracle) 如图所示:源端采用Mysql库,目标端采用Oracle库 一.OGG安装配置(源端) 1.OGG下载 https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number=14841438 https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number=14841440

Mysql与Oracle区别

文章分类:数据库 周五去一家公司去面试,那公司经理问了关于Mysql与Oracle的区别问题,以前没有总结,回答也不是很好,只是凭感觉,先总结如下: 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. Oracle支持大并发,大访问量,是OLTP最好的工具. 3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特

Mysql与Oracle区别(转载)

Mysql与Oracle区别 文章分类:数据库 转载于http://blog.sina.com.cn/s/blog_5d9ca4ea0100kmhy.html 周五去一家公司去面试,那公司经理问了关于Mysql与Oracle的区别问题,以前没有总结,回答也不是很好,只是凭感觉,先总结如下: 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. Oracle支持大并发,大访问量,是

qlserver、Mysql、Oracle三种数据库的优缺点总结

这篇文章主要介绍了sqlserver.Mysql.Oracle三种数据库的优缺点总结,需要的朋友可以参考下 一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等:为数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势.从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要.作为一个完备的数据库和数据分析包,SQLServer为快速开发新一代企业级商业应

jdbc:mysql和oracle插入一条数据返回主键

package org.sin.common.dao; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import or

MySQL,Oracle,PostgreSQL 数据库web维护管理软件

TreeSoft数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL 等数据库进行维护管理操作. 功能包括:数据库的展示,库表的展示,表字段结构的展示, SQL语句的在线编辑批量执行,表结构的在线设计维护,数据的在线编辑维护,查询语句保存,JSON数据格式化,SQL语法帮助,在线数据源选择配置等.系统内置14套UI皮肤,45套代码编辑区UI方案,使用中可以依个人喜好选择配色方案. 本系统不但稳定,实

Java学习-006-三种数据库连接 MySQL、Oracle、sqlserver

此文主要讲述在初学 Java 时,常用的三种数据库 MySQL.Oracle.sqlserver 连接的源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-1-31 10:46:48,请知悉. 所需的 jar 包下载链接为:http://yunpan.cn/cKEWbBntAjtKy  访问密码 bd58 以下为初学 Java 常用的三种数据库 MySQL.Oracle.sqlserver 连接的源代码,敬请参阅! MyS

MySQL与Oracle的大小写问题

转载来源:http://aofengblog.blog.163.com/blog/static/63170212010101065030136/ MySQL与Oracle在大小写处理上的区别: 1MYSQL 1.在Windows下,数据库名.表名.字段名不区分大小写.2.大Linux/Unix下,数据库名.表名区分大小写,字段名不区分大小写.3.编辑/etc/my.cnf,设置lower_case_table_names可以让MySQL是否区分表名的大小写. 0:区分大小写:1:不区分大小写.