一种消息队列的断点同步方法、存储介质与设备与流程
- 国知局
- 2024-10-21 15:04:41
本发明涉及数据库技术,特别是涉及一种消息队列的断点同步方法、存储介质与设备。
背景技术:
1、在利用数据同步工具进行数据实时同步时分为三个阶段:第一阶段进行存量数据的初始化装载,获得数据同步的基础点;第二阶段以初始化数据装载建立的同步基础点为基准进行增量数据同步;第三阶段定期对数据同步的源端数据和目标数据进行比对校验,以确认在数据同步过程中没有丢失数据。其中第二阶段和第三阶段会处于长时间并行状态。
2、在第二阶段进行增量数据同步时,通过分析数据库日志获取增量数据,从而实现数据实时同步是一种常用的实时数据复制技术。这种技术通过解析源数据库的在线日志或者归档日志,获得数据的增删改变化,再将这些变化以事务为单位转换为同步软件内部特定的消息格式,通过数据同步软件的私有传输协议发送到目标端数据同步软件,最后目标端同步软件将获取到的事务日志恢复成目标数据库支持的sql语句并在目标端数据库上执行,来实现数据的实时同步,进而保持源端和目标数据库的数据一致性。
3、然而,由于消息队列不同于普通关系型数据库,没有库、模式及表的概念,所以通常是使用本地文件的方式存储断点信息,而不是使用数据库本身的中间表进行记录。因此,在第二阶段进行增量数据同步时,是在每次写完数据之后再去更新本地文件中的断点信息,这样就导致了数据入库和断点更新之间是有时间差的。
4、因断点更新与实际写入数据之间存在时间差,如果数据已经写入,但是断点信息还没有来的及更新,这时候因为异常或者人为手动重启同步服务,那么就会造成数据重复写入的问题。另外,如果因为环境或者磁盘等原因导致记录断点信息的本地文件损坏,这时候就相当于丢失了断点信息,这时候重启服务,会造成数据丢失或者数据重复写入的问题。此外,如果存储断点信息的本地文件被误删除,那么也会导致重启服务后成数据丢失或者数据重复写入的问题。
技术实现思路
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、从消息队列中创建的数据结构内,获取待同步的断点信息;
29、将待同步的断点信息返回给同步服务,以进行断点同步。
30、可选地,从消息队列中创建的数据结构内,获取待同步的断点信息包括:
31、利用消费者模式在消息队列中创建的数据结构内获取最后一条断点信息,作为待同步的断点信息。
32、根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的消息队列的断点同步方法。
33、根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的消息队列的断点同步方法。
34、本发明的消息队列的断点同步方法,通过在同步服务启动时,建立目标端数据库与消息队列之间的连接,并开启事务机制,保证了在增量数据同步过程中且目标端是消息队列的情况下事务的原子性。本发明的消息队列的断点同步方法还通过根据消息队列中的断点信息存储状态,识别待提交的事务的断点信息,并且在提交待提交的事务之前,将待提交的事务的断点信息封装到待提交的事务中,实现了断点信息的稳定同步,避免了由于断点信息同步异常导致的重启服务后成数据丢失或者数据重复写入的问题,保证了断点信息更新的实时性,保证了同步数据的一致性。
35、进一步地,本发明的消息队列的断点同步方法,通过将待提交的事务的断点信息存储在消息队列中预先创建的数据结构内,基于消息队列与事务的对应关系,实现了待提交的事务的断点信息与待提交的事务的稳定封装,保证了断点同步的可靠性,从而进一步保证了数据一致性。
36、更进一步地,本发明的消息队列的断点同步方法,通过在同步服务出现异常或重启的情况下,建立目标端数据库与消息队列之间的连接,开启事务机制,利用消费者模式从消息队列中创建的数据结构内获取待同步的断点信息,并将待同步的断点信息返回给同步服务,以进行断点同步,实现了对断点信息的准确获取,利用消费者模式进行简易消息获取操作,提高了在同步服务重启后准确获得断点信息的及时性,保证了目标端数据库和源端数据库之间的数据同步效率。
37、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
本文地址:https://www.jishuxx.com/zhuanli/20241021/320415.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。