数据库备机的接入方法、装置及系统与流程

文档序号:34391061发布日期:2023-06-08 09:57阅读:35来源:国知局
数据库备机的接入方法、装置及系统与流程

本发明涉及数据库,具体而言,涉及一种数据库备机的接入方法、装置及系统。


背景技术:

1、关系型数据库为了高可用性,会采用主备复制机制,在主机上处理用户的修改操作,造成了数据的变化,主备复制机制将主机上对数据的修改以日志的形式传送到备机上,备机需要同步主机日志、回放主机日志,同步主机日志是指备机的接收线程接收主机日志并持久化到本地文件中,回放主机日志是指回放线程读取同步日志的内容并在备机上执行日志中记录的操作内容。相当于在备机上重新执行了与主机记录一致的修改,使备机达到与主机数据一致的功能。

2、在采用重做日志redo log记录对数据库中数据的修改时,通常采用lsn(logsequence number,日志的逻辑序列号)来对redo log进行标识,lsn是一个数值,lsn的值会随着日志的写入而逐渐增大。在主备复制的实际情况中,备机一般落后于主机,即存在主备机之间的延迟,相关技术中,用redo log进行主备复制时,主机在redo log刷新到主机的redo文件中后,就直接将缓冲器buffer中的修改数据在主机的数据文件中进行落盘,因此,主机上的lsn将大于备机上的lsn,即主机的数据文件将包含比备机更多的修改,导致在主备切换后,由于当前的备机(原主机)的数据文件包含了新主机(原备机)上没有的修改,将出现备机(原主机)无法接入主机(原备机)的问题。

3、相关技术中,在目前的关系型数据库上,上述情况下只能采用人工修复方式,无法做到迅速自动接入。

4、针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。


技术实现思路

1、本发明提供了一种数据库备机的接入方法、装置及系统,以解决相关技术在主备切换后,出现原主机无法接入新主机中的技术问题。

2、根据本技术实施例的一个方面,提供了一种数据库备机的接入方法,所述方法应用于第一设备,所述第一设备与第二设备连接,包括:将所述第一设备中的重做日志发送至第二设备,并检测是否接收到所述第二设备反馈的响应信息,所述响应信息包括所述重做日志在所述第二日志文件中的逻辑序列号lsn,用于指示所述第二设备将所述重做日志刷新至第二日志文件,其中,所述第一设备为主机,所述第二设备为备机,所述第二日志文件用于在所述第二设备上按照递增顺序存储重做日志;若接收到所述第二设备反馈的响应信息,则将所述重做日志对应的修改数据落盘至第一数据文件;在所述第一设备与所述第二设备进行主备切换后,将所述第一数据文件中最大的lsn与第一日志文件中最大的lsn调整为一致,所述第一数据文件为所述第一设备上第一数据库的磁盘中的数据文件,所述第一日志文件用于在所述第一设备上按照递增顺序存储重做日志;向所述第二设备发送接入请求,所述接入请求包括所述第一数据文件中最大的lsn和第一重做日志历史文件,所述第一重做日志历史文件用于记录重做日志的数据库标识、和在与所述数据库标识对应的数据库中存储的第一条重做日志的lsn;根据所述接入请求,将所述第一设备作为备机接入所述第二设备。

3、进一步地,在将所述第一设备作为备机接入所述第二设备之后,所述方法还包括:接收所述第二设备发送的同步日志,并判断所述同步日志中是否携带数据库标识;若所述同步日志中携带数据库标识,则解析所述同步日志,得到所述同步日志对应的第一数据库标识和所述同步日志对应的第一lsn;获取所述第一重做日志历史文件中最后一条历史记录,获取所述最后一条历史记录对应的第二数据库标识;判断所述第一数据库标识与所述第二数据库标识是否相同;若所述第一数据库标识与所述第二数据库标识不同,则将所述第一数据库标识、所述第一lsn添加至所述最后一条历史记录后。

4、进一步地,若接收到所述第二设备反馈的响应信息,则将所述重做日志对应的修改数据落盘至第一数据文件包括:若接收到多个第二设备反馈的响应信息,则查找所述多个第二设备中响应信息中最大的lsn;确定第一日志文件中与所述最大的lsn对应的重做日志,并将所述重做日志对应的修改数据落盘至第一数据文件。

5、进一步地,将所述第一数据文件中最大lsn与第一日志文件中最大lsn调整为一致包括:获取所述第一数据文件中每个数据页上的lsn,记录所有数据页中最大的第二lsn;将所述第二lsn转换为第一日志文件中的偏移位置;清除所述偏移位置之后的重做日志,使所述第一数据文件中最大lsn与第一日志文件中最大lsn调整为一致。

6、根据本技术实施例的另一个方面,提供了一种数据库备机的接入方法,所述方法应用于第二设备,所述第二设备与第一设备连接,包括:接收所述第一设备发送的重做日志;将所述重做日志刷新至第二日志文件后,发送响应信息至所述第一设备,所述响应信息包括所述重做日志在所述第二日志文件中的逻辑序列号lsn,用于指示所述第二设备将所述重做日志刷新至第二日志文件,其中,所述第一设备为主机,所述第二设备为备机;在所述第一设备与所述第二设备进行主备切换后,获取所述第一设备发送的接入请求;解析所述接入请求中的第一重做日志历史文件,并获取所述第二设备对应的第二重做日志历史文件;若所述第一重做日志历史文件中的修改集合是所述第二重做日志历史文件的修改集合的子集,则将所述第一设备作为备机接入所述第二设备。

