本公开涉及大数据技术领域,具体公开了一种数据库的同步方法、装置、计算机设备、存储介质和计算机程序产品,其中方法通过获取对目标数据库的操作,当确定操作为目标操作时,将目标操作封装成对应的JSON消息,并确定操作对应的主题,根据主题将JSON消息存储在消息队列的对应分区中,进而在待同步数据库执行各分区中JSON消息对应的操作,从而更新待同步数据库。由于本实施例通过监听数据库的操作,并将监听到的目标操作封装成JSON消息按区存储,进而按区消费并在待同步数据库执行JSON消息,从而可以实现数据库间的双向同步,且不依赖于数据库的支持,对主流数据库都具有普适性,能够从根本上解决数据库的双向同步问题。本上解决数据库的双向同步问题。本上解决数据库的双向同步问题。
【技术实现步骤摘要】
数据库的同步方法、装置、计算机设备以及存储介质
[0001]本申请涉及大数据
,特别是涉及一种数据库的同步方法、装置、计算机设备、存储介质和计算机程序产品。
技术介绍
[0002]随着网络技术的发展,数据量也呈指数级别的增长,互联网及金融系统中单体应用连接单个数据库的方式,已无法满足数据量快速增长的需求。而大数据技术的出现,使得系统可以通过分布式应用来解决高并发及大数据量问题。其通过将单体应用系统拆分成各个子系统,使得各个子系统连接独立数据库,彼此通过API接口(Application Programming Interface,应用程序编程接口)调用串联业务逻辑,以对外提供服务。
[0003]在单体应用向分布式应用过渡的过程中,对外存在新、旧服务并行的过渡态,不仅需要保证业务功能不能中断,且在技术层面需要保证用户通过新、旧服务访问的数据同步,即在原单体应用所连的主数据库和拆分后的子系统所连的子数据库一致。
[0004]传统技术中,关系型数据库管理系统(MySQL)可以实现主从复制。但MySQL的主从复制依赖于数据库的支持,且只支持将主库数据同步到从库(即子数据库),而不支持将从库的数据同步到主库。且当网络无法直连的情况下两个数据库无法同步。因此,传统的MySQL的主从复制方式受到了较多限制,且无法实现主数据库与从数据库之间的双向同步。
技术实现思路
[0005]基于此,有必要针对上述技术问题,提供一种能够实现数据库间双向同步的数据库的同步方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
[0006]第一方面,本申请提供了一种数据库的同步方法。所述方法包括:
[0007]获取对目标数据库的操作;
[0008]当确定所述操作为目标操作时,将所述目标操作封装成对应的JSON消息;
[0009]确定所述操作对应的主题,根据所述主题将所述JSON消息存储在消息队列的对应分区中;
[0010]在待同步数据库执行各分区中所述JSON消息对应的操作,更新所述待同步数据库;当所述目标数据库为主数据库时,所述待同步数据库为子数据库,当所述目标数据库为子数据库时,所述待同步数据库为主数据库。
[0011]在其中一个实施例中,所述获取对目标数据库的操作,包括:当监听到对目标数据库的操作为事务操作时,采用线程变量记录所述事务操作;当所述事务操作结束时,将记录的所述事务操作确定为目标操作。
[0012]在其中一个实施例中,所述将记录的所述事务操作确定为目标操作之后,所述方法还包括:从所述线程变量中删除所述事务操作。
[0013]在其中一个实施例中,所述方法还包括:当所述事务操作回滚时,从所述线程变量中删除所述事务操作。
[0014]在其中一个实施例中,所述获取对目标数据库的操作,包括:当监听到对目标数据库的操作为非事务操作时,确定所述非事务操作为目标操作。
[0015]在其中一个实施例中,所述确定所述操作对应的主题,包括:所述操作中携带有待操作数据表的标识和/或待操作数据所属的账户标识,根据所述待操作数据表的标识和/或所述账户标识确定所述操作对应的主题。
[0016]在其中一个实施例中,所述在待同步数据库执行各分区中所述JSON消息对应的操作,包括:在所述待同步数据库,对所述各分区中所述JSON消息对应的操作按设定数量批量执行。
[0017]在其中一个实施例中,所述方法还包括:当批量执行失败时,对批量执行失败的所述分区中的所述JSON消息对应的操作进行逐条执行;记录每一条操作的执行结果,所述执行结果包括执行成功或执行失败的结果。
[0018]在其中一个实施例中,所述方法还包括:当所述执行结果为执行失败时,发送失败告警信息。
[0019]第二方面,本申请还提供了一种数据库的同步装置。所述装置包括:
[0020]操作获取模块,用于获取对目标数据库的操作;
[0021]消息封装模块,用于当确定所述操作为目标操作时,将所述目标操作封装成对应的JSON消息;
[0022]消息存储模块,用于确定所述操作对应的主题,根据所述主题将所述JSON消息存储在消息队列的对应分区中;
[0023]更新模块,用于在待同步数据库执行各分区中所述JSON消息对应的操作,更新所述待同步数据库;当所述目标数据库为主数据库时,所述待同步数据库为子数据库,当所述目标数据库为子数据库时,所述待同步数据库为主数据库。
[0024]第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上第一方面所述方法的步骤。
[0025]第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上第一方面所述方法的步骤。
[0026]第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面所述方法的步骤。
[0027]上述数据库的同步方法、装置、计算机设备、存储介质和计算机程序产品,通过获取对目标数据库的操作,当确定操作为目标操作时,将目标操作封装成对应的JSON消息,并确定操作对应的主题,根据主题将JSON消息存储在消息队列的对应分区中,进而在待同步数据库执行各分区中JSON消息对应的操作,从而更新待同步数据库。由于本实施例通过监听数据库的操作,并将监听到的目标操作封装成JSON消息按区存储,进而按区消费并在待同步数据库执行JSON消息,从而可以实现数据库间的双向同步,且不依赖于数据库的支持,对主流数据库都具有普适性,能够从根本上解决数据库的双向同步问题。
附图说明
[0028]图1A为一个实施例中传统数据库同步的架构图;
[0029]图1B为另一个实施例中传统数据库同步的架构图;
[0030]图2为又一个实施例中传统数据库同步的架构图;
[0031]图3为一个实施例中数据库的同步方法的流程示意图;
[0032]图4为一个实施例中获取对目标数据库的操作步骤的流程示意图;
[0033]图5为一个实施例中数据库的同步方法的应用系统示意图;
[0034]图6为一个实施例中数据库的同步方法交互示意图;
[0035]图7为一个实施例中数据库的同步装置的结构框图;
[0036]图8为一个实施例中计算机设备的内部结构图。
具体实施方式
[0037]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0038]传统技术中,主流的数据库同步包括如下方式:
[0039]1、基于数据库层面的数据同步
[0040]例如,如图1A及图1B所示的MySQL主从复制,主库通过将事务操作本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种数据库的同步方法,其特征在于,所述方法包括:获取对目标数据库的操作;当确定所述操作为目标操作时,将所述目标操作封装成对应的JSON消息;确定所述操作对应的主题,根据所述主题将所述JSON消息存储在消息队列的对应分区中;在待同步数据库执行各分区中所述JSON消息对应的操作,更新所述待同步数据库;当所述目标数据库为主数据库时,所述待同步数据库为子数据库,当所述目标数据库为子数据库时,所述待同步数据库为主数据库。2.根据权利要求1所述的方法,其特征在于,所述获取对目标数据库的操作,包括:当监听到对目标数据库的操作为事务操作时,采用线程变量记录所述事务操作;当所述事务操作结束时,将记录的所述事务操作确定为目标操作。3.根据权利要求2所述的方法,其特征在于,所述将记录的所述事务操作确定为目标操作之后,所述方法还包括:从所述线程变量中删除所述事务操作。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:当所述事务操作回滚时,从所述线程变量中删除所述事务操作。5.根据权利要求1所述的方法,其特征在于,所述获取对目标数据库的操作,包括:当监听到对目标数据库的操作为非事务操作时,确定所述非事务操作为目标操作。6.根据权利要求1所述的方法,其特征在于,所述确定所述操作对应的主题,包括:所述操作中携带有待操作数据表的标识和/或待操作数据所属的账户标识,根据所述待操作数据表的标识和/或所述账户标识确定所述操作对应的主题。7.根据权利要求1至6任一项所述的方法,其特征在于,所述在待同步数据库执行各分区中所述JSON消息对应的操...
【专利技术属性】
技术研发人员:李晶,邓玉,江魁栋,李尚真,彭宙硕,苏建标,
申请(专利权)人:建信金融科技有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。