文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-16 10:06

关注

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