ORACLE(Linux版本)实时同步数据到MYSQL(Windows版本)解决方案:OGG
OGG:Oracle GoldenGate
目录
1.源库(100.100.100.210)与目标库(100.100.100.211)环境
源库环境:Oracle 11.2.0.1.0 + Red Hat Enterprise Linux Server release 6.4
目标库环境:Mysql 5.6.16 + Windows Server 2008 R2 Enterprise
2.源库Oracle操作
3.目标库Mysql操作
4.源端与目标端的配置
1)源端:ORACLE (100.100.100.210)
2)目标端:MYSQL(100.100.100.211)
5.验证数据是否实时同步
【自动同步成功】
1.源库(100.100.100.210)与目标库(100.100.100.211)环境
源库环境:Oracle 11.2.0.1.0 + Red Hat Enterprise Linux Server release 6.4
目标库环境:Mysql 5.6.16 + Windows Server 2008 R2 Enterprise
2.源库Oracle操作
(1)开启归档日志
oracle用户登录:
$ sqlplus / as sysdba--设置归档日志路径
SQL> alter system set log_archive_dest_1='location=/u01/archivelog';--关闭数据库
SQL> shutdown immediate--装载数据库
SQL> startup mount--启用数据库归档模式
SQL> alter database archivelog;--查看数据库归档信息
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/arch--打开数据库
SQL> alter database open;
注:关闭附加日志命令:alter database noarchivelog;
(2)开启附加日志
SQL> select supplemental_log_data_min from v$database;SUPPLEME---------------NO
SQL> alter database add supplemental log data;
SQL> select supplemental_log_data_min from v$database;SUPPLEME---------------YES
(3)开启强制写日志
SQL> select force_logging from v$database;FOR------NO
SQL> alter database force logging;
SQL> select force_logging from v$database;FOR------YES
(4)创建同步用户并授予dba权限
- 创建同步数据用的表空间 ggtbs ,表空间文件(datafile)的路径可使用下面的语句查询
SQL>select * from dba_data_files;
【说明datafile的路径是:/home/oracle/data/orcl/】
- 创建表空间 ggtbs
SQL> create tablespace ggtbs datafile '/home/oracle/data/orcl/ggtbs01.dbf' size 200m autoextend on;
- 创建用户ggs,密码为ggs,默认表空间为ggtbs,空间无配额无限增长
SQL> create user ggs identified by ggs default tablespace ggtbs quota unlimited on ggtbs;
- 赋予ggs用户dba权限
SQL> grant connect,resource,create session,alter session to ggs;
SQL> grant select any dictionary,select any table, alter any table, create any table,flashback any table to ggs;
SQL> grant execute on dbms_flashback to ggs;
SQL> grant dba to ggs;
(5)GoldenGate源端的安装(oracle用户登录)
- 下载安装OGG 安装包
官网地址(需要注册ORACLE账户):https://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.html
点击【 适用于 Linux x86-64 上 Oracle 的 Oracle GoldenGate 12.3.0.1.4 (324 MB)】进行下载
- 将安装包上传到Linux上
#创建ogg_install安装目录
mkdir /home/oracle/ogg_install#将ogg安装包(123014_fbo_ggs_Linux_x64_shiphome.zip)上传到ogg_install目录下#解压ogg安装包(123014_fbo_ggs_Linux_x64_shiphome.zip)到当前目录
unzip 123014_fbo_ggs_Linux_x64_shiphome.zip
- OGG安装的两种方式(任选一种)
a)图形化界面安装
/home/oracle/ogg_install/fbo_ggs_Linux_x64_shiphome/Disk1/runInstaller
后面都是点击下一步即可完成OGG的初始化安装,后续还要对OGG进行手动配置,下面在OGG的配置章节会讲到
b)静默安装
- 配置安装OGG的文件 oggcore.rsp
vim /home/oracle/ogg_install/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp
[将下面的内容粘贴到该文件中,已经有的配置项只要填写值即可,不要重复添加,其中的参数需要根据ORACLE安装的实际情况来配置,参考每行参数的注释]
#安装的数据库版本
INSTALL_OPTION=ORA11g
#安装的路径
SOFTWARE_LOCATION=/home/oracle/ogg
#安装后开启OGG管理
START_MANAGER=false
#OGG管理端口
MANAGER_PORT=1530
#ORACLE的安装位置(可通过命令查看 :echo $ORACLE_HOME)
DATABASE_LOCATION=/u01/oracle
#ORACLE日志文件目录 (可通过命令查看:locate oraInventory)
INVENTORY_LOCATION=/u01/oraInventory
#ORACLE安装组
UNIX_GROUP_NAME=oinstall
- 配置OGG环境变量(文件 .bash_profile) 【oracle用户登录】
vi /home/oracle/.bash_profile
export ORACLE_BASE=/u01
export ORACLE_HOME=$ORACLE_BASE/oracle
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin:/home/oracle/oggexport NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
[需要增加的地方是ogg的安装目录 /home/oracle/ogg]
- 创建ogg需要的目录(适用与静默安装方式,如果是图形化界面安装,则不需要,在安装的时候已经自动创建了)
chown oracle:oinstall /home/oracle/ogg
cd /home/oracle/ogg
./ggsci
create subdirs
【上图说明已经创建目录成功了】
【附】各目录用途:
dirchk :Checkpoint files
dirdat :GoldenGate trails
dirdef: Data definition files
dirprm :Parameter files
dirpcs :Process status files
dirrpt :Report files
dirsql :SQL script files
dirtmp :Temporary files
3.目标库Mysql操作
(1)mysql开启二进制日志(my.ini)
- 编辑mysql配置文件(C:\ProgramData\MySQL\MySQL Server 5.6),修改前备份一下
- 在[mysqld]下增加如下配置
#二进制日志文件的路径
log-bin=mysql-bin
#服务器的ID,随意取值,局域网内不能重复
server-id=211
- 重启mysql服务(先停止服务在开启服务)
- 创建数据库test(如果已经有test数据库就不用创建了)
mysql> create database atc;
- 创建用户ggt,密码ggt,并给予操作数据库atc的全部权限
#创建ggt用户,密码为ggt,允许任何主机访问
mysql> create user ggt@'%' identified by 'ggt';
Query OK, 0 rows affected (0.01 sec)#授权所有数据库的所有表操作和访问权限给ggt用户
mysql> grant all on *.* to ggt@'%';
Query OK, 0 rows affected (0.00 sec)#刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
- 创建测试表 m_act,执行下面的创建表语句,可以在navicat根据中执行
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for M_ACT
-- ----------------------------
DROP TABLE IF EXISTS `M_ACT`;
CREATE TABLE `M_ACT` (`ID` varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL COMMENT '机型ID',`NAME` varchar(50) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '名称',`NAMES` varchar(50) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '名称简称',`ACT3` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '机型代码简',`ACT5` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '机型代码',`ACTDESC` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '机型描述',`ACTF` varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '代码全称',`ALEVEL` varchar(2) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '飞机分类',`TURB` varchar(1) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '尾流等级',`ACLE` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '飞机长度',`ACHE` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '飞机高度',`ACWS` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '飞机翼展',`ENNO` varchar(1) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '发动机数量',`HITB` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最小高度。单位M',`HITE` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最大高度。单位M',`SPDB` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最小速度。单位KM/H',`SPDE` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最大速度。单位KM/H',`WHEELTRACK` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '主轮距',`MAXWEIGHT` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最大起飞权重',`USEC` varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '创建用户',`CDAT` varchar(14) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '创建时间',`USEU` varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '更新用户',`LSTU` varchar(14) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '更新时间',`REMK` text CHARACTER SET gbk COLLATE gbk_chinese_ci COMMENT '备注',`SEATCNT` varchar(4) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL,`LARGE_MIX_TIME` varchar(4) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL,`OTHER_MIX_TIME` varchar(4) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL,`MIN_PASS_TIME` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最小过站时间',PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1;
- 将mysql中M_ACT表导入到ORACLE中,可使用navicat根据中的数据传输进行同步
(2)下载ggs mysql端
- 官网网址(需要注册oracle账户):https://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.html
- 勾选接受许可协议
- 点击下载连接【适用于 Windows(64 位)上 MySQL 的 Oracle GoldenGate 12.3.0.1.2 (72 MB)】
(3)将mysql端ggs安装包(123012_ggs_Windows_x64_MySQL_64bit.zip)上传到Mysql服务器上
- 解压安装包 123012_ggs_Windows_x64_MySQL_64bit.zip到目录 C:\soft\ogg 下
(4)创建mysql的ogg目录
create subdirs
[上图说明ogg目录已经创建成功]
4.源端与目标端的配置
1)源端:ORACLE (100.100.100.210)
- 为表级添加附加日志
#进入ogg
命令行cd /home/oracle/oggHome
./ggsci#登录ggs用户
dblogin userid ggs password ggs#为测试表(HDKG.M_ACT)添加附加日志
add trandata HDKG.M_ACT#查看添加附加日志是否成功
info trandata HDKG.M_ACT
【添加附加日志出现告警,不影响业务】WARNING OGG-01988 Could not find schematrandata function in source database: failed to find function
- 配置global
edit params ./GLOBAL
【文件内容如下】
ggschema ggs
- 创建管理进程
edit params mgr
【文件内容如下】
PORT 7809
DYNAMICPORTLIST 7810-7909
--AUTOSTART ER *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /home/oracle/ogg/dirdat/*, usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
ACCESSRULE, PROG SERVER, ALLOW
- 启动管理进程 mgr
start mgr
- 查看进程状态
info all
[RUNNING说明MGR已经启动成功]
- 创建extract进程
edit params ext1
【文件内容如下】
extract ext1
setenv(NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
userid ggs,password ggs
exttrail /home/oracle/ogg/dirdat/e1
table cms_cluster.student;
- 启动ext1进程
add extract ext1,tranlog,begin now
add exttrail /home/oracle/ogg/dirdat/e1,extract ext1
start ext1
【上图说明EXT1进程启动成功】
- 创建pump进程
edit params push
extract push
setenv(NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
passthru
userid ggs,password ggs
rmthost 100.100.100.211,mgrport 7809
rmttrail C:\soft\ogg\dirdat\e1
table HDKG.M_ACT;
[文件最后四行的参数值要注意是源库还是目标库的]
- 启动push进程
add extract push,exttrailsource /home/oracle/ogg/dirdat/e1
add rmttrail C:\soft\ogg\dirdat\e1,extract push
start push
[上图说明push进程启动成功]
- 创建要同步表的定义
edit param test
文件内容如下:
defsfile ./dirdef/test.def
userid ggs, password ggs
table HDKG.M_ACT;
[都是源库的配置]
- 退出ogg命令行
exit
- 生成表定义文件
cd /home/oracle/ogg
./defgen paramfile ./dirprm/test.prm
- 将生成的test.def (/home/oracle/ogg/dirdef/test.def) 文件传至目标库ogg目录(C:\soft\ogg\dirdef)
2)目标端:MYSQL (100.100.100.211)
- 创建管理进程
#进入mysql ogg目录(C:\soft\ogg),双击ggsci.exe程序
edit params mgr
文件内容如下:
PORT 7809
DYNAMICPORTLIST 7810-7909
--AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS C:\soft\ogg\dirdat\*,usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
ACCESSRULE, PROG SERVER, ALLOW
- 启动管理进程
start mgr
[上图说明MGR启动成功]
- 配置global
edit params ./GLOBALS
[文件内容]
ENABLEMONITORING
checkpointtable atc.checkpoint_table
- 配置检查点
dblogin sourcedb atc@100.100.100.211:3306 userid ggt password ggt
add checkpointtable atc.checkpoint_table
info checkpointtable atc.checkpoint_table
[在数据库atc中可以看到checkpoint_table表]
- 创建replicat进程
edit params REP1
文件内容如下:
replicat rep1
sourcedefs C:\soft\ogg\dirdef\test.def
TARGETDB atc@100.100.100.211:3306,userid ggt,password ggt
reperror default,discard
discardfile C:\soft\ogg\dirrpt\rep1.dsc,append,megabytes 50
allownoopupdates
map HDKG.M_ACT,target atc.m_act;
- 启动rep1进程
add replicat rep1,exttrail C:\soft\ogg\dirdat\e1,checkpointtable atc.checkpoint_table
start rep1
[说明rep1启动成功]
5.验证数据是否实时同步
- 在ORACLE库表 HDKG.M_ACT添加数据(ID为1,NAME为C919)
- 查看mysql是否自动添加
【自动同步成功】
ORACLE(Linux版本)实时同步数据到MYSQL(Windows版本)解决方案:OGG相关推荐
- ORACLE(Linux版本)实时同步数据到MYSQL(Linux版本)解决方案:OGG
OGG:Oracle GoldenGate 目录 1.源库与目标库环境(这里是部署到同一台服务器上) 源库环境:Oracle 11.2.0.1.0 + Red Hat Enterprise Linux ...
- Oracle同步数据到MySQL
Oracle同步数据到MySQL 1.首先在TreeSoft数据库中配置两个数据源信息 2.配置数据同步任务,并执行任务 3.同步结果数据查看确认 4.目前TreeSoft支持以下数据同步方案 1.M ...
- 跨系统实时同步数据解决方案
数据量太大,单存储节点存不下,就只能把数据分片存储. 数据分片后,对数据的查询就没那么自由.如订单表按用户ID作为Sharding Key,就只能按用户维度查询.我是商家,我想查我店铺的订单,做不到. ...
- inotify实时同步数据
实时同步服务 如何实现数据实时同步? 2.1.1 实现数据同步通过(利用rsync服务) rsync服务端部署 rsync客户端部署 2.1.2 实现数据实时监控(利用inotify) inotify ...
- Sqoop 同步数据到mysql, Can't parse input data: '\N'
Sqoop 同步数据到mysql Sqoop 从hdfs 同步数据到mysql 是我们常常遇到的事情 同步分为 分区表同步和非分区表同步 需要注意以下几点 1. hive 中的表 必须是textfi ...
- rsync+sersync实时同步数据
前言 rsync+sersync实时同步数据. 简介 rsync+sersync实时同步数据的原理是在客户端安装sersync监控目录的变化,一般是增删改,检测到变化以后,将变化的文件同步到服务端. ...
- 局域网内两台SQL Server电脑如何实时同步数据
局域网内两台SQL Server电脑如何实时同步数据 2007-04-10 15:56 在数据库事务处理系统中,数据的同步性问题非常重要,下面我们来建立一个能检测数据同步性的存储过程. ...
- Oracle通过kafka同步数据到MySQL
场景 Oracle同步数据最佳的解决方案是自家的ogg,但是考虑到成本,需要找到其他的解决方案.如果是MySQL通过kafka同步,问题简单的多,因为阿里巴巴的开源数据同步方案--canel是最佳的解 ...
- Oracle 补充日志分类和相关操作, logminer cdc实时同步数据变化,提取归档日志进行数据挖掘,相关代码实现
文章目录 一.前情: 二.LogMiner介绍: 三.logminer解析前提: 3.1 开启归档模式 3.2 启用补充日志 (1)补充日志分类 1.1 最小补充日志:最基本的一种数据库级补充日志: ...
最新文章
- 计算机应用基础试题及答案试卷号7074,阅读文章,完成试题。后来才知道,在这千钧一发的时刻,是郝副营长划着了火柴,点燃了那本书,举得高高的, - 学进去中小学试卷试题库...
- IntelliJ IDEA 2020.2.4款 神级超级牛逼插件推荐
- python播放视频
- AttributeError:module 'numbers' has no attribute 'Integral'.
- 计算机模拟眼科手术原理,眼科病床的合理安排(计算机模拟实例).pdf
- 查一个字段中字符集超过30的列_详细解读MySQL的30条军规
- JAVA minaio模型_分布式系统之Java IO模型
- MySQL Replication Error 处理一例
- python3之urllib代理池
- CentOS 升级现有PHP版本
- 程序员的炫酷动态科幻桌面壁纸
- JAVA垃圾回收机制
- WIFI原理,WIFI6各代介绍 2020-11-23
- 2019“我爱北京——市民新春联欢会”将现300人大合唱
- 人工智能AI工程师学习路线心路历程和总结分享
- matlab from workplace,关于使用From workspace的问题
- CAD偏移曲线(网页版)
- CVPR 2020 | 旷视研究院探究优化场景文字识别的「词汇依赖」问题
- 运算放大器单电源供电和双电源供电
- 读取BIL格式高光谱数据——C/C++
热门文章
- 漫谈广告竞价模式(一)
- 工程数学(数值分析)第一讲:误差
- TensorFlow2.0:张量限幅
- G-TAD: Sub-Graph Localization for Temporal Action Detection
- 在基于对话框的MFC创建状态栏以及添加时间显示
- LeetCode刷题(47)--Gray Code
- Mysql更新计数器_MySQL实现计数器如何在高并发场景下更新并保持数据正确性
- 手把手教你启动若依前后端分离项目
- JS, CSS 文件压缩与反压缩工具
- JAVA泛型只能用引用类型_Java泛型和设计模式:不参数化对泛型类型的引用总是一件坏事吗?...