我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

千万级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

免责声明:

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

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

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

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

下载Word文档

猜你喜欢

MySQL千万级数据的大表优化解决方案

目录1.数据库设计和表创建时就要考虑性能设计表时要注意:索引简言之就是使用合适的数据类型,选择合适的索引引擎2.sql的编写需要注意优化3.分区分区的好处是:分区的限制和缺点:分区的类型:4.分表5.分库mysql数据库中的表数据量几千万后
2022-11-20

mysql单表千万级数据查询的方法是什么

在处理千万级数据的单表查询时,可以采取以下方法来提高查询效率:使用合适的索引:在主键字段和经常用于查询的字段上创建索引,可以加快查询速度。但是要注意索引也会占用存储空间,并且会增加更新和插入操作的时间。避免全表扫描:尽量避免使用没有索引的字
mysql单表千万级数据查询的方法是什么
2024-03-02

python实现MySQL指定表增量同步数据到clickhouse的脚本

python实现MySQL指定表增量同步数据到clickhouse,脚本如下:#!/usr/bin/env python3 # _*_ coding:utf8 _*_from pymysqlreplication import BinLog
2022-05-14

利用python怎么将MySQL指定的表增量同步数据到clickhouse脚本

本篇文章为大家展示了利用python怎么将MySQL指定的表增量同步数据到clickhouse脚本,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python实现MySQL指定表增量同步数据到clic
2023-06-06

编程热搜

目录