System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 数据库的数据同步方法、存储介质及设备技术_技高网

数据库的数据同步方法、存储介质及设备技术

技术编号:40374532 阅读:7 留言:0更新日期:2024-02-20 22:16
本发明专利技术提供了一种数据库的数据同步方法、存储介质及设备。数据库的数据同步方法包括:获取需要同步至目标端数据库的待同步事务;读取待同步事务中的操作语句;检测操作语句是否为进行数据定义操作的操作语句,若是,跳过操作语句,若否,执行操作语句;检测到待同步事务的所有操作语句全部处理完成;执行待同步事务中进行数据定义操作的操作语句。也就是说,在待同步事务的同步过程中,暂不执行读取到的进行数据定义操作的操作语句,直至待同步事务中的除进行数据定义操作之外的操作语句全部执行完成后,再执行进行数据定义操作的操作语句,有效避免执行数据定义操作导致事务部分操作语句已入库而事务号尚未更新的情况发生。

【技术实现步骤摘要】

本专利技术涉及数据库,特别是涉及一种数据库的数据同步方法、存储介质及设备


技术介绍

1、在数据库同步工具对两个数据库进行数据同步的过程中,需要通过对源端数据库的日志进行分析来得到增量数据,也就是数据库的增删改变化数据,然后将增量数据以事务为单位进行组装,再将组装好的事务以特定的消息格式发送到目标端数据库。最后将获取到的事务恢复成操作语句,即sql(结构化查询语言,structured query language,简称sql)语句,将操作语句在目标端数据库执行,从而实现数据同步。

2、同时,在数据同步过程中,需要记录已在目标端数据库完成同步的事务号,以保证在故障后继续同步。而为了保证事务的原子性,一般情况下,一个事务的所有操作均执行完成,然后进行提交的同时事务号才一起更新。但是,对于一些特别的数据库,具有将ddl操作(data definition language,数据定义语言,简称ddl),也就是数据定义操作语句自动提交的特性。

3、因此,在向这些特别的数据库进行数据同步时,如果事务中存在ddl操作,会导致在执行到ddl操作时就将ddl操作及之前的操作全部提交入库,换句话说,会导致事务部分入库而事务号并未更新。此时,如果同步过程出现故障,在故障恢复后,因为事务号并未更新,所以会将该事务再在目标端数据库执行一次。但是由于该事务其实已经部分内入库,以致于会出现数据重复的情况,影响同步效率。


技术实现思路

1、本专利技术的一个目的是要提供一种能够解决上述任一问题的数据库的数据同步方法、存储介质及设备。

2、特别地,本专利技术提供了一种数据库的数据同步方法,包括:

3、获取需要同步至目标端数据库的待同步事务;

4、读取待同步事务中的操作语句;

5、检测操作语句是否为进行数据定义操作的操作语句,若是,跳过操作语句,若否,执行操作语句;

6、检测到待同步事务的所有操作语句全部处理完成;

7、执行待同步事务中进行数据定义操作的操作语句。

8、可选地,检测到待同步事务的所有操作语句全部处理完成的步骤之后包括:

9、将待同步事务已执行的操作语句入库且将目标端数据库的同步断点更新为待同步事务的事务序列号,同步断点用于标记已在目标端数据库完成同步的事务的事务序列号。

10、可选地,待同步事务的操作语句中包含预置的断点更新操作语句,断点更新操作语句用于将目标端数据库的同步断点更新为待同步事务的事务序列号;

11、将待同步事务已执行的操作语句入库且将目标端数据库的同步断点更新为待同步事务的事务序列号的步骤包括:

12、提交待同步事务所有已执行的操作语句,从而实现待同步事务已执行的操作语句入库且将目标端数据库的同步断点更新为待同步事务的事务序列号。

13、可选地,在进行数据同步的过程中,监测同步中断的节点,若监测到同步中断的节点出现在执行待同步事务中进行数据定义操作的操作语句的过程中,数据同步方法还包括:

14、重新开启数据同步;

15、获取目标端数据库的同步断点对应的事务中的进行数据定义操作的操作语句;

