详解MySQL实时同步到Oracle解决方案


本文整理自网络,侵删。

1 需求概述

将MySQL5.6生产库多张表的数据实时同步到Oracle11g数据仓库,MySQL历史数据700G,平均每天产生50G左右日志文件,MySQL日志空间50G,超过后滚动删除日志文件。整个同步过程不可影响MySQL业务操作。

2 技术原理

采用灵蜂数据集成软件BeeDI将MySQL数据实时同步到Oracle,通过ETL全量同步历史数据,通过日志解析方式实时同步增量数据。

受限于日志空间,如果将所有历史数据一次性同步,需要的时间会超过一天,全量同步过程产生的日志会被删除,造成实时日志解析任务数据缺失,所以需要分批同步历史数据,基本操作如下:

a 全量同步部分表。

b 在实时日志解析任务中添加已全量同步完成的表并启动任务,当MySQL和Oracle两端对应表数据一致时,停止日志解析任务。

重复上面a和b步骤,直到所有表都加入实时日志解析任务。

3 MySQL环境配置

3.1 创建用户

在主库创建同步用户,以用户sync为例,创建用户及权限分配语句如下:

CREATE USER 'sync'@'%' IDENTIFIED BY 'xxxxx';

GRANT SELECT,PROCESS,SUPER, REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'sync'@'%';

3.2 启用BinLog

查询主库日志开启状态及日志记录格式:

show variables like 'log_bin';

show variables like "%binlog_format%";

如果日志状态为OFF或日志记录格式不为ROW,则编辑my.ini文件,设置以下项目内容:

log-bin="xxxxxx" --开启日志

binlog_format="ROW" --日志记录格式

4 BeeDI同步操作

4.1 配置全量同步任务

在BeeDI中新建ETL作业,在【ETL模板属性】对话框的【映射属性】中设置【LOB装载】为绑定存储。

【LOB装载】用于指定Oracle LOB数据载入方式,定位存储通过定位LOB指针更新LOB内容,绑定存储通过参数绑定方式更新LOB内容。

为优化数据抽取性能,建议在抽取组件的【选项】对话框中设置【异步】抽取模式。

为优化数据加载性能,建议在装载组件的【选项】对话框中选择【批量】装载模式。

阅读剩余部分

相关阅读 >>

mysql的查询优化详解

关于mysql explain中key_len的计算方法讲解

mysql定义异常和异常处理详解

mysql到底支不支持事务嵌套?

mysql使用两种方法解决远程连接失败的问题

分析优化mysql 多表联合查询效率

mysql 权限控制细节分析

mysql开放远程连接权限的两种方法

mysql order by rand() 效率优化方法

mysql怎么删除数据库中的重复记录?

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...