oracle迁移到mysql方案 oracle转mysql数据移植

本文目录:一、OGG概述(一)OGG逻辑架构二、迁移方案(一)环境信息(二)表结构迁移(三)数据迁移1.源端OGG配置(1)Oracle数据库配置(2)Oracle数据库OGG用户创建(3)源端OGG 管理进程(MGR)配置(4)源端OGG 表级补全日志(trandata)配置(5)源端OGG 抽取进程(extract)...

本文目录:

一、OGG概述

(一)OGG逻辑架构

二、迁移方案

(一)环境信息

(二)表结构迁移

(三)数据迁移

1.源端OGG配置

(1)Oracle数据库配置

(2)Oracle数据库OGG用户创建

(3)源端OGG 管理进程(MGR)配置

(4)源端OGG 表级补全日志(trandata)配置

(5)源端OGG 抽取进程(extract)配置

(6)源端OGG 传输进程(pump)配置

(7)源端OGG 异构***pping文件(defgen)生成

2.目标端OGG配置

(1)目标端MySQL数据库配置

(2)目标端OGG 管理进程(MGR)配置

(3)目标端OGG 检查点日志表(checkpoint)配置

(4)目标端OGG 回放线程(replicat)配置

3.全量同步配置

(1)源端OGG 全量抽取进程(extract)配置

(2)目标端OGG 全量回放进程(replicat)配置

三、数据校验

四、迁移问题处理

(一)MySQL限制

(二)全量与增量衔接

(三)OGG版本选择

(四)无主键表处理

(五)OGG安全规则

(六)数据抽取方式

五、OGG参考资料

一、OGG概述

(一)OGG逻辑架构

参照上图简单给大家介绍下OGG逻辑架构,让大家对OGG数据同步过程有个简单了解,后面章节会详细演示相关进程的配置方式,在OGG使用过程中主要涉及以下进程及文件:

Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程,报告错误,分配及清理数据存储空间,发布阈值报告等Extract进程:运行在数据库源端,主要用于捕获数据的变化,负责全量、增量数据的抽取Trails文件:临时存放在磁盘上的数据文件Data Pump进程:运行在数据库源端,属于Extract进程的一个辅助进程,如果不配置Data Pump,Extract进程会将抽取的数据直接发送到目标端的Trail文件,如果配置了Data Pump,Extract进程会将数据抽取到本地Trail文件,然后通过Data Pump进程发送到目标端,配置Data Pump进程的主要好处是即使源端到目标端发生网络中断,Extract进程依然不会终止Collector进程:接收源端传输过来的数据变化,并写入本地Trail文件中Replicat进程:读取Trail文件中记录的数据变化,创建对应的DML语句并在目标端回放

二、迁移方案

(一)环境信息

(二)表结构迁移

注意:OGG在Oracle迁移MySQL的场景下不支持DDL语句同步,因此表结构迁移完成后到数据库切换前尽量不要再修改表结构。

(三)数据迁移

1.源端OGG配置

(1)Oracle数据库配置

查看当前环境是否满足要求,输出结果如下图所示:

如果条件不满足则实行该部分,

(2)Oracle数据库OGG用户创建

(3)源端OGG 管理进程(MGR)配置

(4)源端OGG 表级补全日志(trandata)配置

(5)源端OGG 抽取进程(extract)配置

(6)源端OGG 传输进程(pump)配置

补充:pump进程启动时需要与目标端的mgr进程进行连接,所以需要优先将目标端的mgr提前配置好,否则会报错连接被拒绝,无法传输抽取的日志文件到目标端对应目录下

(7)源端OGG 异构***pping文件(defgen)生成

至此源端环境配置完成

2.目标端OGG配置

(1)目标端MySQL数据库配置

确认MySQL端表结构已经存在MySQL数据库OGG用户创建

(2)目标端OGG 管理进程(MGR)配置

(3)目标端OGG 检查点日志表(checkpoint)配置

(4)目标端OGG 回放线程(replicat)配置

注意:replicat进程只需配置完成,无需启动,待全量抽取完成后再启动。

至此源端环境配置完成

待全量数据抽取完毕后启动目标端回放进程即可完成数据准实时同步。

3.全量同步配置

(1)源端OGG 全量抽取进程(extract)配置

(2)目标端OGG 全量回放进程(replicat)配置

三、数据校验

数据校验是数据迁移过程中必不可少的环节,本章节提供给几个数据校验的思路共大家参数,校验方式可以由以下几个角度去实现:

1.通过OGG日志查看全量、增量过程中discards记录是否为0来判断是否丢失数据;

2.通过对源端、目标端的表执行count判断数据量是否一致;

3.编写类似于pt-table-checksum校验原理的程序,实现行级别一致性校验,这种方式优缺点特别明显,优点是能够完全准确对数据内容进行校验,缺点是需要遍历每一行数据,校验成本较高;

