CN108009045B - 一种主备数据库故障处理方法及装置 - Google Patents
一种主备数据库故障处理方法及装置 Download PDFInfo
- Publication number
- CN108009045B CN108009045B CN201610928327.4A CN201610928327A CN108009045B CN 108009045 B CN108009045 B CN 108009045B CN 201610928327 A CN201610928327 A CN 201610928327A CN 108009045 B CN108009045 B CN 108009045B
- Authority
- CN
- China
- Prior art keywords
- database
- main
- standby
- node database
- node
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施例提供了一种主备数据库故障处理方法及装置,该方法中,主管理程序分别向主节点数据库和备节点数据库发送心跳报文;判断在第一预设时间段内是否接收到回复报文;如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,将所述备节点数据库的服务模式切换为主数据库服务模式。本发明实施例中,在主节点和备节点中未故障的一节点上运行主管理程序,并通过主管理程序分别向主节点数据库和备节点数据库发送心跳报文,如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,则说明主节点数据库无法继续提供主数据库服务,此时,通过将备节点数据库的服务模式切换为主数据库服务模式的方式达到继续提供主数据库服务的目的。
Description
技术领域
本发明涉及网络通信技术领域,特别是涉及一种主备数据库故障处理方法及装置。
背景技术
随着网络通信技术的不断发展,越来越多的数据需要存储。为了提高数据存储的可靠性,一般采用高可用性HA存储系统,该HA存储系统中包括主、备节点,通过主、备节点进行同步数据存储,其中,主节点数据库默认提供主数据库服务,备节点数据库默认提供备数据库服务模式,其中,主节点数据库和备节点数据库的同步过程一般为:当主、备节点正常运行时,将存储数据写入主节点数据库中,并实时地通过数据库相关技术,比如:流复制技术,写入备节点数据库中。
现有技术中,当主节点异常或主节点数据库程序异常时将导致主节点数据库无法继续提供主数据库服务,例如:读、写服务,因此,如何在主节点异常或主节点数据库程序异常时进行故障处理以继续提供主数据库服务是亟需解决的问题。
发明内容
本发明实施例的目的在于提供一种主备数据库故障处理方法及装置,以在主节点异常或主节点数据库程序异常时进行故障处理以继续提供主数据库服务。具体技术方案如下:
一种主备数据库故障处理方法,应用于高可用性HA存储系统,所述HA存储系统包括主节点和备节点,所述主节点包括默认提供主数据库服务的主节点数据库,所述备节点包括默认提供备数据库服务的备节点数据库,且所述主节点和所述备节点中未故障的一节点上运行主管理程序,所述方法包括:
所述主管理程序分别向主节点数据库和备节点数据库发送心跳报文;
判断在第一预设时间段内是否接收到回复报文;
如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,将所述备节点数据库的服务模式切换为主数据库服务模式。
可选的,在将所述备节点数据库的服务模式切换为主数据库服务模式的步骤后,所述方法还包括:
将所述主节点数据库的服务模式切换为备数据库服务模式,并向所述主节点数据库发送心跳报文,在接收到所述主节点数据库发送的回复报文后,向所述备节点数据库发送心跳报文;
判断在第二预设时间段内是否接收到回复报文;
如果接收到回复报文,获取所述备节点数据库中存储的最晚的同步时间点之后的预写式日志WAL文件,并将所述WAL文件发送至所述主节点数据库,以使所述主节点数据库进行数据同步;
其中,所述主管理程序在主节点数据库与备节点数据库均正常时,按照第一预设频率检测所述主节点数据库与所述备节点数据库中的数据是否同步,并将每次检测到数据同步的时间点保存为同步时间点。
可选的,本发明实施例提供的一种主备数据库故障处理方法还包括:
当判断在第二预设时间段内未接收到回复报文,则按照第二预设频率继续发送心跳报文至所述备节点数据库,如果超过第三预设时间段仍未接收到回复报文,则将所述主节点数据库的服务模式切换为主数据库服务模式。
可选的,在将所述主节点数据库的服务模式切换为主数据库服务模式的步骤后,还包括:
将所述备节点数据库的服务模式切换为备数据库服务模式,并向切换后的备节点数据库发送心跳报文,在接收到所述备节点数据库发送的回复报文后,向所述主节点数据库发送心跳报文;
判断在第四预设时间段内是否接收到回复报文;
如果接收到回复报文,分别获取所述主节点数据库中和所述备节点数据库中存储的最晚的同步时间点之后的WAL文件,并将所获取的WAL文件进行对比,确定第一目标文件和第二目标文件,将所述第一目标文件发送至所述备节点数据库,将所述第二目标文件发送至所述主节点数据库,以使所述主节点数据库和所述备节点数据库的数据同步;
其中,所述第一目标文件为存储于所述主节点数据库中而未存储于所述备节点数据库中的WAL文件,所述第二目标文件为存储于所述备节点数据库中而未存储于所述主节点数据库中的WAL文件。
一种主备数据库故障处理装置,应用于高可用性HA存储系统,所述HA存储系统包括主节点和备节点,所述主节点包括默认提供主数据库服务的主节点数据库,所述备节点包括默认提供备数据库服务的备节点数据库,且所述主节点和所述备节点中未故障的一节点上运行主管理程序,所述主管理程序包括所述主备数据库故障处理装置,所述装置包括:
第一发送模块,用于分别向主节点数据库和备节点数据库发送心跳报文;
第一判断模块,用于判断在第一预设时间段内是否接收到回复报文;
第一切换模块,用于如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,将所述备节点数据库的服务模式切换为主数据库服务模式。
可选的,本发明实施例提供的一种主备数据库故障处理装置还包括:
第二发送模块,用于在将所述备节点数据库的服务模式切换为主数据库服务模式后,将所述主节点数据库的服务模式切换为备数据库服务模式,并向所述主节点数据库发送心跳报文,在接收到所述主节点数据库发送的回复报文后,向所述备节点数据库发送心跳报文;
第二判断模块,用于判断在第二预设时间段内是否接收到回复报文,如果是,触发第一获取模块;
所述第一获取模块,用于获取所述备节点数据库中存储的最晚的同步时间点之后的预写式日志WAL文件,并将所述WAL文件发送至所述主节点数据库,以使所述主节点数据库进行数据同步;
其中,所述主管理程序在主节点数据库与备节点数据库均正常时,按照第一预设频率检测所述主节点数据库与所述备节点数据库中的数据是否同步,并将每次检测到数据同步的时间点保存为同步时间点。
可选的,本发明实施例提供的一种主备数据库故障处理装置还包括:
第二切换模块,用于当判断在第二预设时间段内未接收到回复报文,则按照第二预设频率继续发送心跳报文至所述备节点数据库,如果超过第三预设时间段仍未接收到回复报文,则将所述主节点数据库的服务模式切换为主数据库服务模式。
可选的,本发明实施例提供的一种主备数据库故障处理装置还包括:
第三发送模块,用于在将所述主节点数据库的服务模式切换为主数据库服务模式后,将所述备节点数据库的服务模式切换为备数据库服务模式,并向切换后的备节点数据库发送心跳报文,在接收到所述备节点数据库发送的回复报文后,向所述主节点数据库发送心跳报文;
第三判断模块,用于判断在第四预设时间段内是否接收到回复报文,如果是,触发第二获取模块;
所述第二获取模块,用于分别获取所述主节点数据库中和所述备节点数据库中存储的最晚的同步时间点之后的WAL文件,并将所获取的WAL文件进行对比,确定第一目标文件和第二目标文件,将所述第一目标文件发送至所述备节点数据库,将所述第二目标文件发送至所述主节点数据库,以使所述主节点数据库和所述备节点数据库的数据同步;
其中,所述第一目标文件为存储于所述主节点数据库中而未存储于所述备节点数据库中的WAL文件,所述第二目标文件为存储于所述备节点数据库中而未存储于所述主节点数据库中的WAL文件。
本发明实施例中,在主节点和备节点中未故障的一节点上运行主管理程序,并通过主管理程序分别向主节点数据库和备节点数据库发送心跳报文,如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,则说明主节点数据库无法继续提供主数据库服务,此时,通过将备节点数据库的服务模式切换为主数据库服务模式的方式达到继续提供主数据库服务的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的主备数据库故障处理方法的第一种流程示意图;
图2为本发明实施例提供的主备数据库故障处理方法的第二种流程示意图;
图3为本发明实施例提供的主备数据库故障处理方法的第三种流程示意图;
图4为本发明实施例提供的主备数据库故障处理装置的第一种结构示意图;
图5为本发明实施例提供的主备数据库故障处理装置的第二种结构示意图;
图6为本发明实施例提供的主备数据库故障处理装置的第三种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术问题,本发明实施例提供了一种主备数据库故障处理方法及装置。
下面首先对本发明实施例所提供的一种主备数据库故障处理方法进行介绍。
需要说明的是,本发明实施例所提供的一种主备数据库故障处理方法应用于高可用性HA存储系统,HA(High Available,高可用性)存储系统包括主节点和备节点,主节点包括默认提供主数据库服务的主节点数据库,备节点包括默认提供备数据库服务的备节点数据库,且主节点和备节点中未故障的一节点上运行主管理程序。其中,默认提供主数据库服务的主节点数据库是指经过初始化后提供主数据库服务的主节点数据库,即在理想状态下,主节点数据库从开始使用时就被设置为提供主数据库服务;默认提供备数据库服务的备节点数据库是指经过初始化后提供备数据库服务的备节点数据库,即在理想状态下,备节点数据库从开始使用时就被设置为提供备数据库服务。
其中,主节点数据库与备节点数据库之间互相建立通信连接,主管理程序用于对主节点数据库与备节点数据库进行管理,因此,主管理程序分别与主节点数据库及备节点数据库通信连接。
主管理程序在启动时会在其所在的节点上生成一个虚拟IP,该虚拟IP为用户访问数据库服务的唯一IP地址,用户通过向该虚拟IP对应的主管理程序发送请求的方式来访问数据库服务。
主管理程序在接收到用户发出的请求后,会均衡的分配该请求到主节点数据库和备节点数据库上,例如:主管理程序会将“只读请求”发送到主节点数据库和备节点数据库上进行处理;将“写请求”只发送到主节点数据库上进行处理;由此,有效的利用了备节点数据库的处理能力,使得备节点数据库并不只用于存储数据,并且有效的降低了主节点数据库的处理压力。
如图1所示,本发明实施例提供的一种主备数据库故障处理方法,可以包括:
S101:主管理程序分别向主节点数据库和备节点数据库发送心跳报文。
由于主管理程序用于管理主节点数据库和备节点数据库,因此,主管理程序为了确定主节点数据库和备节点数据库是否可以正常提供数据库服务,分别向主节点数据库和备节点数据库发送心跳报文。
S102:判断在第一预设时间段内是否仅接收到备节点数据库发送的回复报文,如果是,执行步骤S103,如果否,不做处理。
在分别向主节点数据库和备节点数据库发送心跳报文后,判断在第一预设时间段内是否接收到回复报文,如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,则执行步骤S103。
S103:将备节点数据库的服务模式切换为主数据库服务模式。
如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,说明备节点数据库可以正常提供备数据库服务,主节点数据库可能由于主节点异常或者主节点数据库程序异常导致不能正常提供主数据库服务。
此时,为了不影响正常处理用户的请求,主管理程序通过数据库访问接口将备节点数据库的服务模式切换为主数据库服务模式,以使备节点数据库提供主数据库服务,从而达到正常处理用户的请求的目的。
本发明实施例中,在主节点和备节点中未故障的一节点上运行主管理程序,并通过主管理程序分别向主节点数据库和备节点数据库发送心跳报文,如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,则说明主节点数据库无法正常提供主数据库服务,此时,通过将备节点数据库的服务模式切换为主数据库服务模式的方式达到正常提供主数据库服务的目的。
在图1所示方法的基础上,如图2所示,本发明实施例提供的一种主备数据库故障处理方法,在步骤S103后,还可以包括:
S104:将主节点数据库的服务模式切换为备数据库服务模式,并向主节点数据库发送心跳报文,在接收到主节点数据库发送的回复报文后,向备节点数据库发送心跳报文。
在将备节点数据库的服务模式切换为主数据库服务模式后,将主节点数据库的服务模式切换为备数据库服务模式,并向主节点数据库发送心跳报文,判断主节点数据库是否恢复正常提供数据库服务,在接收到主节点数据库发送的回复报文后,确定主节点数据库可正常提供数据库服务,此时,需要再向备节点数据库发送心跳报文,判断此时的备节点数据库是否可正常提供数据库服务。
S105:判断在第二预设时间段内是否接收到回复报文,如果是,执行步骤S106,如果否,执行步骤S107。
判断在第二预设时间段内是否接收到回复报文,并根据判断结果进行后续处理。
S106:获取备节点数据库中存储的最晚的同步时间点之后的预写式日志WAL文件,并将该WAL文件发送至主节点数据库,以使主节点数据库进行数据同步。
如果在第二预设时间段内接收到回复报文,确定备节点数据库可正常提供数据库服务,即此时主节点数据库和备节点数据库均可正常提供数据库服务,且主节点数据库提供备数据库服务,备节点数据库提供主数据库服务。
一般在主节点数据库和备节点数据库均正常的情况下,主节点数据库和备节点数据库之间会通过流复制技术实现主节点数据库和备节点数据库的WAL(Write-AheadLogging,预写式日志)文件同步,即数据同步,其中,该WAL文件为对数据库的操作进行的写日志。
主管理程序在主节点数据库与备节点数据库均正常时,按照第一预设频率检测主节点数据库与备节点数据库中的数据是否同步,并将每次检测到数据同步的时间点保存为同步时间点,其中,该第一预设频率可以为1小时/一次、2小时/一次或3小时/一次,这都是合理的。
例如:假设主管理程序按照1小时/一次的频率检测主节点数据库与备节点数据库中的数据是否同步,假设从6:00开始检测,并将每次检测到数据同步的时间点保存为同步时间点,则同步时间点依次为7:00、8:00、9:00……,如果在9:00到10:00之间主节点数据库无法正常提供数据库服务,则存储的最晚的同步时间点为9:00。
由于在主节点数据库和备节点数据库中有至少一个未正常时,无法进行数据同步,因此,在主节点数据库恢复正常后,获取备节点数据库中存储的最晚的同步时间点之后的预写式日志WAL文件,并将该WAL文件发送至主节点数据库,以使主节点数据库进行数据同步。
S107:按照第二预设频率继续发送心跳报文至备节点数据库,如果超过第三预设时间段仍未接收到回复报文,则将主节点数据库的服务模式切换为主数据库服务模式。
如果在第二预设时间段内未接收到回复报文,确定备节点数据库无法正常提供数据库服务,即此时主节点数据库可正常提供数据库服务而备节点数据库无法正常提供数据库服务,由于备节点数据库无法正常提供数据库服务的原因可能是因为备节点异常导致的,因此需要预留一段时间以便备节点恢复正常后重新启动。
因此,如果在第二预设时间段内未接收到回复报文,则按照第二预设频率继续发送心跳报文至备节点数据库,如果超过第三预设时间段仍未接收到回复报文,则确定备节点数据库将一直处于无法提供数据库服务的状态。
此时,为了不影响正常处理用户的请求,主管理程序通过数据库访问接口将主节点数据库的服务模式切换为主数据库服务模式,以使主节点数据库提供主数据库服务,从而达到正常处理用户的请求的目的。
为方便理解,下面通过一具体实施例对图2所示方法进行详细描述:
例如:HA存储系统包括主节点1和备节点2,主节点1包括默认提供主数据库服务的主节点数据库11,备节点2包括默认提供备数据库服务的备节点数据库21,且主节点1和备节点2中未故障的一节点上运行主管理程序A;
假设主管理程序A按照1小时/一次的频率检测主节点数据库与备节点数据库中的数据是否同步,并将每次检测到数据同步的时间点保存为同步时间点,且主节点数据库11在9:10时无法正常提供数据库服务,则最晚的同步时间点为9:00,且主节点数据库11在9:30时恢复正常提供数据库服务,第一预设时间段为1分钟,第二预设时间段为2分钟;
主管理程序A分别向主节点数据库11和备节点数据库21发送心跳报文,判断在1分钟内是否仅接收到备节点数据库21发送的回复报文,如果是,将备节点数据库21的服务模式切换为主数据库服务模式;
将主节点数据库11的服务模式切换为备数据库服务模式,并向主节点数据库11发送心跳报文,在9:30接收到主节点数据库11发送的回复报文后,向备节点数据库21发送心跳报文,判断在2分钟内是否接收到回复报文;
(1)假设备节点数据库21在9:30之后可正常提供数据库服务;
如果在2分钟内接收到回复报文,说明主节点数据库11与备节点数据库21均可正常提供数据库服务,此时,获取备节点数据库21中存储的9:00之后的预写式日志WAL文件,并将该WAL文件发送至主节点数据库11,以使主节点数据库11进行数据同步;
(2)假设备节点数据库21在9:30之后无法正常提供数据库服务,第三预设时间段为8分钟,第二预设频率为5秒/一次;
如果在2分钟内未接收到回复报文,确定备节点数据库21无法正常提供数据库服务,按照5秒/一次的频率继续发送心跳报文至备节点数据库21,如果超过8分钟仍未接收到回复报文,则将主节点数据库11的服务模式切换为主数据库服务模式,以使主节点数据库11提供主数据库服务,从而达到正常处理用户的请求的目的。
在图2所示方法的基础上,如图3所示,本发明实施例提供的一种主备数据库故障处理方法,在步骤S107后,还可以包括:
S108:将备节点数据库的服务模式切换为备数据库服务模式,并向切换后的备节点数据库发送心跳报文,在接收到备节点数据库发送的回复报文后,向主节点数据库发送心跳报文。
在将主节点数据库的服务模式切换为主数据库服务模式后,将备节点数据库的服务模式切换为备数据库服务模式,并向切换后的备节点数据库发送心跳报文,判断备节点数据库是否恢复正常提供数据库服务,在接收到备节点数据库发送的回复报文后,确定备节点数据库可正常提供数据库服务,此时,需要再向主节点数据库发送心跳报文,判断此时的主节点数据库是否可正常提供数据库服务。
S109:判断在第四预设时间段内是否接收到回复报文,如果是,执行步骤S110,如果否,不做处理。
判断在第四预设时间段内是否接收到回复报文,并根据判断结果进行后续处理。
S110:分别获取主节点数据库中和备节点数据库中存储的最晚的同步时间点之后的WAL文件,并将所获取的WAL文件进行对比,确定第一目标文件和第二目标文件,将第一目标文件发送至备节点数据库,将第二目标文件发送至主节点数据库,以使主节点数据库和备节点数据库的数据同步。
如果在第四预设时间段内接收到回复报文,确定主节点数据库可正常提供数据库服务,即此时主节点数据库和备节点数据库均可正常提供数据库服务,且主节点数据库提供主数据库服务,备节点数据库提供备数据库服务。
由于在主节点数据库和备节点数据库中有至少一个未正常时,无法进行数据同步,因此,在主节点数据库不正常而备节点数据库正常时,此时的WAL文件存储在备节点数据库中而未存储在主节点数据库中,在主节点数据库恢复正常后而备节点数据库不正常时,此时的WAL文件存储在主节点数据库中而未存储在备节点数据库中。
因此,在备节点数据库恢复正常后,此时主节点数据库和备节点数据库均可正常提供数据库服务,为了使两个数据库中的数据同步,分别获取主节点数据库中和备节点数据库中存储的最晚的同步时间点之后的WAL文件,并将所获取的WAL文件进行对比,确定第一目标文件和第二目标文件,将第一目标文件发送至备节点数据库,将第二目标文件发送至主节点数据库,以使主节点数据库和备节点数据库的数据同步。
其中,第一目标文件为存储于主节点数据库中而未存储于备节点数据库中的WAL文件,第二目标文件为存储于备节点数据库中而未存储于主节点数据库中的WAL文件。
由此,完成了主节点数据库无法正常提供数据库服务,将备节点数据库的服务模式切换为主数据库服务模式;然后,主节点数据库恢复正常提供数据库服务后,备节点数据库无法正常提供数据库服务,将主节点数据库的服务模式切换为主数据库服务模式;最后,备节点恢复正常提供数据库服务后的数据同步。
为方便理解,下面通过一具体实施例对图2所示方法进行详细描述:
例如:HA存储系统包括主节点1和备节点2,主节点1包括默认提供主数据库服务的主节点数据库11,备节点2包括默认提供备数据库服务的备节点数据库21,且主节点1和备节点2中未故障的一节点上运行主管理程序A;
假设主管理程序A按照1小时/一次的频率检测主节点数据库与备节点数据库中的数据是否同步,并将每次检测到数据同步的时间点保存为同步时间点,且主节点数据库11在9:10时无法正常提供数据库服务,则最晚的同步时间点为9:00,且主节点数据库11在9:30时恢复正常提供数据库服务,第一预设时间段为1分钟,第二预设时间段为2分钟;
主管理程序A分别向主节点数据库11和备节点数据库21发送心跳报文,判断在1分钟内是否仅接收到备节点数据库21发送的回复报文,如果是,将备节点数据库21的服务模式切换为主数据库服务模式;
将主节点数据库11的服务模式切换为备数据库服务模式,并向主节点数据库11发送心跳报文,在9:30接收到主节点数据库11发送的回复报文后,向备节点数据库21发送心跳报文,判断在2分钟内是否接收到回复报文;
(1)假设备节点数据库21在9:30之后可正常提供数据库服务;
如果在2分钟内接收到回复报文,说明主节点数据库11与备节点数据库21均可正常提供数据库服务,此时,获取备节点数据库21中存储的9:00之后的预写式日志WAL文件,并将该WAL文件发送至主节点数据库11,以使主节点数据库11进行数据同步;
(2)假设备节点数据库21在9:30无法正常提供数据库服务,且9:39恢复正常提供数据库服务,第三预设时间段为8分钟,第四预设时间段为3分钟,第二预设频率为5秒/一次;
如果在2分钟内未接收到回复报文,确定备节点数据库21无法正常提供数据库服务,按照5秒/一次的频率继续发送心跳报文至备节点数据库21,如果超过8分钟仍未接收到回复报文,则将主节点数据库11的服务模式切换为主数据库服务模式;
将备节点数据库21的服务模式切换为备数据库服务模式,并向切换后的备节点数据库21发送心跳报文,在接收到备节点数据库21发送的回复报文后,向主节点数据库11发送心跳报文;
判断在3分钟内是否接收到回复报文,如果是,分别获取主节点数据库中和备节点数据库中存储的9:00之后的WAL文件,其中,所获取的主节点数据库中存储的为9:00-9:10的WAL文件和9:40以后的WAL文件,所获取的备节点数据库中存储的为9:10-9:30的WAL文件,并将所获取的WAL文件进行对比,确定第一目标文件为9:00-9:10的WAL文件和9:40以后的WAL文件,确定第二目标文件为9:10-9:30的WAL文件,将第一目标文件发送至备节点数据库,将第二目标文件发送至主节点数据库,以使主节点数据库和备节点数据库的数据同步。
另外,本发明是实施例为了保证一直存在主管理程序用于对主节点数据库与备节点数据库进行管理,在主管理程序未运行的节点上运行备管理程序,例如:如果主管理程序运行于主节点上,则备管理程序运行于备节点上;如果主管理程序运行与备节点上,则备管理程序运行于主节点上。
在主节点与备节点刚启动时,未存在故障的节点,此时先启动的管理程序即为主管理程序,另一个管理程序则为备管理程序,备管理程序分别与主节点数据库及备节点数据库通信连接,且主管理程序与备管理程序之间互相建立通信连接,并按照第三预设频率向对方发送心跳报文,当未接收到对方发送的回复报文时,即可确定对方管理程序异常,此时,将自身的管理服务切换为主管理程序管理服务模式。
例如:假设主管理程序运行于主节点上,备管理程序运行于备节点上,主节点异常,备管理程序未接收到主管理程序发送的回复报文,则将自身的管理服务切换为主管理程序管理服务模式,将主管理程序的管理服务切换为备管理程序管理服务模式。
在一种实现方式中,如果主管理程序位于备节点上且主节点数据库无法正常提供数据库服务的原因为主节点异常,则在图2所示方法中步骤S104在接收到主节点数据库发送的回复报文后,该方法还可以包括:
向备管理程序发送通知信息以使备管理程序与主管理程序数据同步,其中,通知信息中包括目前主、备数据库的标识信息。
由此,使得备管理程序获知目前主节点数据库和备节点数据库的服务模式分别为哪个数据库服务模式。
在一种实现方式中,如果主管理程序位于主节点上且备节点数据库无法正常提供数据库服务的原因为备节点异常,则在图3所示方法中步骤S108在接收到备节点数据库发送的回复报文后,该方法还可以包括:
向备管理程序发送通知信息以使备管理程序与主管理程序数据同步,其中,通知信息中包括目前主、备数据库的标识信息。
由此,使得备管理程序获知目前主节点数据库和备节点数据库的服务模式分别为哪个数据库服务模式。
另外,在主节点数据库或者备节点数据库每一次切换服务模式为主数据库服务模式,并开始提供主数据库服务时,都会将自身开始提供主数据库服务模式的开始时间点存储到本节点的磁盘上,由于主节点数据库刚启动时即默认提供主数据库服务,因此,主节点数据库将该启动时间点作为开始时间点也存储到本节点的磁盘上。
在无法提供数据库服务的数据库恢复提供正常的数据库服务后,备管理程序不仅可以通过接收主管理程序发送的通知信息的方式以与主管理程序进行数据同步,还可以通过以下过程进行数据同步:
备管理程序向除恢复正常提供数据库服务以外的另一节点数据库发送心跳报文,判断在第五预设时间段内是否接收到回复报文;
如果接收到回复报文,分别获取主节点数据库最晚开始提供主数据库服务的第一开始时间点和备节点数据库最晚开始提供主数据库服务模式的第二开始时间点,并将第一开始时间点与第二开始时间点进行对比;
如果第二开始时间点早于第一开始时间点,则确定主节点数据库的服务模式为主数据库服务模式,确定备节点数据库提供的服务模式为备数据库服务模式;
如果第二开始时间点晚于第一开始时间点,则确定备节点数据库的服务模式为主数据库服务模式,确定主节点数据库提供的服务模式为备数据库服务模式。
例如:HA存储系统包括主节点1和备节点2,主节点1包括默认提供主数据库服务的主节点数据库11,备节点2包括默认提供备数据库服务的备节点数据库21,且主节点1和备节点2中未故障的一节点上运行主管理程序A,另一个节点上运行备管理程序B,主节点数据库将启动时间点8:00作为开始时间点存储到主节点的磁盘上;
假设主管理程序A按照1小时/一次的频率检测主节点数据库与备节点数据库中的数据是否同步,并将每次检测到数据同步的时间点保存为同步时间点,且主节点数据库11在9:10时无法正常提供数据库服务,则最晚的同步时间点为9:00,且主节点数据库11在9:30时恢复正常提供数据库服务,第一预设时间段为1分钟,第二预设时间段为2分钟,第五预设时间段为4分钟,;
主管理程序A分别向主节点数据库11和备节点数据库21发送心跳报文,判断在1分钟内是否仅接收到备节点数据库21发送的回复报文,如果是,将备节点数据库21的服务模式切换为主数据库服务模式,备节点数据库21将开始时间点9:11存储到备节点的磁盘上;
将主节点数据库11的服务模式切换为备数据库服务模式,并向主节点数据库11发送心跳报文,在9:30接收到主节点数据库11发送的回复报文后,向备节点数据库21发送心跳报文,判断在2分钟内是否接收到回复报文;
此时,备管理程序B向主节点数据库11发送心跳报文,判断在4分钟内是否接收到回复报文;
如果接收到回复报文,分别获取主节点数据库11最晚开始提供主数据库服务的第一开始时间点8:00和备节点数据库21最晚开始提供主数据库服务模式的第二开始时间点9:11,并将第一开始时间点8:00与第二开始时间点9:11进行对比;
第二开始时间点9:11晚于第一开始时间点8:00,则备管理程序B确定备节点数据库21的服务模式为主数据库服务模式,确定主节点数据库11提供的服务模式为备数据库服务模式。
(1)假设备节点数据库21在9:30之后可正常提供数据库服务;
如果在2分钟内接收到回复报文,说明主节点数据库11与备节点数据库21均可正常提供数据库服务,此时,获取备节点数据库21中存储的9:00之后的预写式日志WAL文件,并将该WAL文件发送至主节点数据库11,以使主节点数据库11进行数据同步;
(2)假设备节点数据库21在9:30无法正常提供数据库服务,且9:39恢复正常提供数据库服务,第三预设时间段为8分钟,第四预设时间段为3分钟,第二预设频率为5秒/一次;
如果在2分钟内未接收到回复报文,确定备节点数据库21无法正常提供数据库服务,按照5秒/一次的频率继续发送心跳报文至备节点数据库21,如果超过8分钟仍未接收到回复报文,则将主节点数据库11的服务模式切换为主数据库服务模式,主节点数据库11将开始时间点9:40存储到主节点的磁盘上;
将备节点数据库21的服务模式切换为备数据库服务模式,并向切换后的备节点数据库21发送心跳报文,在接收到备节点数据库21发送的回复报文后,向主节点数据库11发送心跳报文;
判断在3分钟内是否接收到回复报文,如果是,分别获取主节点数据库中和备节点数据库中存储的9:00之后的WAL文件,其中,所获取的主节点数据库中存储的为9:00-9:10的WAL文件和9:40以后的WAL文件,所获取的备节点数据库中存储的为9:10-9:30的WAL文件,并将所获取的WAL文件进行对比,确定第一目标文件为9:00-9:10的WAL文件和9:40以后的WAL文件,确定第二目标文件为9:10-9:30的WAL文件,将第一目标文件发送至备节点数据库,将第二目标文件发送至主节点数据库,以使主节点数据库和备节点数据库的数据同步;
此时,备管理程序B向主节点数据库11发送心跳报文,判断在4分钟内是否接收到回复报文;
如果接收到回复报文,分别获取主节点数据库11最晚开始提供主数据库服务的第一开始时间点9:40和备节点数据库21最晚开始提供主数据库服务模式的第二开始时间点9:11,并将第一开始时间点9:40与第二开始时间点9:11进行对比;
第二开始时间点9:11早于第一开始时间点9:40,则备管理程序B确定主节点数据库11的服务模式为主数据库服务模式,确定备节点数据库21提供的服务模式为备数据库服务模式。
相对于上述方法实施例,如图4所示,本发明还提供了一种主备数据库故障处理装置,应用于高可用性HA存储系统,所述HA存储系统包括主节点和备节点,所述主节点包括默认提供主数据库服务的主节点数据库,所述备节点包括默认提供备数据库服务的备节点数据库,且所述主节点和所述备节点中未故障的一节点上运行主管理程序,所述主管理程序包括所述主备数据库故障处理装置,可以包括:
第一发送模块201,用于分别向主节点数据库和备节点数据库发送心跳报文;
第一判断模块202,用于判断在第一预设时间段内是否接收到回复报文;
第一切换模块203,用于如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,将所述备节点数据库的服务模式切换为主数据库服务模式。
本发明实施例中,在主节点和备节点中未故障的一节点上运行主管理程序,并通过主管理程序分别向主节点数据库和备节点数据库发送心跳报文,如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,则说明主节点数据库无法正常提供主数据库服务,此时,通过将备节点数据库的服务模式切换为主数据库服务模式的方式达到正常提供主数据库服务的目的。
在图4所示装置的基础上,如图5所示,本发明提供的一种主备数据库故障处理装置,还可以包括:
第二发送模块204,用于在将所述备节点数据库的服务模式切换为主数据库服务模式后,将所述主节点数据库的服务模式切换为备数据库服务模式,并向所述主节点数据库发送心跳报文,在接收到所述主节点数据库发送的回复报文后,向所述备节点数据库发送心跳报文;
第二判断模块205,用于判断在第二预设时间段内是否接收到回复报文,如果是,触发第一获取模块206,如果否,触发第二切换模块207;
所述第一获取模块206,用于获取所述备节点数据库中存储的最晚的同步时间点之后的预写式日志WAL文件,并将所述WAL文件发送至所述主节点数据库,以使所述主节点数据库进行数据同步;
其中,所述主管理程序在主节点数据库与备节点数据库均正常时,按照第一预设频率检测所述主节点数据库与所述备节点数据库中的数据是否同步,并将每次检测到数据同步的时间点保存为同步时间点。
所述第二切换模块207,用于按照第二预设频率继续发送心跳报文至所述备节点数据库,如果超过第三预设时间段仍未接收到回复报文,则将所述主节点数据库的服务模式切换为主数据库服务模式。
在图5所示装置的基础上,如图6所示,本发明提供的一种主备数据库故障处理装置,还可以包括:
第三发送模块208,用于在将所述主节点数据库的服务模式切换为主数据库服务模式后,将所述备节点数据库的服务模式切换为备数据库服务模式,并向切换后的备节点数据库发送心跳报文,在接收到所述备节点数据库发送的回复报文后,向所述主节点数据库发送心跳报文;
第三判断模块209,用于判断在第四预设时间段内是否接收到回复报文,如果是,触发第二获取模块210;
所述第二获取模块210,用于分别获取所述主节点数据库中和所述备节点数据库中存储的最晚的同步时间点之后的WAL文件,并将所获取的WAL文件进行对比,确定第一目标文件和第二目标文件,将所述第一目标文件发送至所述备节点数据库,将所述第二目标文件发送至所述主节点数据库,以使所述主节点数据库和所述备节点数据库的数据同步;
其中,所述第一目标文件为存储于所述主节点数据库中而未存储于所述备节点数据库中的WAL文件,所述第二目标文件为存储于所述备节点数据库中而未存储于所述主节点数据库中的WAL文件。
由此,完成了主节点数据库无法正常提供数据库服务,将备节点数据库的服务模式切换为主数据库服务模式;然后,主节点数据库恢复正常提供数据库服务后,备节点数据库无法正常提供数据库服务,将主节点数据库的服务模式切换为主数据库服务模式;最后,备节点恢复正常提供数据库服务后的数据同步。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (4)
1.一种主备数据库故障处理方法,其特征在于,应用于高可用性HA存储系统,所述HA存储系统包括主节点和备节点,所述主节点包括默认提供主数据库服务的主节点数据库,所述备节点包括默认提供备数据库服务的备节点数据库,且所述主节点和所述备节点中未故障的一节点上运行主管理程序,运行有所述主管理程序的节点以外的另一节点上运行有备管理程序,所述主管理程序和所述备管理程序按照第三预设频率向对方发送心跳报文,当未接收到对方发送的心跳报文时,将自身的管理服务切换为主管理程序管理服务模式;所述方法包括:
所述主管理程序分别向主节点数据库和备节点数据库发送心跳报文;
判断在第一预设时间段内是否接收到回复报文;
如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,将所述备节点数据库的服务模式切换为主数据库服务模式;
将所述主节点数据库的服务模式切换为备数据库服务模式,并向所述主节点数据库发送心跳报文,在接收到所述主节点数据库发送的回复报文后,向所述备节点数据库发送心跳报文;
判断在第二预设时间段内是否接收到回复报文;
如果接收到回复报文,获取所述备节点数据库中存储的最晚的同步时间点之后的预写式日志WAL文件,并将所述WAL文件发送至所述主节点数据库,以使所述主节点数据库进行数据同步;
当判断在第二预设时间段内未接收到回复报文,则按照第二预设频率继续发送心跳报文至所述备节点数据库,如果超过第三预设时间段仍未接收到回复报文,则将所述主节点数据库的服务模式切换为主数据库服务模式;
其中,所述主管理程序在主节点数据库与备节点数据库均正常时,按照第一预设频率检测所述主节点数据库与所述备节点数据库中的数据是否同步,并将每次检测到数据同步的时间点保存为同步时间点。
2.根据权利要求1所述的方法,其特征在于,在将所述主节点数据库的服务模式切换为主数据库服务模式的步骤后,还包括:
将所述备节点数据库的服务模式切换为备数据库服务模式,并向切换后的备节点数据库发送心跳报文,在接收到所述备节点数据库发送的回复报文后,向所述主节点数据库发送心跳报文;
判断在第四预设时间段内是否接收到回复报文;
如果接收到回复报文,分别获取所述主节点数据库中和所述备节点数据库中存储的最晚的同步时间点之后的WAL文件,并将所获取的WAL文件进行对比,确定第一目标文件和第二目标文件,将所述第一目标文件发送至所述备节点数据库,将所述第二目标文件发送至所述主节点数据库,以使所述主节点数据库和所述备节点数据库的数据同步;
其中,所述第一目标文件为存储于所述主节点数据库中而未存储于所述备节点数据库中的WAL文件,所述第二目标文件为存储于所述备节点数据库中而未存储于所述主节点数据库中的WAL文件。
3.一种主备数据库故障处理装置,其特征在于,应用于高可用性HA存储系统,所述HA存储系统包括主节点和备节点,所述主节点包括默认提供主数据库服务的主节点数据库,所述备节点包括默认提供备数据库服务的备节点数据库,且所述主节点和所述备节点中未故障的一节点上运行主管理程序,所述主管理程序包括所述主备数据库故障处理装置,运行有所述主管理程序的节点以外的另一节点上运行有备管理程序,所述主管理程序和所述备管理程序按照第三预设频率向对方发送心跳报文,当未接收到对方发送的心跳报文时,将自身的管理服务切换为主管理程序管理服务模式;所述装置包括:
第一发送模块,用于分别向主节点数据库和备节点数据库发送心跳报文;
第一判断模块,用于判断在第一预设时间段内是否接收到回复报文;
第一切换模块,用于如果在第一预设时间段内仅接收到备节点数据库发送的回复报文,将所述备节点数据库的服务模式切换为主数据库服务模式;
第二发送模块,用于在将所述备节点数据库的服务模式切换为主数据库服务模式后,将所述主节点数据库的服务模式切换为备数据库服务模式,并向所述主节点数据库发送心跳报文,在接收到所述主节点数据库发送的回复报文后,向所述备节点数据库发送心跳报文;
第二判断模块,用于判断在第二预设时间段内是否接收到回复报文,如果是,触发第一获取模块;
所述第一获取模块,用于获取所述备节点数据库中存储的最晚的同步时间点之后的预写式日志WAL文件,并将所述WAL文件发送至所述主节点数据库,以使所述主节点数据库进行数据同步;
第二切换模块,用于当判断在第二预设时间段内未接收到回复报文,则按照第二预设频率继续发送心跳报文至所述备节点数据库,如果超过第三预设时间段仍未接收到回复报文,则将所述主节点数据库的服务模式切换为主数据库服务模式;
其中,所述主管理程序在主节点数据库与备节点数据库均正常时,按照第一预设频率检测所述主节点数据库与所述备节点数据库中的数据是否同步,并将每次检测到数据同步的时间点保存为同步时间点。
4.根据权利要求3所述的装置,其特征在于,所述装置还包括:
第三发送模块,用于在将所述主节点数据库的服务模式切换为主数据库服务模式后,将所述备节点数据库的服务模式切换为备数据库服务模式,并向切换后的备节点数据库发送心跳报文,在接收到所述备节点数据库发送的回复报文后,向所述主节点数据库发送心跳报文;
第三判断模块,用于判断在第四预设时间段内是否接收到回复报文,如果是,触发第二获取模块;
所述第二获取模块,用于分别获取所述主节点数据库中和所述备节点数据库中存储的最晚的同步时间点之后的WAL文件,并将所获取的WAL文件进行对比,确定第一目标文件和第二目标文件,将所述第一目标文件发送至所述备节点数据库,将所述第二目标文件发送至所述主节点数据库,以使所述主节点数据库和所述备节点数据库的数据同步;
其中,所述第一目标文件为存储于所述主节点数据库中而未存储于所述备节点数据库中的WAL文件,所述第二目标文件为存储于所述备节点数据库中而未存储于所述主节点数据库中的WAL文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610928327.4A CN108009045B (zh) | 2016-10-31 | 2016-10-31 | 一种主备数据库故障处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610928327.4A CN108009045B (zh) | 2016-10-31 | 2016-10-31 | 一种主备数据库故障处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108009045A CN108009045A (zh) | 2018-05-08 |
CN108009045B true CN108009045B (zh) | 2020-11-06 |
Family
ID=62047118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610928327.4A Active CN108009045B (zh) | 2016-10-31 | 2016-10-31 | 一种主备数据库故障处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108009045B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108847982B (zh) * | 2018-06-26 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种分布式存储集群及其节点故障切换方法和装置 |
CN111124757A (zh) * | 2019-12-16 | 2020-05-08 | 上海热璞网络科技有限公司 | 一种分布式事务数据库的数据节点心跳检测算法 |
CN116755941B (zh) * | 2023-08-21 | 2024-01-09 | 之江实验室 | 一种节点故障感知的分布式模型训练的方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003015906A (ja) * | 2001-06-28 | 2003-01-17 | Mitsubishi Electric Corp | リモートデバッグ方法および装置 |
CN101060391A (zh) * | 2007-05-16 | 2007-10-24 | 华为技术有限公司 | 主备服务器切换方法及系统及主用服务器、备用服务器 |
US8862928B2 (en) * | 2011-09-20 | 2014-10-14 | Cloudbyte, Inc. | Techniques for achieving high availability with multi-tenant storage when a partial fault occurs or when more than two complete faults occur |
CN103064860A (zh) * | 2011-10-21 | 2013-04-24 | 阿里巴巴集团控股有限公司 | 数据库高可用实现方法及其装置 |
CN102868560B (zh) * | 2012-09-28 | 2015-01-14 | 南京恩瑞特实业有限公司 | 一种服务器热备实现系统及方法 |
CN104346373B (zh) * | 2013-07-31 | 2017-12-15 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN104504062B (zh) * | 2014-12-22 | 2018-06-05 | 浙江宇视科技有限公司 | 主备数据库数据同步方法及装置 |
CN104778102A (zh) * | 2015-03-27 | 2015-07-15 | 深圳市创梦天地科技有限公司 | 一种主备切换方法及系统 |
CN105471622B (zh) * | 2015-11-12 | 2019-03-01 | 武汉噢易云计算股份有限公司 | 一种基于Galera的控制节点主备切换的高可用方法及系统 |
CN105610566A (zh) * | 2016-01-06 | 2016-05-25 | 烽火通信科技股份有限公司 | 主备节点间数据实时同步的方法及系统 |
-
2016
- 2016-10-31 CN CN201610928327.4A patent/CN108009045B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108009045A (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108847982B (zh) | 一种分布式存储集群及其节点故障切换方法和装置 | |
CN107391294B (zh) | 一种ipsan容灾系统的建立方法及装置 | |
CN106202075B (zh) | 一种数据库主备切换的方法及装置 | |
CN112506702B (zh) | 数据中心容灾方法、装置、设备及存储介质 | |
CN105306605B (zh) | 一种双主机服务器系统 | |
CN109688012A (zh) | 一种联盟链节点热备切换的方法 | |
CN108009045B (zh) | 一种主备数据库故障处理方法及装置 | |
CN106330475A (zh) | 一种通信系统中管理主备节点的方法和装置及高可用集群 | |
CN110351313B (zh) | 数据缓存方法、装置、设备及存储介质 | |
CN110737545B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
WO2018113543A1 (zh) | 主备数据库的管理方法、系统及其设备 | |
CN107819556B (zh) | 一种服务状态切换方法及装置 | |
CN112118130A (zh) | 自适应的分布式缓存主备状态信息切换方法及装置 | |
CN111400263A (zh) | 一种基于文件变化的监控回切方法及装置 | |
CN106533751B (zh) | 一种sdn控制器集群合并方法及装置 | |
CN112486718B (zh) | 数据库故障自动切换方法、装置和计算机存储介质 | |
EP2887592A1 (en) | Enum-dns disaster recovery method and system in ims network | |
CN105323271B (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN118018463A (zh) | 一种故障处理方法、装置、设备及可读存储介质 | |
CN109344202B (zh) | 一种数据同步方法及管理节点 | |
CN110569303B (zh) | 一种适用于多种云环境的MySQL应用层高可用系统及方法 | |
CN114301763B (zh) | 分布式集群故障的处理方法及系统、电子设备及存储介质 | |
CN116346582A (zh) | 一种实现主备双网冗余方法、装置、设备及存储介质 | |
CN112787918B (zh) | 一种基于服务路由树的数据中心寻址与主备切换方法 | |
CN111669452B (zh) | 一种基于多主dns架构的高可用方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |