CN112241437A - 数据库多主同步的回环控制方法、装置、设备及存储介质 - Google Patents
数据库多主同步的回环控制方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112241437A CN112241437A CN202011468532.XA CN202011468532A CN112241437A CN 112241437 A CN112241437 A CN 112241437A CN 202011468532 A CN202011468532 A CN 202011468532A CN 112241437 A CN112241437 A CN 112241437A
- Authority
- CN
- China
- Prior art keywords
- data
- loop
- database
- synchronized
- log file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Abstract
本申请提供一种数据库多主同步的回环控制方法、装置、设备及存储介质,其中,数据库多主同步的回环控制方法包括:当接收到第一数据库操作日志文件时,解析所述第一数据库操作日志文件,得到待同步数据;根据所述待同步数据计算得到第一回环数据;将所述第一回环数据保存在内存空间中,获取第二数据库操作日志文件;解析所述第二数据库操作日志文件,并得到第二回环数据,将所述第一回环数据与所述第二回环数据进行比较,若所述第二回环数据与第一回环数据相同,则确定所述待同步数据为外部数据库同步过来的数据,并不将所述第二数据库操作日志文件发送至所述外部数据库。本申请具有同步效率高、占用磁盘空间小、稳定性高的优点。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种数据库多主同步的回环控制方法、装置、设备及存储介质。
背景技术
目前,现有技术中的一种数据库多主同步的回环控制方法是通过Mysql数据库的my.conf文件中的server-id配置判断是否终止回环,然而,这种方法只能在Mysql的原生双主同步中实现,无法基于多数据库的互相同步来处理,同时由于Mysql的原生双主同步内部是单线程进行同步,进而在异地同步,或者是需要更快的同步效率中,存在致命的性能问题。另一方面,为解决Mysql的性能问题,可以进行二次开发,即修改Mysql的源码,然而修改过程存在技术难度陡峭、可靠性和稳定性不可控的缺点。
现有技术中的还有一种数据库多主同步的回环控制方法是基于otter阿里巴巴分布式数据库同步系统实现回环控制,但是,otter阿里巴巴分布式数据库同步系统存在回环判断效率低、占用磁盘空间过大的缺点。
发明内容
本申请实施例的目的在于提供一种数据库多主同步的回环控制方法、装置、设备及存储介质,用于在实现数据库多主同步过程的回环控制,其具有同步效率高、占用磁盘空间小、稳定性高的优点。
为此,本申请第一方面公开一种数据库多主同步的回环控制方法,所述方法应用于内存数据库中,所述方法包括:
当接收到第一数据库操作日志文件时,解析所述第一数据库操作日志文件,得到待同步数据;
根据所述待同步数据计算得到第一回环数据;
将所述第一回环数据保存在内存空间中;
当根据所述待同步数据完成数据同步时,获取第二数据库操作日志文件;
解析所述第二数据库操作日志文件,并得到第二回环数据;
获取所述内存空间中的所述第一回环数据;
将所述第一回环数据与所述第二回环数据进行比较,若所述第二回环数据与第一回环数据相同,则确定所述待同步数据为外部数据库同步过来的数据,并不将所述第二数据库操作日志文件发送至所述外部数据库。
本申请第一方面的方法基于第一数据库操作日志文件和第二数据库操作日志文件可生成第一回环数据所述第二回环数据,进而可将第一回环数据与所述第二回环数据进行比较,其中,如果比较结果表示第一回环数据与所述第二回环数据相同,则表示当前数据库同步的数据来源于外部数据库,进而当前数据在同步完成后,无需再通知外部数据库进行同步。与现有技术相比,具有同步效率高、占用磁盘空间小、稳定性高的优点。
在本申请第一方面中,作为一种可选的实施方式,所述方法还包括:
当所述第二回环数据与第一回环数据不相同时,则确定所述待同步数据是本地数据,并将所述第二数据库操作日志文件发送至所述外部数据库,以使得所述外部数据库同步所述待同步数据。
在本申请第一方面,如果第二回环数据与第一回环数据不相同,则表示当前数据库是执行本地数据操作,进而在执行完数据同步后,需要再通知外部数据库同步相同数据。
在本申请第一方面中,作为一种可选的实施方式,所述方法还包括:
判断所述内存空间中是否存在所述第一回环数据,若不存在,则确定所述待同步数据是本地数据,并将所述第二数据库操作日志文件发送至所述外部数据库,以使得所述外部数据库同步所述待同步数据。
在本可选的实施方式,若内存空间中不存在所述第一回环数据,则表示当前数据库在前一时刻并没有接收外部数据库的同步数据,进而说明数据库当前时刻执行的是本地数据操作,从而当前数据库需要通知外部数据进行数据同步。
在本申请第一方面中,作为一种可选的实施方式,所述待同步数据包括数据库名、表名、主键ID、变更后的数据、第一数据库ID;
以及,所述根据所述待同步数据计算得到第一回环数据,包括:
计算所述变更后的数据的第一循环冗余校验码;
将所述数据库名、所述表名、所述主键ID、所述第一循环冗余校验码作为所述第一回环数据。
在本可选的实施方式中,可将数据库名、表名、主键ID、第一循环冗余校验码作为第一回环数据,进而确保第一回环数据与第二回环数据的比较准确性。
在本申请第一方面中,作为一种可选的实施方式,所述将所述第一回环数据保存在内存空间中,包括:
根据哈希数据结构将所述第一回环数据保存在内存空间中,其中,所述数据库名与所述表名的组合为所述哈希数据结构的标一级索引,所述主键ID为所述哈希数据结构的二级索引,所述第一循环冗余校验码和所述第一数据库ID为所述哈希数据结构的索引值。
在本可选的实施方式中,通过根据哈希数据结构将第一回环数据保存在内存空间中,能够提高数据读取速度,从而提高回环控制的整体性能。
在本申请第一方面中,作为一种可选的实施方式,所述将所述第一回环数据与所述第二回环数据进行比较,若所述第二回环数据与第一回环数据相同,则确定所述待同步数据为外部数据库同步过来的数据,包括:
将所述第一回环数据的索引值与所述第二回环数据的索引值进行比较;
当第一回环数据中的所述第一数据库ID与所述第二回环数据的第二数据库ID相等,且第一回环数据中的第一循环冗余校验码与所述第二回环数据的第二循环冗余校验码相等时,确定所述第二回环数据与所述第一回环数据相同,并确定所述待同步数据为外部数据库同步过来的数据。
在本可选的实施方式中,当第一回环数据中的第一数据库ID与第二回环数据的第二数据库ID相等,且第一回环数据中的第一循环冗余校验码与第二回环数据的第二循环冗余校验码相等时,能够确定第二回环数据与第一回环数据相同并终止回环,这样一来,能够进一步提高第一回环数据与第二回环数据的比较准确性。
在本申请第一方面中,作为一种可选的实施方式,所述方法还包括:
当所述第一回环数据与所述第二回环数据进行比较完毕后,删除所述内存空间中的所述第一回环数据。
在本可选的实施方式中,通过删除内存空间中的所述第一回环数据,能够回收内存资源,进一步降低存储控制占用率。
本申请第二方面公开一种数据库多主同步的回环控制装置,所述装置应用于内存数据库中,所述装置包括:
重放模块,用于当接收到第一数据库操作日志文件时,解析所述第一数据库操作日志文件,得到待同步数据;
回环预处理模块,用于根据所述待同步数据计算得到第一回环数据;
所述回环控制模块,还用于将所述第一回环数据保存在内存空间中;
第一获取模块,用于当根据所述待同步数据完成数据同步时,获取第二数据库操作日志文件;
解析模块,用于解析所述第二数据库操作日志文件,并得到第二回环数据;
第二获取模块,获取所述内存空间中的所述第一回环数据;
回环控制模块,用于将所述第一回环数据与所述第二回环数据进行比较,若所述第二回环数据与第一回环数据相同,则确定所述待同步数据为外部数据库同步过来的数据,并不将所述第二数据库操作日志文件发送至所述外部数据库。
本申请第二方面的装置能够基于第一数据库操作日志文件和第二数据库操作日志文件生成第一回环数据所述第二回环数据,进而可将第一回环数据与所述第二回环数据进行比较,其中,如果比较结果表示第一回环数据与所述第二回环数据相同,则表示当前数据库同步的数据来源于外部数据库,进而当前数据在同步完成后,无需再通知外部数据库进行同步。与现有技术相比,具有同步效率高、占用磁盘空间小、稳定性高的优点。
本申请第三方面公开一种数据库多主同步的回环控制设备,所述设备包括:
处理器;以及
存储器,配置用于存储机器可读指令,所述指令在由所述处理器执行时,使得所述处理器执本申请第一方面的数据库多主同步的回环控制方法。
本申请第三方面的设备能够基于第一数据库操作日志文件和第二数据库操作日志文件生成第一回环数据所述第二回环数据,进而可将第一回环数据与所述第二回环数据进行比较,其中,如果比较结果表示第一回环数据与所述第二回环数据相同,则表示当前数据库同步的数据来源于外部数据库,进而当前数据在同步完成后,无需再通知外部数据库进行同步。与现有技术相比,具有同步效率高、占用磁盘空间小、稳定性高的优点。
本申请第四方面的一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行本申请第一方面的数据库多主同步的回环控制方法。
本申请第四方面的存储介质能够基于第一数据库操作日志文件和第二数据库操作日志文件生成第一回环数据所述第二回环数据,进而可将第一回环数据与所述第二回环数据进行比较,其中,如果比较结果表示第一回环数据与所述第二回环数据相同,则表示当前数据库同步的数据来源于外部数据库,进而当前数据在同步完成后,无需再通知外部数据库进行同步。与现有技术相比,具有同步效率高、占用磁盘空间小、稳定性高的优点。
附图说明
图1是本申请实施例公开的一种数据库多主同步的回环控制方法的流程示意图;
图2是本申请实施例公开的一种数据库多主同步的回环控制装置的结构示意图;
图3是本申请实施例公开的一种数据库多主同步的回环控制设备的结构示意图。
具体实施方式
在详细介绍本申请实施例之前,请先参阅关于本申请实施例的应用背景介绍。
一个分布式系统,通常由多台服务器构成,且多台服务器之间的需要进行的数据同步,例如,需要将A服务器的数据同步到B服务器中。
在数据同步过程中,需要进行回环控制,例如,在一个分布式系统中,A服务器需要将数据同步到B服务器,B服务器也需要将数据同步到A服务器,这样一来,B服务器同步写入A服务器给的数据后,会产生新的binglog数据,此时,如果没有回环控制,会B服务器会将新的binglog再次发往A服务器,进而形成了数据回环。
目前,实现回环控制的方式包括如背景技术中提及的两种方式,第一种方式是基于Mysql数据库的my.conf文件实现,其中,Mysql数据库是一般将代码抽象成两个部分,一个部分是用户配置层,另一个部分是实现层,实现层一般可以视为是实现某种具体操作的函数集合,而用户配置层一般由配置文件组成,这样一来,实现层只需要根据配置文件即可执行某种操作而实现相应的功能,进而将一个操作的具体操作逻辑和该操作涉及的业务参数区别开,从而简化开发过程。但是,事实上,Mysql库中的实现层的函数、组件并不能够完全与具体业务需求相匹配,此时,开发人员通常需要基于Mysql库提供的基础组件、函数再次开发而形成满足业务需求的新函数、新组件,然而,由于Mysql库提供的基础组件、函数通常是有关联性或者由特定要求,开发人员难以掌握所有的关联关系和了解特定要求,进而导致了Mysql库二次开发存在技术陡峭的问题,且存在新函数、新组件不稳定的问题。
在现有技术中,Mysql数据库的my.conf文件就记录了用于实现回环控制所需的数据,具体地,my.conf文件中server-id字段用于记录数据产生服务器的标识,回环控制时,通过读取server-id字段的值确定一条数据(binglog数据)的来源,如果server-id字段的值表示数据由自身产生,则不根据该数据执行数据同步,如果server-id字段的值表示数据不是自身产生,则根据该数据执行数据同步。
然而,Mysql数据库针对my.conf文件实现的回环控制只能在原生双主同步模式中实现,即只能在两台均安装Mysql数据库的主服务器中实现回环控制,例如,如果其中一台服务器提供的是其他类型数据库,则该服务器无法提供my.conf文件对应的实现层,从而无法实现回环控制,再例如,如果一台服务器为主服务器,而另一台为从服务器,由于从服务器不会主动进行数据更新,进而从服务器是不会判断是否需要回环控制,即在主从这种单向数据同步模式中,Mysql数据库针对my.conf文件实现的回环控制不适用。需要说明的是,服务器的主从区分是根据服务器是否用于进行业务支撑来确定,例如,如果两台服务器均用于进行业务支撑,则两台服务器均为主服务器。
另一方面,Mysql数据库是基于单线程进行同步,进而在异地同步,或者是需要更快的同步效率的场景中,存在致命的性能问题。
现有的第二种实现回环控制的方式是使用otter阿里巴巴分布式数据库同步系统,其中otter是使用回环控制标记表retl.retl_mark记录数来源,但是在记录数据来源时,需要对该回环控制标记表操作两次,进而导致回环判断效率低、磁盘空间、磁盘IO消耗过大。
基于上述背景,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
实施例一
请参阅图1,图1是本申请实施例公开的一种数据库多主同步的回环控制方法的流程示意图。如图1所示,本申请实施例的数据库多主同步的回环控制方法包括:
101、当接收到第一数据库操作日志文件时,解析第一数据库操作日志文件,得到待同步数据;
102、根据待同步数据计算得到第一回环数据;
103、将第一回环数据保存在内存空间中;
104、当根据待同步数据完成数据同步时,获取第二数据库操作日志文件;
105、解析第二数据库操作日志文件,并得到第二回环数据;
106、获取内存空间中的第一回环数据;
107、将第一回环数据与第二回环数据进行比较,若第二回环数据与第一回环数据相同,则确定待同步数据为外部数据库同步过来的数据,并不将第二数据库操作日志文件发送至外部数据库。
本申请实施例的方法基于第一数据库操作日志文件和第二数据库操作日志文件可生成第一回环数据第二回环数据,进而可将第一回环数据与第二回环数据进行比较,其中,如果比较结果表示第一回环数据与第二回环数据相同,则表示当前数据库同步的数据来源于外部数据库,进而当前数据在同步完成后,无需再通知外部数据库进行同步。与现有技术相比,具有同步效率高、占用磁盘空间小、稳定性高的优点。具体地,一方面本申请实施例可以避免现有技术中第一种方式存在的稳定差、二次开发技术陡峭、同步效率低这类问题,另一方面,与otter相比,本申请实施例不需要针对retl.retl_mark表执行两次操作,从而可以降低binglog日志的数量而降低磁盘空间消耗、从而降低磁盘IO消耗。
在本申请实施例中,作为步骤101的一个示例,假设数据库A执行数据操作后,产生第一数据库操作日志文件(binglog),进而数据库A将第一数据库操作日志文件发送给B数据库,进而数据库B对第一数据库操作日志文件进行解析,得到待同步数据。
在本申请实施例中,作为一种可选的实施方式,本申请实施例的方法还包括步骤:
当第二回环数据与第一回环数据不相同时,则确定待同步数据是本地数据,并将第二数据库操作日志文件发送至外部数据库,以使得外部数据库同步待同步数据。
作为一种示例,假设B数据库当前时刻执行了一项数据操作,并生成了第二数据库操作日志文件,此时,根据第二数据库操作日志文件生成第二回环数据,进而将在上一时刻生成且保存在内存空间的第一回环数据进行比较,如果不相同,则说明B数据库当前执行的数据操作并不是A数据库同步通知的,进而需要控制B数据库在执行数据操作完毕后,通知A数据库执行。
在本申请实施例,可见,如果第二回环数据与第一回环数据不相同,则表示当前数据库是执行本地数据操作,进而在执行完数据同步后,需要再通知外部数据库同步相同数据。
在本申请实施例中,作为一种可选的实施方式,本申请实施例的方法还包括步骤:
判断内存空间中是否存在第一回环数据,若不存在,则确定待同步数据是本地数据,并将第二数据库操作日志文件发送至外部数据库,以使得外部数据库同步待同步数据。
在本可选的实施方式,若内存空间中不存在第一回环数据,则表示当前数据库在前一时刻并没有接收外部数据库的同步数据,进而说明数据库当前时刻执行的是本地数据操作,从而当前数据库需要通知外部数据进行数据同步。
在本申请实施例中,作为一种可选的实施方式,待同步数据包括数据库名、表名、主键ID、变更后的数据、第一数据库ID;
以及,根据待同步数据计算得到第一回环数据,包括:
计算变更后的数据的第一循环冗余校验码;
将数据库名、表名、主键ID、第一循环冗余校验码作为第一回环数据。
作为一个示例,假设B数据库接收到A数据库的第一数据库操作日志文件后可解析得到如下数据:{库名:ehr-ucenter;表名:t_user;表中包含三个字段:id, name,add_time;ServerId:2020;主键ID:10001;解析后全量数据:name+add_time},其中,解析后全量数据和表中包含三个字段作为变更后的数据,而ServerId作为第一数据库ID。
在本可选的实施方式中,可见,可将数据库名、表名、主键ID、第一循环冗余校验码作为第一回环数据,进而确保第一回环数据与第二回环数据的比较准确性。
在本申请实施例,作为一种可选的实施方式,步骤103:将第一回环数据保存在内存空间中,包括:
根据哈希数据结构将第一回环数据保存在内存空间中,其中,数据库名与表名的组合为哈希数据结构的标一级索引,主键ID为哈希数据结构的二级索引,第一循环冗余校验码和第一数据库ID为哈希数据结构的索引值。
作为一个示例,使用redis(Remote Dictionary Server,远程字典服务)的Hash结构存储第一回环数据,其中:Redis的key:ehr-ucenter:t_user,Key的Field:10001,Value:2020+crc64(name+add_time)。
在本可选的实施方式中,通过根据哈希数据结构将第一回环数据保存在内存空间中,能够提高数据读取速度,从而提高回环控制的整体性能。
在本申请实施例中,作为一种可选的实施方式,步骤106:将第一回环数据与第二回环数据进行比较,若第二回环数据与第一回环数据相同,则确定待同步数据为外部数据库同步过来的数据,包括:
将第一回环数据的索引值与第二回环数据的索引值进行比较;
当第一回环数据中的第一数据库ID与第二回环数据的第二数据库ID相等,且第一回环数据中的第一循环冗余校验码与第二回环数据的第二循环冗余校验码相等时,并确定待同步数据为外部数据库同步过来的数据。
在本可选的实施方式中,当第一回环数据中的第一数据库ID与第二回环数据的第二数据库ID相等,且第一回环数据中的第一循环冗余校验码与第二回环数据的第二循环冗余校验码相等时,能够确定第二回环数据与第一回环数据相同并终止回环,这样一来,能够进一步提高第一回环数据与第二回环数据的比较准确性。
在本申请实施例中,作为一种可选的实施方式,本申请实施例方法还包括步骤:
当第一回环数据与第二回环数据进行比较完毕后,删除内存空间中的第一回环数据。
在本可选的实施方式中,通过删除内存空间中的第一回环数据,能够回收内存资源,进一步降低存储控制占用率。
实施例二
请参阅图2,图2是本申请实施例公开的一种数据库多主同步的回环控制装置的结构示意图。如图2所示,本申请实施例的装置包括:
重放模块201,用于当接收到第一数据库操作日志文件时,解析第一数据库操作日志文件,得到待同步数据;
回环预处理模块202,用于根据待同步数据计算得到第一回环数据;
回环控制模块203,用于将第一回环数据保存在内存空间中;
第一获取模块204,用于当根据待同步数据完成数据同步时,获取第二数据库操作日志文件;
解析模块205,用于解析第二数据库操作日志文件,并得到第二回环数据;
第二获取模块206,获取内存空间中的第一回环数据;
回环控制模块203,还用于将第一回环数据与第二回环数据进行比较,若第二回环数据与第一回环数据相同,则确定待同步数据为外部数据库同步过来的数据,并不将第二数据库操作日志文件发送至外部数据库。
本申请实施例的装置能够基于第一数据库操作日志文件和第二数据库操作日志文件生成第一回环数据第二回环数据,进而可将第一回环数据与第二回环数据进行比较,其中,如果比较结果表示第一回环数据与第二回环数据相同,则表示当前数据库同步的数据来源于外部数据库,进而当前数据在同步完成后,无需再通知外部数据库进行同步。与现有技术相比,具有同步效率高、占用磁盘空间小、稳定性高的优点。具体地,一方面本申请实施例可以避免现有技术中第一种方式存在的稳定差、二次开发技术陡峭、同步效率低这类问题,另一方面,与otter相比,本申请实施例不需要针对retl.retl_mark表执行两次操作,从而可以降低binglog日志的数量而降低磁盘空间消耗、从而降低磁盘IO消耗。
需要说明的是,关于本申请实施例的其他详细说明请参照本申请实施例一的描述,在此本申请实施例不作赘述。
实施例三
请参阅图3,图3是本申请实施例公开的一种数据库多主同步的回环控制设备的结构示意图。如图3所示,本申请实施例的设备包括:
处理器301;以及
存储器302,配置用于存储机器可读指令,指令在由处理器301执行时,使得处理器301执本申请实施例一的数据库多主同步的回环控制方法。
本申请实施例的设备能够基于第一数据库操作日志文件和第二数据库操作日志文件生成第一回环数据第二回环数据,进而可将第一回环数据与第二回环数据进行比较,其中,如果比较结果表示第一回环数据与第二回环数据相同,则表示当前数据库同步的数据来源于外部数据库,进而当前数据在同步完成后,无需再通知外部数据库进行同步。与现有技术相比,具有同步效率高、占用磁盘空间小、稳定性高的优点。具体地,一方面本申请实施例可以避免现有技术中第一种方式存在的稳定差、二次开发技术陡峭、同步效率低这类问题,另一方面,与otter相比,本申请实施例不需要针对retl.retl_mark表执行两次操作,从而可以降低binglog日志的数量而降低磁盘空间消耗、从而降低磁盘IO消耗。
实施例四
本申请实施例公开的一种存储介质,该存储介质存储有计算机程序,计算机程序被处理器执行本申请实施例一的数据库多主同步的回环控制方法。
本申请实施例的存储介质能够基于第一数据库操作日志文件和第二数据库操作日志文件生成第一回环数据第二回环数据,进而可将第一回环数据与第二回环数据进行比较,其中,如果比较结果表示第一回环数据与第二回环数据相同,则表示当前数据库同步的数据来源于外部数据库,进而当前数据在同步完成后,无需再通知外部数据库进行同步。与现有技术相比,具有同步效率高、占用磁盘空间小、稳定性高的优点。具体地,一方面本申请实施例可以避免现有技术中第一种方式存在的稳定差、二次开发技术陡峭、同步效率低这类问题,另一方面,与otter相比,本申请实施例不需要针对retl.retl_mark表执行两次操作,从而可以降低binglog日志的数量而降低磁盘空间消耗、从而降低磁盘IO消耗。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据库多主同步的回环控制方法,其特征在于,所述方法包括:
当接收到第一数据库操作日志文件时,解析所述第一数据库操作日志文件,得到待同步数据;
根据所述待同步数据计算得到第一回环数据;
将所述第一回环数据保存在内存空间中;
当根据所述待同步数据完成数据同步时,获取第二数据库操作日志文件;
解析所述第二数据库操作日志文件,并得到第二回环数据;
获取所述内存空间中的所述第一回环数据;
将所述第一回环数据与所述第二回环数据进行比较,若所述第二回环数据与第一回环数据相同,则确定所述待同步数据为外部数据库同步过来的数据,并不将所述第二数据库操作日志文件发送至所述外部数据库。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第二回环数据与第一回环数据不相同时,则确定所述待同步数据是本地数据,并将所述第二数据库操作日志文件发送至所述外部数据库,以使得所述外部数据库同步所述待同步数据。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述内存空间中是否存在所述第一回环数据,若不存在,则确定所述待同步数据是本地数据,并将所述第二数据库操作日志文件发送至所述外部数据库,以使得所述外部数据库同步所述待同步数据。
4.如权利要求1所述的方法,其特征在于,所述待同步数据包括数据库名、表名、主键ID、变更后的数据、第一数据库ID;
以及,所述根据所述待同步数据计算得到第一回环数据,包括:
计算所述变更后的数据的第一循环冗余校验码;
将所述数据库名、所述表名、所述主键ID、所述第一循环冗余校验码作为所述第一回环数据。
5.如权利要求4所述的方法,其特征在于,所述将所述第一回环数据保存在内存空间中,包括:
根据哈希数据结构将所述第一回环数据保存在内存空间中,其中,所述数据库名与所述表名的组合为所述哈希数据结构的标一级索引,所述主键ID为所述哈希数据结构的二级索引,所述第一循环冗余校验码和所述第一数据库ID为所述哈希数据结构的索引值。
6.如权利要求4所述的方法,其特征在于,所述将所述第一回环数据与所述第二回环数据进行比较,若所述第二回环数据与第一回环数据相同,则确定所述待同步数据为外部数据库同步过来的数据,包括:
将所述第一回环数据的索引值与所述第二回环数据的索引值进行比较;
当第一回环数据中的所述第一数据库ID与所述第二回环数据的第二数据库ID相等,且第一回环数据中的第一循环冗余校验码与所述第二回环数据的第二循环冗余校验码相等时,确定所述第二回环数据与所述第一回环数据相同,并确定所述待同步数据为外部数据库同步过来的数据。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一回环数据与所述第二回环数据进行比较完毕后,删除所述内存空间中的所述第一回环数据。
8.一种数据库多主同步的回环控制装置,其特征在于,所述装置包括:
重放模块,用于当接收到第一数据库操作日志文件时,解析所述第一数据库操作日志文件,得到待同步数据;
回环预处理模块,用于根据所述待同步数据计算得到第一回环数据;
回环控制模块,用于将所述第一回环数据保存在内存空间中;
第一获取模块,用于当根据所述待同步数据完成数据同步时,获取第二数据库操作日志文件;
解析模块,用于解析所述第二数据库操作日志文件,并得到第二回环数据;
第二获取模块,获取所述内存空间中的所述第一回环数据;
所述回环控制模块,还用于将所述第一回环数据与所述第二回环数据进行比较,若所述第二回环数据与第一回环数据相同,则确定所述待同步数据为外部数据库同步过来的数据,并不将所述第二数据库操作日志文件发送至所述外部数据库。
9.一种数据库多主同步的回环控制设备,其特征在于,所述设备包括:
处理器;以及
存储器,配置用于存储机器可读指令,所述指令在由所述处理器执行时,使得所述处理器执行如权利要求1-7任一项所述的数据库多主同步的回环控制方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行如权利要求1-7任一项所述的数据库多主同步的回环控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011468532.XA CN112241437A (zh) | 2020-12-15 | 2020-12-15 | 数据库多主同步的回环控制方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011468532.XA CN112241437A (zh) | 2020-12-15 | 2020-12-15 | 数据库多主同步的回环控制方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112241437A true CN112241437A (zh) | 2021-01-19 |
Family
ID=74175267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011468532.XA Pending CN112241437A (zh) | 2020-12-15 | 2020-12-15 | 数据库多主同步的回环控制方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112241437A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925848A (zh) * | 2021-02-23 | 2021-06-08 | 马上消费金融股份有限公司 | 一种数据同步方法、装置、设备及可读存储介质 |
CN113157813A (zh) * | 2021-05-27 | 2021-07-23 | 山东新一代信息产业技术研究院有限公司 | 用于实现数据库双向同步的同步节点装置 |
CN115982285A (zh) * | 2023-03-10 | 2023-04-18 | 北京集度科技有限公司 | 数据处理方法、设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037020A1 (en) * | 2000-02-22 | 2003-02-20 | Lars Novak | Method and apparatus for synchronizing databases of portable devices without change logs |
US8825815B2 (en) * | 2008-01-08 | 2014-09-02 | Amdocs Software Systems Limited | System and method for client synchronization for a communication device |
CN104376017A (zh) * | 2013-08-15 | 2015-02-25 | 阿里巴巴集团控股有限公司 | 在数据库之间进行数据同步的方法及系统 |
CN109947855A (zh) * | 2019-04-03 | 2019-06-28 | 上海中商网络股份有限公司 | 数据同步处理方法、装置、服务器及存储介质 |
-
2020
- 2020-12-15 CN CN202011468532.XA patent/CN112241437A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030037020A1 (en) * | 2000-02-22 | 2003-02-20 | Lars Novak | Method and apparatus for synchronizing databases of portable devices without change logs |
US8825815B2 (en) * | 2008-01-08 | 2014-09-02 | Amdocs Software Systems Limited | System and method for client synchronization for a communication device |
CN104376017A (zh) * | 2013-08-15 | 2015-02-25 | 阿里巴巴集团控股有限公司 | 在数据库之间进行数据同步的方法及系统 |
CN109947855A (zh) * | 2019-04-03 | 2019-06-28 | 上海中商网络股份有限公司 | 数据同步处理方法、装置、服务器及存储介质 |
Non-Patent Citations (2)
Title |
---|
杨军: "数据库同步技术研究", 《信息与电脑(理论版)》 * |
陈国龙: "《计算机应用技术基础》", 31 August 2013 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925848A (zh) * | 2021-02-23 | 2021-06-08 | 马上消费金融股份有限公司 | 一种数据同步方法、装置、设备及可读存储介质 |
CN112925848B (zh) * | 2021-02-23 | 2024-02-06 | 马上消费金融股份有限公司 | 一种数据同步方法、装置、设备及可读存储介质 |
CN113157813A (zh) * | 2021-05-27 | 2021-07-23 | 山东新一代信息产业技术研究院有限公司 | 用于实现数据库双向同步的同步节点装置 |
CN115982285A (zh) * | 2023-03-10 | 2023-04-18 | 北京集度科技有限公司 | 数据处理方法、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112241437A (zh) | 数据库多主同步的回环控制方法、装置、设备及存储介质 | |
CN110209726B (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
CN107402963B (zh) | 搜索数据的构建方法、增量数据的推送方法及装置和设备 | |
CN104572689A (zh) | 数据同步方法、装置及系统 | |
CN110162512B (zh) | 一种日志检索方法、装置及存储介质 | |
CN110019498B (zh) | 日志同步方法及装置、存储介质、电子设备 | |
CN110134737B (zh) | 数据变化监听方法及装置、电子设备和计算机可读存储介质 | |
JP6987340B2 (ja) | データベースのデータ変更要求処理方法及び装置 | |
US20200293412A1 (en) | Log Management Method, Server, and Database System | |
CN110515774A (zh) | 内存快照的生成方法、装置、电子设备及存储介质 | |
CN111966631A (zh) | 一种可快速分发的镜像文件生成方法、系统、设备和介质 | |
CN112163038A (zh) | 跨集群数据同步方法、装置、设备及存储介质 | |
CN111639132B (zh) | 日志同步方法及设备 | |
CN113193947A (zh) | 实现分布式全局序的方法、设备、介质及程序产品 | |
CN115757616A (zh) | 一种基于二进制日志的数据一致性校验方法、装置及介质 | |
CN115438122A (zh) | 数据异构同步系统 | |
CN112765280B (zh) | 区块数据存储方法、装置、计算机可读介质及电子设备 | |
WO2021082925A1 (zh) | 一种交易处理的方法及装置 | |
CN110121712B (zh) | 一种日志管理方法、服务器和数据库系统 | |
CN108228592B (zh) | 基于二进制日志的数据归档方法及数据归档装置 | |
CN115114370B (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
CN115904817A (zh) | 分布式数据库并行回放方法、装置、电子设备和存储介质 | |
CN111522875B (zh) | 一种全量数据同步的分布式系统数据副本一致性监测方法 | |
CN113934792A (zh) | 分布式数据库的处理方法、装置、网络设备和存储介质 | |
CN115794827B (zh) | 一种数据表结构管理系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210119 |
|
RJ01 | Rejection of invention patent application after publication |