OGG:Oracle to MySQL异构复制环境搭建
来源:互联网 发布:ubuntu无法登录界面 编辑:程序博客网 时间:2024/05/16 09:26
环境介绍
source:
Oracle RDBMS 11.2.0.4
OGG for oracle OGG-12.2.0.1
IP:192.168.5.221
OS user:oggora
安装目录:/ogg4oracle
OGG数据库用户:ogg4o
OGG数据库表空间:oggtbs
数据库测试账户:lili
target:
MySQL 5.6.37
OGG for mysql OGG-12.2.0.1
IP:192.168.5.223
OS user:oggmy
安装目录:/ogg4mysql
OGG数据库用户:ogg4m
测试数据库:lili
OGG自用数据库:ogg
source端环境准备:
1.创建操作系统账户oggora,该用户要与数据库系统账户同组以能访问相关文件。
设置环境变量
[root@ora11g ~]# useradd -g oinstall oggora[root@ora11g ~]# id oggorauid=501(oggora) gid=500(oinstall) groups=500(oinstall)vi .bash_profileexport ORACLE_SID=orclexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1export LD_LIBRARY_PATH=/ogg:$ORACLE_HOME/lib:/usr/lib:/lib:/usr/local/libPATH=/ogg4oracle:$HOME/bin:$PATHexport PATH
2.创建ogg安装目录,安装ogg软件
由于是ogg 12.x版本,需要用图形界面安装,这里为了偷懒,使用响应文件静默安装,反正也只有两个参数要填。
[root@ora11g ~]# mkdir /ogg4oracle[root@ora11g ~]# chown ogg:oinstall /ogg4oracle[oggora@ora11g ~]# unzip fbo_ggs_Linux_x64_shiphome.zip[oggora@ora11g ~]# tar xvf fbo_ggs_Linux_x64_shiphome.tar[oggora@ora11g Disk1]# ./runInstaller -silent -responseFile /home/oggora/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp > 响应文件中指定INSTALL_OPTION=ORA11g,SOFTWARE_LOCATION=/ogg4oracle
3.创建ogg子目录,配置全局参数文件,配置并启动mgr
[oggora@ora11g ogg4oracle]$ ./ggsciGGSCI (ora11g) 1> create subdirs--配置全局参数文件GLOBALS,这个文件必须为大写,必须放在ogg的安装根目录下.--加上“./”表示在当前目录下创建,否则ogg会默认将配置文件创建在ogg安装目录下的dirprm子目录中.--在GLOBALS配置文件中添加GGSCHEMA参数,这个GGSCHEMA就是你的DDLuser,也就是我们的ogg Oracle数据库账户.GGSCI (ora11g) 2> edit params ./GLOBALSGGSCHEMA ogg4oGGSCI (ora11g) 1> edit params mgrport 7809dynamicportlist 7810-7820,7830autostart er r*autorestart er r*,retries 4,waitminutes 4startupvalidationdelay 5purgeoldextracts /ogg4oracle/dirdat/rt*,usecheckpoints,minkeephours 2GGSCI (ora11g) 3> start mgrGGSCI (ora11g) 4> info mgr
4.配置oracle数据库,开启归档,附加日志,force logging
SQL> select LOG_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;LOG_MODE FOR SUPPLEME------------ --- --------ARCHIVELOG NO NOSQL> alter database force logging;Database altered.SQL> alter database add supplemental log data;Database altered.SQL> select LOG_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;LOG_MODE FOR SUPPLEME------------ --- --------ARCHIVELOG YES YES
5.创建ogg表空间,数据库用户,测试用户,测试表
--创建表空间,数据库OGG用户,赋权限,修改数据库参数允许OGGSQL> create tablespace oggtbs datafile '/u01/app/oracle/oradata/orcl/oggtbs.dbf' size 2G autoextend off;Tablespace created.SQL> create user ogg4o identified by ogg4o default tablespace oggtbs;User created.SQL> grant connect,resource,dba to ogg4o;Grant succeeded.SQL> exec dbms_goldengate_auth.grant_admin_privilege('OGG4O');PL/SQL procedure successfully completed.SQL> ALTER SYSTEM SET enable_goldengate_replication=TRUE; > 将source数据库的enable_goldengate_replication参数设置为true,否则无法复制. > 这个参数是在11.2.0.4版本开始才有的,这个参数主要用来控制新的数据类型和操作的辅助日志的复制. > 以前这些提取是由辅助记录DDL来控制的,现在这个参数也必须被设置为true来启用辅助日志的请求. > 这个参数默认是false的,我们需要将它设置为true。-- 创建测试用户及测试数据SQL> create user lili identified by lili;User created.SQL> grant resource,connect to lili;Grant succeeded.SQL> conn lili/liliConnected.SQL> create table tt (id number primary key,name varchar2(20));Table created.SQL> begin 2 for i in 1..10000 loop 3 insert into tt values(i,'sdfs'||i); 4 end loop; 5 commit; 6 end; 7 /PL/SQL procedure successfully completed.SQL> create table gg (dd number,kk date);Table created.
6.创建source端Oracle数据库需要复制同步的数据定义文件,拷贝到target端相应目录下。
-- 配置数据定义文件参数GGSCI (ora11g) 5> edit params defgenuserid ogg4o password ogg4odefsfile /ogg4oracle/dirdef/oracle.deftable lili.*;
-- 生成数据定义文件[oggora@ora11g ogg4oracle]$ ./defgen paramfile dirprm/defgen.prm
-- 拷贝生成的数据定义文件到目标端数据定义目录下[oggora@ora11g dirdef]$ scp oracle.def oggmy@192.168.5.223:/ogg4mysql/dirdef
target端环境准备:
1.创建操作系统用户
[root@mys56 ~]# useradd oggmy
2.安装ogg软件,配置并启动mgr
[root@mys56 ~]# mkdir /ogg4mysql[root@mys56 ~]# chown oggmy:oggmy /ogg4mysql[oggmy@mys56 ogg4mysql]$ unzip ggs_Linux_x64_MySQL_64bit.zip[oggmy@mys56 ogg4mysql]$ tar xvf ggs_Linux_x64_MySQL_64bit.tar[oggmy@mys56 ogg4mysql]$ ./ggsciGGSCI (mys56) 1> create subdirsGGSCI (mys56) 1> edit params ./GLOBALSGGSCHEMA ogg4mGGSCI (mys56) 2> edit params mgrport 9900dynamicportlist 9901-9920,9930autostart er *autorestart er *,retries 4,waitminutes 4startupvalidationdelay 5purgeoldextracts /ogg4mysql/dirdat/*,usecheckpoints,minkeephours 2ACCESSRULE, PROG *, IPADDR 192.168.5.*, ALLOWGGSCI (mys56) 3> start mgrGGSCI (mys56) 4> info mgr
3.创建target端测试数据库和相应的表,创建ogg的用户,赋予权限,创建ogg用到的数据库。
-- 创建测试数据库及表-- 注意Mysql数据库是大小写敏感的,而Oracle数据库对大小写不敏感。-- 并且Oracle数据库会把所有的小写字符内部都转换成大写-- 所以要注意在映射到Mysql时要么Mysql中将表全部建成大写-- 要么就是在使用Map映射是将每个表的对应关系写清楚,否则复制会失败。mysql> create database lili;mysql> use lili;mysql> create table GG(dd int,kk date);mysql> create table TT(id int primary key, name varchar(20));-- 创建OGG自己用的数据库及用户mysql> create database ogg;mysql> grant all on *.* to 'ogg4m'@'%' identified by 'ogg4m';mysql> flush privileges
初始化加载配置
1.source端初始化捕获处理任务
-- 在source系统上执行以下命令添加一个Extract进程叫做init,确认添加成功:GGSCI (ora11g) 3> add extract init,sourceistableGGSCI (ora11g) 3> info extract *, task-- 配置初始化加载捕获参数文件GGSCI (ora11g) 3> edit params initextract inituserid ogg4o password ogg4ormthost 192.168.5.223,mgrport 9900rmttask replicat,group repinittable lili.*;
2.target端初始化捕获交付任务
-- 在target端创建一个初始化加载交付批处理任务组,确认添加成功:GGSCI (mys56) 3> add replicat repinit,specialrunGGSCI (mys56) 3> info replicat *,task-- 配置初始化加载交付参数文件GGSCI (mys56) 3> edit params repinitreplicat repinittargetdb ogg@192.168.5.223:3306 userid ogg4m password ogg4msourcedefs /ogg4mysql/dirdef/oracle.defdiscardfile /ogg4mysql/dirrpt/repinit.dsc,purgemap lili.*,target lili.*;-- Mysql与Oracle数据库登陆数据库不同的地方在于需要用targetdb指定登陆的数据库。-- 由于是异构环境,所以要指定sourcedefs参数,使用source数据库的数据定义文件。
change capture 配置
1.source端添加extract组
原本想用integrated tranlog,无奈需要打补丁,太麻烦,偷懒用了classic的tranlog
GGSCI (ora11g) 3> add extract ext1,tranlog,begin now
如果是integrated tranlog需要如下配置
GGSCI (ora11g) 3> add extract ext1,integrated tranlog,begin now由于我们使用的是Integrated捕获方式,所以我们必须将Extract进程注册到数据库中:GGSCI (ora11g) 9> dblogin userid ogg4o password ogg4oSuccessfully logged into database.GGSCI (ora11g as ogg4o@orcl) 10> register extract ext1 database
定义本地trail与Extract的链接关系:
GGSCI (ora11g) 9> add exttrail /ogg4oracle/dirdat/lt,extract ext1
确认结果
GGSCI (ora11g) 9> info extract ext1
创建Extract参数文件
GGSCI (ora11g) 9> edit params ext1extract ext1userid ogg4o password ogg4oexttrail /ogg4oracle/dirdat/lttable lili.*;
添加data pump进程
GGSCI (ora11g) 9> add extract pump1,exttrailsource /ogg4oracle/dirdat/lt,begin now
定义remote trail与data pump的链接关系
GGSCI (ora11g) 9> add rmttrail /ogg4mysql/dirdat/rt,extract pump1-- 注意此处rmttrail 指定的路径是target端的路径
创建data pump参数文件
GGSCI (ora11g) 9> edit params pump1extract pump1userid ogg4o, password ogg4ormthost 192.168.5.223, mgrport 9900rmttrail /ogg4mysql/dirdat/rtpassthrutable lili.*;
启动捕获进程和data pump进程
GGSCI (ora11g) 9> start ext1GGSCI (ora11g) 9> start pump1GGSCI (ora11g) 9> info all
Change Delivery配置
在target系统上创建checkpoint table
与Oracle数据库登陆数据库不同的地方在于需要加上sourcedb这个参数指定登陆的数据库。
GGSCI (mys56) 2> dblogin sourcedb ogg@192.168.5.223:3306 userid ogg4m password ogg4mSuccessfully logged into database.GGSCI (mys56 DBLOGIN as ogg4m) 3> add checkpointtable ogg.checkpoint_table
添加一个Replicat组用于在线同步复制应用
GGSCI (mys56) 2> add replicat rep1,exttrail /ogg4mysql/dirdat/rt,checkpointtable ogg.checkpoint_table
创建一个Replicat参数文件
GGSCI (mys56) 2> edit params rep1replicat rep1targetdb ogg@192.168.5.223:3306 userid ogg4m password ogg4mhandlecollisionssourcedefs /ogg4mysql/dirdef/oracle.defdiscardfile /ogg4mysql/dirrpt/rep1.dsc,purgemap lili.*,target lili.*;
由于是异构环境,所以要指定sourcedefs参数,使用source数据库的数据定义文件。
handlecollisions参数来处理初始化加载的结果与实时改变同步捕获数据的冲突。
初始化数据加载
source端
start init
target端查看初始化数据加载复制进程的报告确认加载成功
view report repinit
进入mysql数据库查询数据,进一步验证
数据改变同步
source端修改数据
target端启动rep1
验证数据
确认初始化数据加载完成后关闭改变同步Replicat进程rep1的handlecollisions。
send rep1,nohandlecollisions
并将rep1参数文件中的handlecollisions参数去除,防止rep1下次启动时handlecollisions被再次启用。
测试在线数据同步
- OGG:Oracle to MySQL异构复制环境搭建
- ogg for oracle to ogg for mysql
- OGG 12C Oracle to Mysql
- OGG单向复制搭建
- Oracle Goldengate For Mysql 复制进程错误ERROR OGG-00768
- Oracle goldengate搭建ogg
- mysql主从复制环境搭建
- MySql主从复制环境搭建
- mysql主从复制环境搭建
- mysql主从复制环境搭建
- mysql主从复制环境搭建
- mysql 主从复制环境搭建
- OGG oracle DDL双向复制
- 【Oracle】OGG单向复制配置
- 如何搭建Oracle 8高级复制环境
- 生产环境搭建MySQL复制的教程
- 生产环境搭建MySQL复制的教程
- 生产环境搭建MySQL复制的教程
- 点击item将图片用Dialog以Viewpager形式展示出来,并放大缩小
- JAVA小结
- VMware安装Linux-Ubuntu系统(二)-安装vmware tools
- HDU6147(2017百度之星程序设计大赛
- Adroidstudio中创建数据库
- OGG:Oracle to MySQL异构复制环境搭建
- Find the nondecreasing subsequences(数状数组+离散化+dp)
- 聊聊session的安全性
- 进制转换_Java
- 使用Tooltips库在页面进行hint提示
- 执行SQL语句的增删改查
- ERROR 1118 : Row size too large. The maximum row size for the used table type
- TypeError: __init__() takes at least 4 arguments (4 given)
- 润乾报表中参数表单关联过滤异步加载用法