CN113946628A - 一种基于拦截器的数据同步方法及装置 - Google Patents
一种基于拦截器的数据同步方法及装置 Download PDFInfo
- Publication number
- CN113946628A CN113946628A CN202111257434.6A CN202111257434A CN113946628A CN 113946628 A CN113946628 A CN 113946628A CN 202111257434 A CN202111257434 A CN 202111257434A CN 113946628 A CN113946628 A CN 113946628A
- Authority
- CN
- China
- Prior art keywords
- database
- sql
- transaction
- statement
- log
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000008569 process Effects 0.000 claims abstract description 11
- 230000001360 synchronised effect Effects 0.000 claims description 17
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据同步领域,公开了一种基于拦截器的数据同步方法及装置,包括:通过拦截器获取针对主数据库的各数据库事务执行过程中的各SQL语句;按照所述各SQL语句的执行顺序,将所述各SQL语句依序记录在语句日志;在确定任一数据库事务满足事务提交条件时,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,从而实现数据同步;所述事务提交条件包括所述数据库事务抢占到用于指示数据库事务同步的分布式锁。通过使从数据库在得到SQL语句后,直接执行SQL语句,而非解析日志记录,提升了从数据库数据同步的兼容性;增加了数据同步的实时性及效率。
Description
技术领域
本发明涉及数据同步领域,尤其涉及一种基于拦截器的数据同步方法及装置。
背景技术
在分布式系统中,一般会有多个系统集群,不同的集群会有自己独立的数据库。各数据库中包括公共数据与非公共数据;其中,公共数据为各数据库相同的数据;非公共数据为各数据库不同的数据。针对各数据库公共数据的数据同步方法,现有技术中,一般采取主从同步的方式,即以某个集群为主数据库,其他集群为从数据库,将主数据库的公共数据同步到从数据库。在后续对公共数据的处理时(如新增、修改和删除等操作),只在主数据库中执行,不在单独更改从数据库,由此将数据库中处理后的数据同步至从数据库,实现数据库的主从同步。
进一步的,主数据库系统提交数据库事务;其中,数据库事务包括至少一个待执行的代码语句(如SQL语句);主数据库系统在数据库事务提交之后,生成日志记录;其中,日志记录中记录有数据变更信息(如新增数据、修改数据和删除数据);然后将日志记录发送给从数据库,以使从数据库针对日志记录实现从数据库的数据同步。但此种实现方式的数据同步的效率差,实时性低。并且,若主数据库的日志记录无法兼容从数据库,则从数据库无法根据日志记录进行数据同步。
发明内容
本发明实施例提供一种数据同步方法,用于提升主从数据库数据同步的兼容性、实时性和效率。
第一方面,本发明实施例提供一种基于拦截器的数据同步方法,包括:
通过拦截器获取针对主数据库的各数据库事务执行过程中的各SQL语句;
按照所述各SQL语句的执行顺序,将所述各SQL语句依序记录在语句日志;
在确定任一数据库事务满足事务提交条件时,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,从而实现数据同步;所述事务提交条件包括所述数据库事务抢占到用于指示数据库事务同步的分布式锁。
上述技术方案中,通过拦截器得数据库事务执行过程中的各SQL语句,并记录在语句日志,以使从数据库在得到SQL语句后,直接执行SQL语句,而非解析日志记录,提升了从数据库数据同步的兼容性;数据库事务满足事务提交条件时,其中,事务提交条件包括数据库事务抢占到用于指示数据库事务同步的分布式锁。需要说明的是,分布式锁设置于数据库事务的提交命令之前,也就是说,在数据库事务提交之前,SQL语句记录并发送至从数据库,以此增加了数据同步的实时性及效率。
可选的,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,包括:
从所述语句日志中确定出所述数据库事务的SQL语句;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,依序将所述数据库事务的SQL语句发送至从数据库。
可选的,按照所述各SQL语句的执行顺序,将所述各SQL语句依序记录在语句日志,包括:
按照所述各SQL语句的执行顺序,以第一自增序列的方式将所述各SQL语句依序记录在语句日志;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,依序将所述数据库事务的SQL语句发送至从数据库,包括:
基于第i-1数据库事务的SQL语句的第二自增序列最大值,按照第i数据库事务的SQL语句的第一自增序列从小到大的顺序,确定所述第i数据库事务的SQL语句的第二自增序列;所述第i-1数据库事务是所述第i数据库事务前抢占到所述分布式锁的数据库事务;
根据所述第i数据库事务的SQL语句的第二自增序列,将所述第i数据库事务的SQL语句发送至从数据库。
上述技术方案中,按照自增序列的方式记录SQL语句,保证了数据处理的执行顺序,提高了数据同步的准确性。
可选的,确定所述第i数据库事务的SQL语句的第二自增序列之后,还包括:
将所述第i数据库事务的SQL语句的第二自增序列按照预设更新方式更新至所述语句日志中。
可选的,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,从而实现数据同步,包括:
从所述语句日志中确定出所述数据库事务的SQL语句;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,将所述数据库事务的SQL语句,记录至语句子日志中;
将所述语句子日志发送至从数据库,从而实现数据同步。
可选的,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,包括:
通过消息中间件将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库。
可选的,所述各SQL语句依序记录在语句日志之前,还包括:
确定所述各SQL语句对应的数据表在同步白名单中;所述同步白名单用于表征主从数据库之间需进行数据同步的数据表。
第二方面,本发明实施例提供一种基于拦截器的数据同步装置,包括:
获取模块,用于通过拦截器获取针对主数据库的各数据库事务执行过程中的各SQL语句;
处理模块,用于按照所述各SQL语句的执行顺序,将所述各SQL语句依序记录在语句日志;
在确定任一数据库事务满足事务提交条件时,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,从而实现数据同步;所述事务提交条件包括所述数据库事务抢占到用于指示数据库事务同步的分布式锁。
可选的,所述处理模块具体用于:
从所述语句日志中确定出所述数据库事务的SQL语句;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,依序将所述数据库事务的SQL语句发送至从数据库。
可选的,所述处理模块具体用于:
按照所述各SQL语句的执行顺序,以第一自增序列的方式将所述各SQL语句依序记录在语句日志;
基于第i-1数据库事务的SQL语句的第二自增序列最大值,按照第i数据库事务的SQL语句的第一自增序列从小到大的顺序,确定所述第i数据库事务的SQL语句的第二自增序列;所述第i-1数据库事务是所述第i数据库事务前抢占到所述分布式锁的数据库事务;
根据所述第i数据库事务的SQL语句的第二自增序列,将所述第i数据库事务的SQL语句发送至从数据库。
可选的,所述处理模块还用于:
确定所述第i数据库事务的SQL语句的第二自增序列之后,将所述第i数据库事务的SQL语句的第二自增序列按照预设更新方式更新至所述语句日志中。
可选的,所述处理模块具体用于:
从所述语句日志中确定出所述数据库事务的SQL语句;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,将所述数据库事务的SQL语句,记录至语句子日志中;
将所述语句子日志发送至从数据库,从而实现数据同步。
可选的,所述处理模块具体用于:
通过消息中间件将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库。
可选的,所述处理模块还用于:
所述各SQL语句依序记录在语句日志之前确定所述各SQL语句对应的数据表在同步白名单中;所述同步白名单用于表征主从数据库之间需进行数据同步的数据表。
第三方面,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述基于拦截器的数据同步方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述基于拦截器的数据同步方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构示意图;
图2为本发明实施例提供的一种基于拦截器的数据同步方法的流程示意图;
图3为本发明实施例提供的一种基于拦截器的数据同步方法的流程示意图;
图4为本发明实施例提供的一种基于拦截器的数据同步装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在分布式系统中,一般会有多个系统集群,不同的集群会有自己独立的数据库。各数据库中包括公共数据与非公共数据;其中,公共数据为各数据库相同的数据;非公共数据为各数据库不同的数据。
针对各数据库公共数据的数据同步方法,现有技术中,一般采取主从同步的方式,即以某个集群为主数据库,其他集群为从数据库,将主数据库的公共数据同步到从数据库。在后续对公共数据的处理时(如新增、修改和删除等操作),只在主数据库中执行,不在单独更改从数据库,由此将数据库中处理后的数据同步至从数据库,实现数据库的主从同步。
进一步的,主从同步的流程如下:
S1、提交数据库事务,在数据库事务提交之后,根据数据库事务的实行结果对主数据库中的数据处理;其中,数据库事务包括执行数据处理事务的SQL语句;
S2、根据主数据库中数据的变化生成日志记录;其中,日志记录中记录有数据变化的具体内容(如数据表中某一单元格的值由“A”修改为“B”、第一步修改了数据表内容、第二步增加了数据表内容等);
S3、将日志记录发送给从数据库,以使从数据库针对日志记录实现数据同步。
目前,主从同步方案主要包括以下两种应用场景:
1、数据库厂商在主数据库中提供商业方案;
2、基于主数据库的日志记录或主数据库特有的功能实现的主从同步方案;
针对第1种应用场景,主数据库中为商业方案时,所产生的日志记录需要很大的项目成本,导致主从数据库的数据同步时,项目成本消耗大。
针对第2中应用场景,基于主数据库特有的功能或特定的主数据库,所产生的日志文件是无法兼容普通从数据库的,也就是说,普通从数据库无法通过上述特定的日志文件进行数据同步,影响数据同步的兼容性。
并且,本发明的日志记录是需要数据库事务提交后,主数据库中数据发生变化后才会产生,导致数据同步的实时性低,效率差。
因此,现需要一种数据同步方法,来提升数据同步的兼容性、实时性和效率。
图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括主数据库系统110、消息中间件120和从数据库系统130。
其中,主数据库系统110中包括拦截器,如MyBatis中的拦截器;拦截器用于在数据库事务实行SQL语句时,拦截SQL语句,并根据自增序列的方式确定各SQL语句的第一自增序列,然后将SQL语句以自增序列的顺序记录在语句日志中。
在确定某一数据库事务满足事务提交条件时,基于第i-1数据库事务的SQL语句的第二自增序列最大值,按照第i数据库事务的SQL语句的第一自增序列从小到大的顺序,对该数据库事务的SQL语句设置第二自增序列,得到更新后的语句日志。
然后通过消息中间件120将语句日志中第i数据库事务的SQL语句按照SQL语句的第二自增序列从小到大的顺序,发送至多个从数据库。
消息中间件120,用于将SQL语句分布式的发送给各从数据库系统130。
从数据库系统130,用于执行获取到的SQL语句,实现从数据库与主数据库之间的数据同步。
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图2示例性的示出了本发明实施例提供的一种基于拦截器的数据同步方法的流程示意图,该流程可由基于拦截器的数据同步装置执行。
如图2所示,该流程具体包括:
步骤210,通过拦截器获取针对主数据库的各数据库事务执行过程中的各SQL语句。
本发明实施例中,拦截器可以为MyBatis中的拦截器;拦截器用于在数据库事务实行SQL语句时,拦截SQL语句。
步骤220,按照所述各SQL语句的执行顺序,将所述各SQL语句依序记录在语句日志。
本发明实施例中,可以根据自增序列的方式将各SQL语句依序记录在语句日志。
步骤230,在确定任一数据库事务满足事务提交条件时,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,从而实现数据同步。
本发明实施例中,事务提交条件包括所述数据库事务抢占到用于指示数据库事务同步的分布式锁;需要说明的是,数据库事务包括事务开启命令、事务执行命令(如insert、update、delete命令等)、判断命令(如if命令等)和提交命令(Commit命令),抢占分布式锁的命令设置于Commit命令之前。
在步骤210中,在并发式系统中,可能存在多个数据库事务一起执行,导致各SQL语句并不能以事务为单位进行执行;例如,并发式系统场景下,数据库事务包括事务A、事务B和事务C,假设,在时间顺序上,执行的第一条SQL语句为事务A的SQL语句,执行的第二条SQL语句为事务B的SQL语句,执行的第三条SQL语句还为事务B的SQL语句,以此类推。
在步骤220中,按照各SQL语句的执行顺序,确定SQL语句的第一自增序列,然后以第一自增序列的方式将各SQL语句依序记录在语句日志。
例如,数据库事务包括事务A、事务B和事务C,假设,事务A包括SQL语句A1、A2和A3,事务B包括SQL语句B1、B2和B3,事务C包括SQL语句C1、C2和C3,在时间顺序上,执行的第一条SQL语句为事务A的SQL语句A1,拦截器拦截SQL语句A1,并将SQL语句A1的第一自增序列确定为“(A1)1”;执行的第二条SQL语句为事务B的SQL语句B1,拦截器拦截SQL语句B1,并将该SQL语句的第一自增序列确定为“(B1)2”;以此类推,执行的第n条SQL语句为事务C的SQL语句C2,拦截器拦截SQL语句C2,并将SQL语句C2的第一自增序列确定为“(C2)n”;其中,n用于表征事务的第一自增序列。
在得到SQL语句的第一自增序列之后,将其记录在语句日志,如语句日志中记录有SQL语句“(A1)1”、“(B1)2”、……、“(C2)n”。
示例性的,在将各SQL语句依序记录在语句日志之前,确定各SQL语句对应的数据表在同步白名单中;同步白名单用于表征主从数据库之间需进行数据同步的数据表。
在步骤230中,将所述数据库事务的SQL语句发送至从数据库之前,还需要对数据库事务的SQL语句设置第二序列。
具体的,基于第i-1数据库事务的SQL语句的第二自增序列最大值,按照第i数据库事务的SQL语句的第一自增序列从小到大的顺序,确定所述第i数据库事务的SQL语句的第二自增序列;所述第i-1数据库事务是所述第i数据库事务前抢占到所述分布式锁的数据库事务。
例如,第i-1数据库事务为事务A,事务A包括SQL语句A1、A2和A3,A1、A2和A3对应的第二自增序列分别为8、9、10;第i数据库事务为事务B,事务B包括SQL语句B1和B2,则基于2(数据库事务A的SQL语句的第二自增序列最大值)和B1、B2的第一自增序列(如B1的第一自增序列为2、B1的第一自增序列为5),先确定B1的第二自增序列为11,再确定B2的第二自增序列为12。
在确定第i数据库事务的SQL语句的第二自增序列之后,将所述第i数据库事务的SQL语句的第二自增序列按照预设更新方式更新至所述语句日志中。
进一步地,预设更新方式为jdBC方式;更新语句日志之后,释放分布式锁。
在一种可实施的方式中,根据第i数据库事务的SQL语句的第二自增序列,将第i数据库事务的SQL语句发送至从数据库。
进一步地,通过消息中间件将语句日志中数据库事务的SQL语句依序发送至从数据库。
例如,第i数据库事务为事务B,确定事务B包括SQL语句B1和B2,基于B1(第二自增序列为11)和B2(第二自增序列为12)的第二自增序列,先将B1发送至从数据库,再将B2发送至从数据库,保证事务的执行顺序,提升数据同步的安全性。
在另一种可实施的方式中,从所述语句日志中确定出所述数据库事务的SQL语句;按照所述数据库事务的SQL语句在所述语句日志中的顺序,将所述数据库事务的SQL语句,记录至语句子日志中;将所述语句子日志发送至从数据库,从而实现数据同步。
为了更好的解释上述技术方案,图3示例性你给的示出了一种基于拦截器的数据同步方法的流程示意图,如图3所示,具体流程包括:
步骤310,拦截SQL语句。
在数据库开启事务后,执行数据库事务中的SQL语句;
SQL语句执行过程中,通过拦截器拦截各数据库开启事务的SQL语句。
步骤320,确定是否记录在同步白名单,若是,则执行步骤330,否则执行步骤340。
针对任一SQL语句,确定所述SQL语句所属的数据表是否记录在同步白名单中,同步白名单中记录有需要进行数据同步的数据表。
步骤330,将SQL语句记录在语句日志。
确定SQL语句的第一自增序列,然后基于各SQL语句对应的第一自增序列,按照第一自增序列的顺序将各SQL语句记录在语句日志。
然后在确定某一数据库事务满足事务提交条件时,确定该数据库事务中各SQL语句的第二自增序列,根据该数据库事务中各SQL语句的第二自增序列对语句日志进行更新。
步骤340,将数据库事务存储至主数据库。
步骤350,发送至从数据库。
通过消息中间件,将更新后的语句日志中,该数据库事务的各SQL语句按照第二自增序列的顺序依次分布式的发送至各从数据,以使各从数据库直接执行SQL语句,实现数据同步。
基于相同的技术构思,图4示例性的示出了本发明实施例提供的一种基于拦截器的数据同步装置的结构示意图,该装置可以执行基于拦截器的数据同步方法的流程。
如图4所示,该装置具体包括:
获取模块410,用于通过拦截器获取针对主数据库的各数据库事务执行过程中的各SQL语句;
处理模块420,用于按照所述各SQL语句的执行顺序,将所述各SQL语句依序记录在语句日志;
在确定任一数据库事务满足事务提交条件时,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,从而实现数据同步;所述事务提交条件包括所述数据库事务抢占到用于指示数据库事务同步的分布式锁。
可选的,所述处理模块420具体用于:
从所述语句日志中确定出所述数据库事务的SQL语句;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,依序将所述数据库事务的SQL语句发送至从数据库。
可选的,所述处理模块420具体用于:
按照所述各SQL语句的执行顺序,以第一自增序列的方式将所述各SQL语句依序记录在语句日志;
基于第i-1数据库事务的SQL语句的第二自增序列最大值,按照第i数据库事务的SQL语句的第一自增序列从小到大的顺序,确定所述第i数据库事务的SQL语句的第二自增序列;所述第i-1数据库事务是所述第i数据库事务前抢占到所述分布式锁的数据库事务;
根据所述第i数据库事务的SQL语句的第二自增序列,将所述第i数据库事务的SQL语句发送至从数据库。
可选的,所述处理模块420还用于:
确定所述第i数据库事务的SQL语句的第二自增序列之后,将所述第i数据库事务的SQL语句的第二自增序列按照预设更新方式更新至所述语句日志中。
可选的,所述处理模块420具体用于:
从所述语句日志中确定出所述数据库事务的SQL语句;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,将所述数据库事务的SQL语句,记录至语句子日志中;
将所述语句子日志发送至从数据库,从而实现数据同步。
可选的,所述处理模块420具体用于:
通过消息中间件将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库。
可选的,所述处理模块420还用于:
所述各SQL语句依序记录在语句日志之前确定所述各SQL语句对应的数据表在同步白名单中;所述同步白名单用于表征主从数据库之间需进行数据同步的数据表。
基于相同的技术构思,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述基于拦截器的数据同步方法。
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述基于拦截器的数据同步方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种基于拦截器的数据同步方法,其特征在于,包括:
通过拦截器获取针对主数据库的各数据库事务执行过程中的各SQL语句;
按照所述各SQL语句的执行顺序,将所述各SQL语句依序记录在语句日志;
在确定任一数据库事务满足事务提交条件时,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,从而实现数据同步;所述事务提交条件包括所述数据库事务抢占到用于指示数据库事务同步的分布式锁。
2.如权利要求1所述的方法,其特征在于,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,包括:
从所述语句日志中确定出所述数据库事务的SQL语句;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,依序将所述数据库事务的SQL语句发送至从数据库。
3.如权利要求2所述的方法,其特征在于,按照所述各SQL语句的执行顺序,将所述各SQL语句依序记录在语句日志,包括:
按照所述各SQL语句的执行顺序,以第一自增序列的方式将所述各SQL语句依序记录在语句日志;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,依序将所述数据库事务的SQL语句发送至从数据库,包括:
基于第i-1数据库事务的SQL语句的第二自增序列最大值,按照第i数据库事务的SQL语句的第一自增序列从小到大的顺序,确定所述第i数据库事务的SQL语句的第二自增序列;所述第i-1数据库事务是所述第i数据库事务前抢占到所述分布式锁的数据库事务;
根据所述第i数据库事务的SQL语句的第二自增序列,将所述第i数据库事务的SQL语句发送至从数据库。
4.如权利要求3所述的方法,其特征在于,确定所述第i数据库事务的SQL语句的第二自增序列之后,还包括:
将所述第i数据库事务的SQL语句的第二自增序列按照预设更新方式更新至所述语句日志中。
5.如权利要求1所述的方法,其特征在于,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,从而实现数据同步,包括:
从所述语句日志中确定出所述数据库事务的SQL语句;
按照所述数据库事务的SQL语句在所述语句日志中的顺序,将所述数据库事务的SQL语句,记录至语句子日志中;
将所述语句子日志发送至从数据库,从而实现数据同步。
6.如权利要求1所述的方法,其特征在于,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,包括:
通过消息中间件将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库。
7.如权利要求1至6任一项所述的方法,其特征在于,所述各SQL语句依序记录在语句日志之前,还包括:
确定所述各SQL语句对应的数据表在同步白名单中;所述同步白名单用于表征主从数据库之间需进行数据同步的数据表。
8.一种基于拦截器的数据同步装置,其特征在于,包括:
获取模块,用于通过拦截器获取针对主数据库的各数据库事务执行过程中的各SQL语句;
处理模块,用于按照所述各SQL语句的执行顺序,将所述各SQL语句依序记录在语句日志;
在确定任一数据库事务满足事务提交条件时,将所述语句日志中所述数据库事务的SQL语句依序发送至从数据库,从而实现数据同步;所述事务提交条件包括所述数据库事务抢占到用于指示数据库事务同步的分布式锁。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111257434.6A CN113946628A (zh) | 2021-10-27 | 2021-10-27 | 一种基于拦截器的数据同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111257434.6A CN113946628A (zh) | 2021-10-27 | 2021-10-27 | 一种基于拦截器的数据同步方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113946628A true CN113946628A (zh) | 2022-01-18 |
Family
ID=79332767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111257434.6A Pending CN113946628A (zh) | 2021-10-27 | 2021-10-27 | 一种基于拦截器的数据同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946628A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115329006A (zh) * | 2022-08-31 | 2022-11-11 | 保利和悦生活科技服务有限公司 | 一种网络商城后台与第三方接口的数据同步方法及系统 |
CN115905402A (zh) * | 2022-09-26 | 2023-04-04 | 北京奥星贝斯科技有限公司 | 处理事务日志的方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183377A (zh) * | 2007-12-10 | 2008-05-21 | 华中科技大学 | 一种基于消息中间件的高可用性数据库集群 |
CN101640587A (zh) * | 2008-08-01 | 2010-02-03 | 华为技术有限公司 | 数据同步方法及装置 |
CN105491106A (zh) * | 2015-11-18 | 2016-04-13 | 中国石油天然气集团公司 | 一种石油测井主从数据库系统实时同步系统和方法 |
CN109783573A (zh) * | 2018-12-18 | 2019-05-21 | 北京华夏电通科技有限公司 | 多路推送的数据同步方法及终端 |
CN110333936A (zh) * | 2019-06-26 | 2019-10-15 | 深圳前海微众银行股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
US20200201845A1 (en) * | 2017-08-29 | 2020-06-25 | Alibaba Group Holding Limited | Synchronization between primary database and secondary database |
CN112015815A (zh) * | 2020-08-27 | 2020-12-01 | 中国平安财产保险股份有限公司 | 数据同步方法、装置及计算机可读存储介质 |
CN112905613A (zh) * | 2021-02-08 | 2021-06-04 | 中国工商银行股份有限公司 | 一种异构数据库的数据双向同步方法及装置 |
CN112988897A (zh) * | 2021-03-30 | 2021-06-18 | 工银科技有限公司 | 系统升级场景下的数据双向同步方法及装置 |
CN113094434A (zh) * | 2021-04-08 | 2021-07-09 | 中国工商银行股份有限公司 | 数据库同步方法、系统、装置、电子设备及介质 |
-
2021
- 2021-10-27 CN CN202111257434.6A patent/CN113946628A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183377A (zh) * | 2007-12-10 | 2008-05-21 | 华中科技大学 | 一种基于消息中间件的高可用性数据库集群 |
CN101640587A (zh) * | 2008-08-01 | 2010-02-03 | 华为技术有限公司 | 数据同步方法及装置 |
CN105491106A (zh) * | 2015-11-18 | 2016-04-13 | 中国石油天然气集团公司 | 一种石油测井主从数据库系统实时同步系统和方法 |
US20200201845A1 (en) * | 2017-08-29 | 2020-06-25 | Alibaba Group Holding Limited | Synchronization between primary database and secondary database |
CN109783573A (zh) * | 2018-12-18 | 2019-05-21 | 北京华夏电通科技有限公司 | 多路推送的数据同步方法及终端 |
CN110333936A (zh) * | 2019-06-26 | 2019-10-15 | 深圳前海微众银行股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
CN112015815A (zh) * | 2020-08-27 | 2020-12-01 | 中国平安财产保险股份有限公司 | 数据同步方法、装置及计算机可读存储介质 |
CN112905613A (zh) * | 2021-02-08 | 2021-06-04 | 中国工商银行股份有限公司 | 一种异构数据库的数据双向同步方法及装置 |
CN112988897A (zh) * | 2021-03-30 | 2021-06-18 | 工银科技有限公司 | 系统升级场景下的数据双向同步方法及装置 |
CN113094434A (zh) * | 2021-04-08 | 2021-07-09 | 中国工商银行股份有限公司 | 数据库同步方法、系统、装置、电子设备及介质 |
Non-Patent Citations (1)
Title |
---|
很菜很菜的鸟: "数据库sequence的作用和用法", pages 1, Retrieved from the Internet <URL:https://blog.csdn.net/u013187074/article/details/52818616> * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115329006A (zh) * | 2022-08-31 | 2022-11-11 | 保利和悦生活科技服务有限公司 | 一种网络商城后台与第三方接口的数据同步方法及系统 |
CN115329006B (zh) * | 2022-08-31 | 2023-08-04 | 保利和悦生活科技服务有限公司 | 一种网络商城后台与第三方接口的数据同步方法及系统 |
CN115905402A (zh) * | 2022-09-26 | 2023-04-04 | 北京奥星贝斯科技有限公司 | 处理事务日志的方法及装置 |
CN115905402B (zh) * | 2022-09-26 | 2023-07-18 | 北京奥星贝斯科技有限公司 | 处理事务日志的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688500B (zh) | 一种分布式任务处理方法、装置、系统及设备 | |
CN109271450B (zh) | 数据库同步方法、装置、服务器和存储介质 | |
CN110908997B (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
US9589041B2 (en) | Client and server integration for replicating data | |
US10296632B2 (en) | Synchronization on reactivation of asynchronous table replication | |
US20180046643A1 (en) | Consistent execution of partial queries in hybrid dbms | |
EP2891994A1 (en) | Method for achieving automatic synchronization of multisource heterogeneous data resources | |
CN113946628A (zh) | 一种基于拦截器的数据同步方法及装置 | |
CN113419823B (zh) | 一种适用于高并发事务的联盟链系统及其设计方法 | |
JP7438603B2 (ja) | トランザクション処理方法、装置、コンピュータデバイス及びコンピュータプログラム | |
CN111797121A (zh) | 读写分离架构业务系统的强一致性查询方法、装置及系统 | |
CN113297320A (zh) | 分布式数据库系统及数据处理方法 | |
JP2022531867A (ja) | データ読み取り方法、装置、コンピュータ装置及びコンピュータプログラム | |
CN115374102A (zh) | 数据处理方法及系统 | |
CN110188114A (zh) | 一种数据操作的优化方法、装置、系统、设备和存储介质 | |
CN110599166A (zh) | 一种区块链内获取交易依赖关系的方法及装置 | |
CN115438122A (zh) | 数据异构同步系统 | |
JP2022543306A (ja) | ブロックチェーンデータ処理の方法、装置、機器及び可読記憶媒体 | |
CN113111125A (zh) | 一种基于区块链的业务存证方法 | |
JPH0565892B2 (zh) | ||
CN112800060A (zh) | 数据处理方法、装置、计算机可读存储介质及电子设备 | |
CN117421302A (zh) | 一种数据处理方法及相关设备 | |
CN110209534B (zh) | 自动备份mysql数据库的系统及方法 | |
CN115658815A (zh) | 基于cdc实现的数据同步的方法 | |
CN112000671B (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 |