4.相对折中的数据校验方式是通过业务角度,提前编写好数十个返回结果较快的SQL,从业务角度抽样校验。

四、迁移问题处理

(一)MySQL限制

在Oracle到MySQL的表结构迁移过程中主要碰到以下两个限制:

1. Oracle端的表结构因为最初设计不严谨,存在大量的列使用varchar(4000)数据类型,导致迁移到MySQL后超出行限制,表结构无法创建。由于MySQL本身数据结构的限制,一个16K的数据页最少要存储两行数据,因此单行数据不能超过65,535 bytes,因此针对这种情况有两种解决方式:

根据实际存储数据的长度,对超长的varchar列进行收缩;对于无法收缩的列转换数据类型为text,但这在使用过程中可能导致一些性能问题;

2. 与第一点类似,在Innodb存储引擎中,索引前缀长度限制是767 bytes,若使用DYNAMIC、COMPRESSED行格式且开启innodblargeprefix的场景下,这个限制是3072 bytes,即使用utf8mb4字符集时,最多只能对varchar(768)的列创建索引;

3. 使用ogg全量初始化同步时,若存在外键约束,批量导入时由于各表的插入顺序不唯一,可能子表先插入数据而主表还未插入,导致报错子表依赖的记录不存在,因此建议数据迁移阶段禁用主外键约束,待迁移结束后再打开。

(二)全量与增量衔接

目标端不存在delete语句的记录,忽略该问题并不记录到discardfile目标端丢失update记录- 更新的是主键值,update转换成insert- 更新的键值是非主键,忽略该问题并不记录到discardfile目标端重复insert已存在的主键值,这将被replicat进程转换为UPDATE现有主键值的行

(三)OGG版本选择

(四)无主键表处理

(五)OGG安全规则

报错信息

错误信息含义源端报错表示为该抽取进程需要和目标端的mgr进程通讯,但是被拒绝,具体操作为:源端的extract进程需要与目标端mgr进行沟通,远程将目标的replicat进行启动,由于安全性现在而被拒绝连接。

报错原因

在Oracle OGG 11版本后,增加了新特性安全性要求,如果需要远程启动目标端的replicat进程,需要在mgr节点增加访问控制参数允许远程调用

解决办法

在源端和目标端的mgr节点上分别增加访问控制规则并重启

(六)数据抽取方式

报错信息报错原因

根据官方文档说明,当前直接通过Oracle数据库抽取数据写到MySQL这种initial-load方式,不支持LOBs数据类型,而表
UNIONPAYCMS.CMSOTCONTENT_RTF 则包含了CLOB字段,无法进行传输,并且该方式不支持超过4k的字段数据类型

解决方法

将抽取进程中的RMTTASK改为RMTFILE参数 官方建议将数据先抽取成文件,再基于文件数据解析进行初始化导入

五、OGG参考资料

本文来自幻墨如烟投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/633935.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 07-14
下一篇 07-14

相关推荐

  • mysql驱动jar包怎么装 mysql驱动包与mysql版本

    当您使用Idea和PyCharm连接到MySQL时,可能会遇到以下错误:服务器返回无效时区。去’高级’标签和设置‘serverTimezone & # 8217属性。今天我整理几个解决方案,供大家参考。首先我们来定位一下原因:原因:服务器返回了无效的时区。转到“高级”选项卡,手动设

    2023-07-28 06:51:01
    998 0
  • html连接mysql数据库PHP eclipse连接mysql数据库步骤

    将模拟仿真数据插入Mysql数据库有时候,我们在测试网站的时候需要大量的仿真数据,但是php并没有提供生成仿真数据的工具。这个时候我想到了mockjs可以生成仿真数据。能否将Mockjs生成的仿真数据填充到数据库中?然后开始工作:例如,mysql数据库表是以下字段:因此,参考模拟文

    2023-07-27 10:17:01
    190 0
  • mysql最新版安装教程 mysql数据库建表方法

    升级版本选择原则和建议MySQL的升级需要遵循以下几条原则和建议:支持从MySQL5.7升级到8.0,注意仅支持GA版本之间的升级。不支持跨大版本的升级,如从5.6升级到8.0是不支持的。建议升级大版本前先升级到当前版本的最近小版本,如5.7先升级到5.7.35后再升级到8.0。在大版本内部

    2023-07-25 19:46:01
    968 0
  • mysql客户端哪个好用 最好的MySQL客户端推荐

    我们在选择工具的时候,往往会优先考虑那些免费的,好用的!Navicat作为一款付费软件,功能强大,但并不能阻止我们探索新的工具。最近体验了MySQL的官方客户端工具MySQL Workbench。本文将它与Navicat进行对比,看它能否取代Navicat!固定我们先安装MySQL Workbench。上面有个

    2023-07-22 08:56:01
    982 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信