16、在目标端数据库执行进行数据定义操作的操作语句。

17、可选地,读取待同步事务中的操作语句的步骤之前包括:

18、关闭目标端数据库的单语句自动提交模式。

19、可选地,跳过操作语句的步骤之后包括:

20、将进行数据定义操作的操作语句进行持久化存储。

21、可选地,将进行数据定义操作的操作语句进行持久化存储的步骤包括:

22、将操作语句存储在预设的内存队列中。

23、可选地,检测操作语句是否为进行数据定义操作的操作语句的步骤包括:

24、检测操作语句中是否含有预设关键字,若是,则判定操作语句为进行数据定义操作的操作语句,若否,则判定操作语句不是进行数据定义操作的操作语句。

25、在本专利技术的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现根据上述任一项所述的数据库的数据同步方法。

26、在本专利技术的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现根据上述任一项所述的数据库的数据同步方法。

27、本专利技术的数据库的数据同步方法、存储介质及设备通过在获取到需要同步至目标端数据库的待同步事务后读取待同步事务中的操作语句,检测操作语句是否为进行数据定义操作的操作语句,在读取到的操作语句是进行数据定义操作的操作语句的情况下,跳过该进行数据定义操作的操作语句,在待同步事务的所有操作语句全部处理完成后,再执行待同步事务中进行数据定义操作的操作语句。也就是说,在待同步事务的同步过程中,在读取到进行数据定义操作的操作语句后,暂不执行该操作语句,直至待同步事务中的除进行数据定义操作之外的操作语句全部执行完成后,再执行进行数据定义操作的操作语句。因此,能够有效避免待同步事务的同步过程中出现事务部分操作语句已提交入库而事务号尚未更新的情况发生,从而有效避免同步故障后需要重复执行的情况发生,有助于提高数据同步效率。

28、根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。

本文档来自技高网...

【技术保护点】

1.一种数据库的数据同步方法,包括:

2.根据权利要求1所述的数据库的数据同步方法,其中,所述检测到所述待同步事务的所有操作语句全部处理完成的步骤之后包括:

3.根据权利要求2所述的数据库的数据同步方法,其中,所述待同步事务的操作语句中包含预置的断点更新操作语句,所述断点更新操作语句用于将所述目标端数据库的同步断点更新为所述待同步事务的事务序列号;

4.根据权利要求3所述的数据库的数据同步方法,其中,在进行数据同步的过程中,监测同步中断的节点,若监测到所述同步中断的节点出现在执行所述待同步事务中进行数据定义操作的操作语句的过程中,所述数据同步方法还包括:

5.根据权利要求1所述的数据库的数据同步方法,其中,所述读取所述待同步事务中的操作语句的步骤之前包括:

6.根据权利要求1所述的数据库的数据同步方法,其中,所述跳过所述操作语句的步骤之后包括:

7.根据权利要求6所述的数据库的数据同步方法,其中,所述将进行数据定义操作的所述操作语句进行持久化存储的步骤包括:

8.根据权利要求1所述的数据库的数据同步方法,其中,所述检测所述操作语句是否为进行数据定义操作的操作语句的步骤包括:

9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据库的数据同步方法。

10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据库的数据同步方法。

...

【技术特征摘要】

1.一种数据库的数据同步方法,包括:

2.根据权利要求1所述的数据库的数据同步方法,其中,所述检测到所述待同步事务的所有操作语句全部处理完成的步骤之后包括:

3.根据权利要求2所述的数据库的数据同步方法,其中,所述待同步事务的操作语句中包含预置的断点更新操作语句,所述断点更新操作语句用于将所述目标端数据库的同步断点更新为所述待同步事务的事务序列号;

4.根据权利要求3所述的数据库的数据同步方法,其中,在进行数据同步的过程中,监测同步中断的节点,若监测到所述同步中断的节点出现在执行所述待同步事务中进行数据定义操作的操作语句的过程中,所述数据同步方法还包括:

5.根据权利要求1所述的数据库的数据同步方法,其中,所述读取所述待同步事务中的操作语句的步骤之前包括:

【专利技术属性】
技术研发人员:魏乾王凯龙
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1