7、进一步地,所述第二设备包括多个,所述第一设备与所述第二设备进行主备切换包括:若所述第一设备发生故障,则从多个第二设备中选择lsn最大的目标设备,将所述目标设备作为新主机;将所述第一设备作为备机接入所述目标设备中,并将所述第二设备中除所述目标设备之外的设备作为备机接入所述目标设备中。

8、进一步地,将所述第二设备中除所述目标设备之外的设备作为备机接入所述目标设备中包括:获取所述第二设备中除所述目标设备之外的设备的主备配置信息;将所述主备配置信息中的主机配置修改为所述目标设备。

9、根据本技术实施例的另一个方面,还提供了一种数据库备机的接入装置,应用于第一设备,包括:交互模块,用于将所述第一设备生成的重做日志发送至第二设备,并检测是否接收到所述第二设备反馈的响应信息,所述响应信息包括所述重做日志在所述第二日志文件中的逻辑序列号lsn,用于指示所述第二设备将所述重做日志刷新至第二日志文件,其中,所述第一设备为主机,所述第二设备为备机,所述第二日志文件用于在所述第二设备上按照递增顺序存储重做日志;落盘模块,用于若接收到所述第二设备反馈的响应信息,则将所述重做日志对应的修改数据落盘至第一数据文件;调整模块,用于在所述第一设备与所述第二设备进行主备切换后,将所述第一数据文件中最大的lsn与第一日志文件中最大的lsn调整为一致,所述第一数据文件为所述第一设备上第一数据库的磁盘中的数据文件,所述第一日志文件用于在所述第一设备上按照递增顺序存储重做日志;发送模块,用于向所述第二设备发送接入请求,所述接入请求包括所述第一数据文件中最大的lsn和第一重做日志历史文件,所述第一重做日志历史文件用于记录重做日志的数据库标识、和在与所述数据库标识对应的数据库中存储的第一条重做日志的lsn;接入模块,用于根据所述接入请求,将所述第一设备作为备机接入所述第二设备。

10、进一步地,所述数据库备机的接入装置包括:记录模块,用于接收所述第二设备发送的同步日志,并判断所述同步日志中是否携带数据库标识;若所述同步日志中携带数据库标识,则解析所述同步日志,得到所述同步日志对应的第一数据库标识和所述同步日志对应的第一lsn;获取所述第一重做日志历史文件中最后一条历史记录,获取所述最后一条历史记录对应的第二数据库标识;判断所述第一数据库标识与所述第二数据库标识是否相同;若所述第一数据库标识与所述第二数据库标识不同,则将所述第一数据库标识、所述第一lsn添加至所述最后一条历史记录后。

11、进一步地,所述落盘模块包括第一落盘单元,用于若接收到多个第二设备反馈的响应信息,则查找所述多个第二设备中响应信息中最大的lsn;确定第一日志文件中与所述最大的lsn对应的重做日志,并将所述重做日志对应的修改数据落盘至第一数据文件。

12、进一步地,所述调整模块包括第一调整单元,用于获取所述第一数据文件中每个数据页上的lsn,记录所有数据页中最大的第二lsn;将所述第二lsn转换为第一日志文件中的偏移位置;清除所述偏移位置之后的重做日志,使所述第一数据文件中最大lsn与第一日志文件中最大lsn调整为一致。

13、根据本技术实施例的另一个方面,还提供了一种数据库备机的接入装置,应用于第二设备,包括:接收模块,用于接收所述第一设备发送的重做日志;发送模块,用于将所述重做日志刷新至第二日志文件后,发送响应信息至所述第一设备,所述响应信息包括所述重做日志在所述第二日志文件中的逻辑序列号lsn,用于指示所述第二设备将所述重做日志刷新至第二日志文件,其中,所述第一设备为主机,所述第二设备为备机;获取模块,用于在所述第一设备与所述第二设备进行主备切换后,获取所述第一设备发送的接入请求;解析模块,用于解析所述接入请求中的第一重做日志历史文件,并获取所述第二设备对应的第二重做日志历史文件;判断模块,用于若所述第一重做日志历史文件中的修改集合是所述第二重做日志历史文件的修改集合的子集,则将所述第一设备作为备机接入所述第二设备。

14、所述获取模块包括第一获取单元,用于若所述第一设备发生故障,则从多个第二设备中选择lsn最大的目标设备,将所述目标设备作为新主机;将所述第一设备作为备机接入所述目标设备中,并将所述第二设备中除所述目标设备之外的设备作为备机接入所述目标设备中。

15、所述第一获取单元,还用于获取所述第二设备中除所述目标设备之外的设备的主备配置信息;将所述主备配置信息中的主机配置修改为所述目标设备。

16、根据本技术实施例的另一方面,还提供了一种数据库备机的接入系统,该包括第一设备和第二设备,其中,所述第一设备与第二设备连接,包括如上述应用于第一设备的装置;所述第二设备,包括如上述应用于第二设备的装置。

17、通过本发明,采用延迟刷脏的方式,在主备切换后,使第一设备(作为备机)已经落盘的数据页所对应的修改量小于等于第二设备(作为当前主机),并使第一设备上重做日志和数据页相一致,即第一设备上重做日志的修改记录基金应用到数据页中,并基于重做日志历史的记录,将第一设备中包括的不同数据库的修改记录集合与第二设备进行比较,第一设备上重做日志历史记录的集合是第二设备的子集,基于此,可一定程度上避免出现作为备机待接入的机器比新主机包含新主机上没有的修改,本实施例能在较短时间内让待接入的备机达到能接入主机的状态。传统方式是借助于数据库的备份恢复功能,使待接入的备机结点恢复成主机的某个历史状态或最新状态,恢复速度慢,且不便于程序化,更多可能是需要人工干预,并且本实施例操作过程简单,便于程序实现,在主备机相差不太大时,都能接入成功,减少人工干预。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1