iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >千万级oracle数据表定时同步到mysql表的方案
  • 738
分享到

千万级oracle数据表定时同步到mysql表的方案

oraclemysql数据库 2023-09-16 10:09:39 738人浏览 安东尼
摘要

1:业务背景 第三方系统提供了一张oracle视图,该视图有六千多万条数据,后续每月会产生三百万条数据的数据。需要每天将数据定时同步到自己系统的Mysql表中。 (注:我们系统与外界系统访问都要经过一个中间系统的跳转才行。流程如下: 我们系

1:业务背景

第三方系统提供了一张oracle视图,该视图有六千多万条数据,后续每月会产生三百万条数据的数据。需要每天将数据定时同步到自己系统的Mysql表中。

(注:我们系统与外界系统访问都要经过一个中间系统的跳转才行。流程如下: 我们系统A发起请求  ----> 进入网关系统跳转  --->获得第三方oracle的数据)。

2:解决思路

2.1:通过数据库管理软件先把历史数据导出为excel表格数据

2.2:通过代码层面采用odbc驱动进行每天的数据同步。

3:该方案遇见的问题

3.1:历史的数据处理中oracle与mysql通过sql导入导出不兼容。

解决方法:将数据导出为excel格式,然后通过excel导入数据到mysql

3.2:新增大量数据通过代码每天同步时会不会导致内存溢出。

解决方法:采用分批同步数据来保证服务器内存不会溢出,先获取新增的数据总量,然后通过手动分页进行控制每次同步的数据量。

3.3:数据同步过程中会不会出现重复同步以及遗漏同步。

解决方法:应对重复数据可以采用给mysql表创建一个唯一索引来进行限制重复数据。应对遗漏的数据可以手写一个预留接口通过传递日期来进行随时同步遗漏数据的日期。也可以采用定时任务每天多次调用接口同步数据提高数据的准确性(因为有唯一索引所以多次同步 不会导致数据重复,但会消耗服务器资源)。

4:详细实现步骤

4.1导出历史数据

先通过数据库管理软件把oracle的数据全部查询出来。然后点击软件“导出结果”--->导出当前的结果。

 

 

 此处我选择的导出数据为csv格式,该格式进行大数据处理相对速度要快一点。导出oracle历史数据后,把csv文件导入到mysql的数据表中。此时历史数据就解决了。

4.2:每天新增的几百万数据处理

 1:通过定时任务注解@Scheduled实现自动调用同步接口。

通过Http方法来同步调用网关系统获取第三方数据保证每次调用都是同步实现。

网关系统通过oracle.jdbc.driver.OracleDriver驱动远程调用第三方oracle数据。

 

同步数据时,先调用oracle来获取当天需要新增的数据总量,然后通过for循环+分页来批量同步数据防止内存溢出。同步过程出现异常可采取手动补救措施进行二次同步。或采用多次定时任务来保证数据准确性减少人为干预次数。

数据同步时,由于mysql对处理大数据量有瓶颈,所以建表时需要慎重考虑每个字段的存储类型来减少存储空间,对查询需求建立合理的索引来保证查询速度。

如何建立正确的索引可参考我的另一篇博客:

https://blog.csdn.net/wang5701071/article/details/108797859

此时oracle数据表定时同步到mysql表已经实现。但后续还引发了一些思考。

5:后续思考

目前数据量已经有近七千万条数据,按每月三百万的数据来处理。一年时间就将达到上亿的数据量,而mysql的单表数据到一亿就达到了处理瓶颈。所以该方案后续可能还要采用分表处理。按月或者按年来进行分表存储。

历史数据中如果出现了修改,此时该方案只能感知到未同步的数据,而无法感知已同步过的历史数据的变动。所以该方案并不适合历史数据频繁修改的场景。

来源地址:https://blog.csdn.net/wang5701071/article/details/130553994

您可能感兴趣的文档:

--结束END--

本文标题: 千万级oracle数据表定时同步到mysql表的方案

本文链接: https://www.lsjlt.com/news/409710.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作