[发明专利]实现实时关系型数据库数据同步的方法在审
申请号: | 202110805505.5 | 申请日: | 2021-07-16 |
公开(公告)号: | CN113407638A | 公开(公告)日: | 2021-09-17 |
发明(设计)人: | 洪俊 | 申请(专利权)人: | 上海通联金融服务有限公司 |
主分类号: | G06F16/27 | 分类号: | G06F16/27;G06F16/28;G06F9/54 |
代理公司: | 上海翰信知识产权代理事务所(普通合伙) 31270 | 代理人: | 张维东 |
地址: | 200437 上海市虹口*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实现 实时 关系 数据库 数据 同步 方法 | ||
本发明提供了一种实现实时关系型数据库数据同步的方法,该方法包括以下步骤:同步过程:对主库数据进行增删改操作时,Java应用层抓取对主库进行增删改的操作,对主库执行所述增删改操作,并异步发送所述增删改的操作到消息队列,同步进程到从库中,所述从库执行所述增删改的操作;补偿进程:设定定时检查时间,定时检查,若发现有超过预定时间还未能同步到所述从库的增删改操作,则重新将未同步到从库的数据的增删改操作同步到从库中直至从库中数据更新完成,本发明可支持所有关系型数据库、主从表结构可以不一致、从库可以不是严格的只读库、可多线程处理、可双向同步且容错性高。
技术领域
本发明属于数据存储技术领域,具体涉及一种实现实时关系型数据库数据同步的方法。
背景技术
读写分离是一种常见的解决关系型数据库性能的技术。如图1所示,需要读写的应用访问主库,只需要读数据的应用访问从库。主库、从库之间通过数据复制进行数据上的同步,保证主从库数据一致。此处数据同步是读写分离的关键技术。
目前,业界常用的方式是通过关系型数据库的日志机制,将主库的数据库日志发送到从库,在从库中回放执行实现。这个方法存在以下几个缺点:
1、日志同步需要数据库底层支持,对于商用数据库往往需要商用软件支持,需要增加成本。
2、通常要求主从库表结构一致。
3、通常要求从库严格只读。
4、通常单线程同步,同步性能受限。
发明内容
本发明是为了解决上述问题而进行的,目的在于提供一种可支持所有关系型数据库、主从表结构可以不一致、从库可以不是严格的只读库、可多线程处理、可双向同步且容错性高的实现实时关系型数据库数据同步的方法。
本发明提供了一种实现实时关系型数据库数据同步的方法,其特征在于,包括以下步骤:
同步过程:对主库数据进行增删改操作时,Java应用层抓取对主库进行增删改的操作,对主库执行所述增删改操作,并异步发送所述增删改的操作到消息队列,同步进程到从库中,所述从库执行所述增删改的操作;
补偿进程:设定定时检查时间,定时检查,若发现有超过预定时间还未能同步到所述从库的增删改操作,则重新将未同步到从库的数据的增删改操作同步到从库中直至从库中数据更新完成。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:抓取主库更新的数据时是Java应用程序通过ORM层插件抓取。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:所述消息队列为Kafka。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:当Java应用层抓取到对主库进行增删改的操作后,将抓取到的增删改操作的同步状态修改为“待同步”/“待删除”,所述从库执行所述增删改的操作并同步完成后返回同步结果,同步结果包括“已同步”/“同步失败”/“删除失败”,根据同步结果更新同步状态,
当Java应用层抓取到对主库进行增删改的操作后,同时将系统当前时间添加到抓取的增删改的操作中作为最后修改时间。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:当需要同步到多个从库时,将同步状态的字段改为变长字段,其中所述变长字段中每一位代表一个从库的更新状态。
进一步,在本发明提供的实现实时关系型数据库数据同步的方法中,还可以具有这样的特征:所述补偿进程发现有未能同步到所述从库的增删改操作是通过同步状态、最后修改时间和当前时间确定的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海通联金融服务有限公司,未经上海通联金融服务有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110805505.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:行走时腰腹运动辅助机构
- 下一篇:一种医用恒温血液混匀器