CN108833164A - 服务器控制方法、装置、电子设备及存储介质 - Google Patents
服务器控制方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN108833164A CN108833164A CN201810614574.6A CN201810614574A CN108833164A CN 108833164 A CN108833164 A CN 108833164A CN 201810614574 A CN201810614574 A CN 201810614574A CN 108833164 A CN108833164 A CN 108833164A
- Authority
- CN
- China
- Prior art keywords
- database
- server
- standby
- primary database
- primary
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0677—Localisation of faults
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明的实施方式提供了一种服务器控制方法、装置、电子设备及存储介质,涉及计算机技术领域。该服务器控制方法包括:监听主数据库和备数据库的记录信息,所述记录信息是在主数据库和备数据库分别与对应的代理程序之间的通信正常时生成的;在未监听到所述记录信息时,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常;根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常。本发明的方法可避免出现脑裂问题,准确判断主数据库和备数据库所在的服务器是否正常。
Description
技术领域
本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及服务器控制方法、服务器控制装置、电子设备及计算机可读存储介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在数据传输时,通常采用MySQL主备复制解决数据同步的问题,主机将用户提交的所有写操作记录为BINLOG,备机则通过把BINLOG同步到本地进行日志的回放,从而保证主机和备机中数据的一致性。主备复制可以解决主机宕机后备机拥有完整的数据,但是因为主机和备机通常不在一台机器上,数据库IP地址不一样,因此仍不能解决主库宕机后应用服务无法访问的问题。
相关技术中,可通过在主机和备机上部署KeepAlived服务并在主机上绑定虚拟地址的方式解决上述问题。其中,业务服务器通过虚拟地址访问数据库,主机和备机上的KeepAlived通过发数据包进行通信。主备机之间的具体切换逻辑包括:如果主机发生宕机,那么从机KeepAlived就无法收到主机的数据包从而触发KeepAlived高可用的切换流程,从而抢占虚拟地址达到无缝切换的目的。如果是主机上的数据库实例发生故障,主机的KeepAlived会定时执行脚本判断实例是否正常,如果确定数据库实例发生故障则会将KeepAlived关闭掉,从而让从机KeepAlived进行抢占虚拟地址达到无缝切换的目的。
发明内容
在现有方案中,正常情况下KeepAlived+MySQL主备的方案能够解决大多数高可用的问题,但是如果主备机房之间的网络出现问题,比如跨机房的网络抖动。那么此时主机上的KeepAlived会认为备机发生故障,备机上的KeepAlived会认为主机发生故障,此时两边都认为对方发生了故障,导致不能准确判断服务器是否发生故障,也不能准确判断哪一个服务器发生故障,从而触发主备机互相抢占共享资源虚拟地址的问题。
为此,非常需要一种改进的服务器控制方法,以便于准确判断服务器是否发生故障,以使能够高效、可靠、准确地进行数据写入。
在本上下文中,本发明的实施方式期望提供一种服务器控制方法、服务器控制装置、电子设备及计算机可读存储介质。
在本发明实施方式的第一方面中,提供了一种服务器控制方法,包括:监听主数据库和备数据库的记录信息,所述记录信息是在主数据库和备数据库分别与对应的代理程序之间的通信正常时生成的;在未监听到所述记录信息时,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常;根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常。
在本发明的一个实施例中,监听主数据库和备数据库的记录信息包括:监听集群针对主数据库和备数据库的心跳信息生成的记录信息。
在本发明的一个实施例中,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常包括:对所述主数据库和所述备数据库分别与对应的代理程序进行至少一次连接;若所述至少一次连接均连接成功,则确定所述主数据库和所述备数据库的数据库实例正常;若所述至少一次连接中均连接失败,则确定所述主数据库或所述备数据库的数据库实例异常。
在本发明的一个实施例中,根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常包括:若判定所述主数据库和所述备数据库的数据库实例正常,则确定所述主数据库和所述备数据库所在的服务器正常;若判定所述主数据库或所述备数据库的数据库实例异常,则判断是否将所述主数据库和所述备数据库所在的服务器进行切换。
在本发明的一个实施例中,判断是否将所述主数据库和所述备数据库所在的服务器进行切换包括:通过异常的数据库实例中主数据库只读开关的开启状态,确定所述主数据库或所述备数据库所在的服务器宕机;若确定所述主数据库所在的服务器宕机,则将所述主数据库和所述备数据库所在的服务器进行切换;若确定所述备数据库所在的服务器宕机,则保持所述主数据库所在的服务器不变。
在本发明的一个实施例中,通过异常的数据库实例中主数据库只读开关的开启状态,确定所述主数据库或所述备数据库所在的服务器宕机包括:若异常的数据库实例中所述主数据库的只读开关关闭,则确定所述主数据库所在的服务器宕机;若异常的数据库实例中所述主数据库的只读开关开启,则确定所述备数据库所在的服务器宕机。
在本发明的一个实施例中,所述主数据库所在的服务器包括一虚拟地址,将所述主数据库和所述备数据库所在的服务器进行切换包括:卸载所述主数据库所在的服务器的所述虚拟地址,并将所述虚拟地址添加至所述备数据库所在的服务器;通过代理程序开启所述主数据库所在的服务器的只读开关,并通过代理程序关闭所述备数据库所在的服务器的只读开关。
在本发明的一个实施例中,所述集群包括分布式协调服务集群。
在本发明实施方式的第二方面中,提供了一种服务器控制方法,包括:在主服务器和备服务器分别与对应的代理程序通信正常时,接收主数据库和备数据库的心跳信息;根据所述心跳信息生成记录信息,以使管理服务器根据所述记录信息确定主数据库和备数据库的数据库实例是否正常。
在本发明的一个实施例中,还包括:在所述主数据库或所述备数据库分别与对应的代理程序连接失败时,删除所述记录信息。
在本发明的一个实施例中,所述数据库实例包括数据库地址以及数据库端口。
在本发明实施方式的第三方面中,提供了一种服务器控制装置,包括:记录监听模块,用于监听主数据库和备数据库的记录信息,所述记录信息是在主数据库和备数据库分别与对应的代理程序之间的通信正常时生成的;连接测试模块,用于在未监听到所述记录信息时,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常;状态判断模块,用于根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常。
在本发明的一个实施例中,所述记录监听模块包括:监听控制模块,用于监听集群针对主数据库和备数据库的心跳信息生成的记录信息。
在本发明的一个实施例中,所述连接测试模块包括:连接控制模块,用于对所述主数据库和所述备数据库分别与对应的代理程序进行至少一次连接;实例正常确定模块,用于若所述至少一次连接均连接成功,则确定所述主数据库和所述备数据库的数据库实例正常;实例异常确定模块,用于若所述至少一次连接中均连接失败,则确定所述主数据库或所述备数据库的数据库实例异常。
在本发明的一个实施例中,所述状态判断模块包括:服务器正常确定模块,用于若判定所述主数据库和所述备数据库的数据库实例正常,则确定所述主数据库和所述备数据库所在的服务器正常;切换判断模块,用于若判定所述主数据库或所述备数据库的数据库实例异常,则判断是否将所述主数据库和所述备数据库所在的服务器进行切换。
在本发明的一个实施例中,所述切换判断模块包括:宕机判断模块,用于通过异常的数据库实例中主数据库只读开关的开启状态,确定所述主数据库或所述备数据库所在的服务器宕机;切换控制模块,用于若确定所述主数据库所在的服务器宕机,则将所述主数据库和所述备数据库所在的服务器进行切换;服务器保持模块,用于若确定所述备数据库所在的服务器宕机,则保持所述主数据库所在的服务器不变。
在本发明的一个实施例中,所述宕机判断模块包括:第一宕机模块,用于若异常的数据库实例中所述主数据库的只读开关关闭,则确定所述主数据库所在的服务器宕机;第二宕机模块,用于若异常的数据库实例中所述主数据库的只读开关开启,则确定所述备数据库所在的服务器宕机。
在本发明的一个实施例中,所述主数据库所在的服务器包括一虚拟地址,所述切换控制模块包括:地址添加模块,用于卸载所述主数据库所在的服务器的所述虚拟地址,并将所述虚拟地址添加至所述备数据库所在的服务器;开关调整模块,用于通过代理程序开启所述主数据库所在的服务器的只读开关,并通过代理程序关闭所述备数据库所在的服务器的只读开关。
在本发明的一个实施例中,所述集群包括分布式协调服务集群。
在本发明实施方式的第四方面中,提供了一种服务器控制装置,包括:心跳采集模块,用于在主服务器和备服务器分别与对应的代理程序通信正常时,接收主数据库和备数据库的心跳信息;记录生成模块,用于根据所述心跳信息生成记录信息,以使管理服务器根据所述记录信息确定主数据库和备数据库的数据库实例是否正常。
在本发明的一个实施例中,还包括:记录删除模块,用于在所述主数据库或所述备数据库分别与对应的代理程序连接失败时,删除所述记录信息。
在本发明的一个实施例中,所述数据库实例包括数据库地址以及数据库端口。
在本发明实施方式的第五方面中,提供了一种电子设备,包括:处理器和存储器,所述存储器存储有可执行指令,所述处理器用于调用所述存储器存储的可执行指令执行如上述任意一项所述的服务器控制方法。
在本发明实施方式的第六方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任意一项所述的服务器控制方法。
根据本发明实施方式的服务器控制方法和服务器控制装置,一方面,通过在未监听到主数据库和备数据库的记录信息时,判断所述主数据库和所述备数据库的数据库实例是否正常,进而根据数据库实例确定所述主数据库和所述备数据库所在的服务器是否正常,避免了主数据库所在的服务器以及备数据库所在的服务器均认为对方发生故障的问题,能够准确判断服务器是否发生故障以及确定发生故障的服务器;另一方面,根据数据库实例确定所述主数据库和所述备数据库所在的服务器是否正常,可避免主数据库和所述备数据库所在的服务器相互争抢虚拟地址的问题,提高系统的稳定性和可靠性。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性示出了根据本发明实施方式的一个示例性应用场景的框架示意图;
图2示意性示出了根据本发明一实施例的服务器控制方法的流程图;
图3示意性示出了用于实现本发明实施方式的服务器控制方法的系统架构图;
图4示意性示出了根据本发明另一实施例的服务器控制方法的流程图;
图5示意性示出了根据本发明一实施例的服务器控制装置的示意图;
图6示意性示出了根据本发明另一实施例的服务器控制装置的示意图;
图7示意性示出了根据本发明实施例的电子设备的一种方框图;以及
图8示意性示出了根据本发明实施例的一种程序产品。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种服务器控制方法和服务器控制装置。
在本文中,需要理解的是,所涉及的术语主机表示主服务器,备机表示备服务器。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,使用相关技术中KeepAlived+MySQL主备的方法,在出现例如跨机房的网络抖动等网络问题时,主机上的KeepAlived服务会认为备机发生故障,备机上的KeepAlived服务会认为主机发生故障,导致不能准确判断发生故障的服务器,从而触发脑裂现象,使得主机和备机互相抢占共享资源虚拟地址而导致数据写入混乱,降低系统可靠性。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,图1示出了本发明的实施方式的一个示例性应用场景的框架示意图。如图1所示,客户端110可以向服务器120和服务器130发送数据写入请求。本领域技术人员应该理解,图1所示的示意框架仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的适用范围不受到该框架任何方面的限制。
需要说明的是,本发明的示例性附图以两个服务器为例,然而,本发明的应用场景不限于两个服务器。本发明的应用场景也可以应用于包含一个主机和多个备机的分布式服务器集群中。
还需要说明的是,其中服务器均可以是本地服务器或远程服务器,还可以是其他能够提供存储功能或者处理功能的产品例如云服务器,本发明的实施方式在此不做特殊限定。
应该理解的是,本发明的应用场景中,在执行主体方面不受任何限制,只要执行了本发明实施方式所公开的动作即可。
示例性方法
下面结合上述的应用场景,参考图2来描述根据本发明示例性实施方式的服务器控制方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图2示出了根据本发明一实施例的服务器控制方法的流程图。需要说明的是,图2中所示的步骤S210至步骤S230可以用于多个服务器之间的故障判断,具体步骤可由管理服务器执行。参照图2所示,该服务器控制方法可以包括以下步骤:
在步骤S210中,监听主数据库和备数据库的记录信息,所述记录信息是在主数据库和备数据库分别与对应的代理程序之间的通信正常时生成的;
在步骤S220中,在未监听到所述记录信息时,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常;
在步骤S230中,根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常。
根据本发明实施方式中的服务器控制方法,一方面,通过在未监听到主数据库和备数据库的记录信息时,判断所述主数据库和所述备数据库的数据库实例是否正常,进而根据数据库实例确定所述主数据库和所述备数据库所在的服务器是否正常,避免了主数据库所在的服务器以及备数据库所在的服务器均认为对方发生故障的问题,能够准确判断发生故障的服务器;另一方面,根据数据库实例确定所述主数据库和所述备数据库所在的服务器是否正常,可避免主数据库和所述备数据库所在的服务器相互争抢虚拟地址触发的脑裂问题,提高系统的稳定性和可靠性。
接下来,将对本示例实施例中的服务器控制方法进行进一步说明。
在步骤S210中,监听主数据库和备数据库的记录信息,所述记录信息是在主数据库和备数据库分别与对应的代理程序之间的通信正常时生成的。
本示例性实施例中,主数据库可以包括一个,备数据库可包括多个。主数据库和备数据库均可为MySQL数据库,且主数据库和备数据库可以互换。例如在主数据库发生故障时,可将备数据库切换为主数据库以进行数据写入。主数据库和备数据库可分别部署在同一机房中不同的服务器上,或者部署在不同机房内,以满足数据库一致的需求。主数据库和备数据库所在的服务器的内部结构可相同,但是可以根据不同模式启动不同的模块,运行不同的逻辑。除此之外,主数据库和备数据库所在的服务器上分别部署有对应的代理程序Agent,不同的代理程序Agent可执行不同功能。
记录信息由集群针对主数据库和备数据库的心跳信息生成,且每一个心跳信息对应一条记录信息。此处的集群可为分布式协调服务集群例如Zookeeper集群。Zookeeper集群可包括奇数个副本,且可部署在不同机房或不同服务器。心跳信息可用于表示数据库的连通状态或运行状态。代理程序Agent会定时向Zookeeper集群汇报主数据库和备数据库的心跳信息。例如主数据库上的代理程序可定时通过指定的账号和密码向主数据库发送心跳包,备数据库上的代理程序也可定时通过指定的账号和密码向备数据库发送心跳包。其中,心跳包的内容可以是自定义的命令字或者代码或者是只包含包头的空包,本示例性实施例对此不作特殊限定。
在通过定时发送心跳包,判断主数据库和备数据库分别与对应的代理程序之间通信正常时,可将主数据库和备数据库的心跳信息上报至Zookeeper集群,以使Zookeeper集群生成用于表示主数据库和备数据库的心跳信息的记录信息。需要补充的是,步骤S210中监听主数据库和备数据库的记录信息的动作可由管理服务器执行。参考图3所示,管理服务器可单独部署,并与Zookeeper集群相连接,用于对由Zookeeper集群生成且存储在Zookeeper集群中的主数据库和备数据库的记录信息进行实时监听,以确定该记录信息是否发生变化。其中,管理服务器中可包括元数据库,Zookeeper集群可包括多个节点,且每个节点中的数据均相同。监听记录信息的具体过程包括:代理程序将主数据库和备数据库的心跳信息上报至集群中的节点,以使集群自动生成记录信息。如果通过心跳包判断主数据库和备数据库分别与对应的代理程序之间通信正常时,管理服务器能监听到Zookeeper集群生成的记录信息。如果通过心跳包判断主数据库和备数据库分别与对应的代理程序之间通信异常时,管理服务器则监听不到Zookeeper集群生成的记录信息。
在步骤S220中,在未监听到所述记录信息时,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常。
本示例性实施例中,如果管理服务器未监听到集群生成的记录信息,则可能有两个方面的原因:一、主数据库和备数据库与对应的代理程序由于网络问题无法连通;二、主数据库所在的服务器和/或备数据库所在的服务器宕机。为了确定未监听到记录信息的原因,可对主数据库和备数据库分别进行连接测试,以确定主数据库和备数据库的数据库实例是否正常。其中,数据库实例指的是访问数据库的通道,且一个数据库实例只能访问一个数据库。数据库实例具体可包括数据库的端口、数据库IP等信息。
具体而言,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常的步骤包括:对所述主数据库和所述备数据库分别与对应的代理程序进行至少一次连接;若所述至少一次连接均连接成功,则确定所述主数据库和所述备数据库的数据库实例正常;若所述至少一次连接均连接失败,则确定所述主数据库或所述备数据库的数据库实例异常。其中,对主数据库和备数据库进行连接测试的过程可同时进行。连接次数具体可以根据实际需求进行设置,例如三次、五次等等。为了使连接测试的测试结果更准确,可将连接次数设置为比较大的数值。举例而言,将连接次数设置为五次。如果主数据库和对应的代理程序,备数据库和对应的代理程序五次都连接成功,则认为主数据库的端口和备数据库的端口均正常,从而说明主数据库和备数据库的数据库实例均正常。如果主数据库和对应的代理程序,备数据库和对应的代理程序五次连接中有一次连接失败,则可认为该次连接是误判,继续进行下一次连接测试。如果五次连接测试均连接失败,则认为主数据库的端口或备数据库的端口均异常,从而说明主数据库或备数据库的数据库实例异常。
接下来,在步骤S230中,根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常。
本示例性实施例中,在进行连接测试时,若确定主数据库和备数据库的数据库实例均正常,则认为可能是网络原因导致的主数据库和备数据库与对应的代理程序连接失败,使得Zookeeper集群中的记录信息发生变化,从而导致管理服务器未监听到记录信息,此时可以停止对服务器进行切换和恢复等操作。如此一来,在主数据库和备数据库的数据库实例正常时,可确定主数据库和备数据库所在的服务器均正常。
若判定所述主数据库或所述备数据库的数据库实例异常,则首先需要判断发生异常的是主数据库的数据库实例还是备数据库的数据库实例,还是主数据库以及备数据库的数据库实例,进一步可根据异常的数据库实例确定宕机的是主数据库所在的服务器还是备数据库所在的服务器,进而判断是否需要将主数据库和备数据库所在的服务器进行切换。
其中,主数据库用于写入数据,备数据库用于对写入主数据库的数据进行同步,以保证数据的一致性和完整性。因此,在主数据库和备数据库所在的服务器均正常的情况下,由于需要向主数据库中写入数据,因此主数据库对应的只读开关是关闭的,同时为了避免数据写入冲突,备数据库对应的只读开关是开启的。因此可通过主数据库的只读开关的开启状态准确判断主数据库或备数据库所在的服务器是否宕机,具体包括:若异常的数据库实例中主数据库的只读开关关闭,则确定主数据库所在的服务器宕机;若异常的数据库实例中所述主数据库的只读开关开启,则确定备数据库所在的服务器宕机。本示例性实施例中,由于可判断服务器是否发生故障以及发生故障的是哪一个服务器,因此可避免脑裂现象导致通过虚拟地址连接数据库的业务服务器无法判定虚拟地址所对应的数据库节点的问题,提高数据写入准确率和效率,同时可提高系统可靠性。
在确定主数据库所在的服务器宕机时,则需要将主数据库和备数据库所在的服务器进行切换。举例而言,将主数据库所在的服务器1作为主服务器1,将备数据库所在的服务器2作为备服务器2,在主数据库所在的服务器1宕机时,可将备服务器2作为主服务器1,以执行数据写入等数据处理操作。具体而言,主数据库所在的服务器上会绑定虚拟地址VIP,而备数据库所在的服务器上未绑定虚拟地址,以便于代理程序通过该虚拟地址访问执行数据导入的主数据库。在确定主数据库所在的服务器宕机时,需要通过备数据库所在的服务器进行数据写入。因此可卸载绑定在主数据库所在的服务器上的虚拟地址,并将该虚拟地址添加至要切换的备数据库所在的服务器。同时,可通过代理程序开启主数据库的只读开关,并通过代理程序关闭备数据库的只读开关,以通过备数据库进行数据写入。由于一个主数据库可对应多个备数据库,因此可由管理服务器中的元数据库决定具体切换到哪个备数据库。本示例性实施例中,通过卸载主数据库所在服务器上的虚拟地址并将其添加至备数据库所在服务器,以及打开主数据库的只读开关,并关闭备数据库的只读开关,可快速完成服务器切换,同时可避免数据写入冲突的问题,提高数据写入的效率和准确率。
如果确定宕机的是备数据库所在的服务器,由于并不会对当前主数据库的数据写入操作造成影响,因此并不需要对主数据库和备数据库所在的服务器进行切换,保持主数据库所在的服务器不变即可。
如此一来,本示例性实施例中,可通过管理服务器对Zookeeper集群中的记录信息进行实时监听,根据记录信息的变化情况对主数据库和备数据库分别进行连接测试,从而基于管理服务器和Zookeeper集群准确快速判断宕机的是主数据库所在的服务器还是备数据库所在的服务器,避免了相关技术中主机认为备机发生故障,备机认为主机发生故障,导致不能准确判断发生故障的服务器的问题;除此之外,还避免了主备机互相抢占共享资源虚拟地址的脑裂现象导致通过虚拟地址连接数据库的业务服务器无法判定虚拟地址所对应的数据库节点,造成数据写入混乱的问题,能够提高数据写入准确率和写入效率。
接下来,图4示出了根据本发明另一实施例的服务器控制方法的流程图。需要说明的是,图4中所示的步骤S410至步骤S420可以用于多个服务器之间的故障判断,具体步骤可由集群侧执行。参照图4所示,该服务器控制方法可以包括以下步骤:
在步骤S410中,在主服务器和备服务器分别与对应的代理程序通信正常时,接收主数据库和备数据库的心跳信息。
本示例性实施例中,主数据库上的代理程序可定时通过指定的账号和密码向主数据库发送心跳包,备数据库上的代理程序也可定时通过指定的账号和密码向备数据库发送心跳包,以通过心跳包确定通信是否正常。在通过心跳包判断主数据库和备数据库分别与对应的代理程序之间通信正常时,Zookeeper集群可接收上报的主数据库和备数据库的心跳信息。或者说,Zookeeper集群接收主数据库和备数据库分别与对应的代理程序之间通信正常时上报的主数据库和备数据库的心跳信息。
在步骤S420中,根据所述心跳信息生成记录信息,以使管理服务器根据所述记录信息确定主数据库和备数据库的数据库实例是否正常。
本示例性实施例中,Zookeeper集群在接收到上报的主数据库和备数据库的心跳信息后,可根据心跳信息生成记录信息,以使管理服务器根据记录信息确定主数据库和备数据库的数据库实例是否正常,从而能够快速准确地确定主数据库和备数据库所在的服务器是否正常。
除此之外,如果主数据库或备数据库分别与对应的代理程序连接失败,Zookeeper集群会删除生成的记录信息。因此在管理服务器未监听到记录信息时,则可认为主数据库和备数据库的数据库实例异常或者是网络异常,因此需要对主数据库和备数据库重新进行连接测试,以准确判定是网络异常,或者是判断宕机的是主数据库所在的服务器还是备数据库所在的服务器。
本示例性实示例中,通过集群生成的记录信息的变化情况,可快速判断发生故障的数据库实例,避免出现由于主机和备机互相抢占虚拟地址而导致的脑裂问题,提高数据写入的准确率和效率。
参考图3中所示,主数据库所在的服务器即主服务器上部署有代理程序,备数据库所在的服务器即备服务器上也部署有代理程序。在主数据库和备数据库分别与各自的代理程序连接成功时,代理程序可将主数据库和备数据库的心跳信息上传,Zookeeper集群可针对上传的心跳信息生成记录信息。管理服务器可对Zookeeper集群中的记录信息进行监听,以更准确地确定所述主数据库和所述备数据库所在的服务器是否正常。
示例性装置
在介绍了本发明示例性实施方式的介质之后,接下来,参考图5对本发明示例性实施方式的服务器控制装置进行说明。如图5所示,服务器控制装置500可以包括:记录监听模块501、连接测试模块502以及状态判断模块503。其中:
记录监听模块501,用于监听主数据库和备数据库的记录信息,所述记录信息是在主数据库和备数据库分别与对应的代理程序之间的通信正常时生成的;连接测试模块502,用于在未监听到所述记录信息时,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常;状态判断模块503,用于根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常。
在本发明的一个实施例中,所述记录监听模块包括:监听控制模块,用于监听集群针对主数据库和备数据库的心跳信息生成的记录信息。
在本发明的一个实施例中,所述连接测试模块包括:连接控制模块,用于对所述主数据库和所述备数据库分别与对应的代理程序进行至少一次连接;实例正常确定模块,用于若所述至少一次连接均连接成功,则确定所述主数据库和所述备数据库的数据库实例正常;实例异常确定模块,用于若所述至少一次连接中均连接失败,则确定所述主数据库或所述备数据库的数据库实例异常。
在本发明的一个实施例中,所述状态判断模块包括:服务器正常确定模块,用于若判定所述主数据库和所述备数据库的数据库实例正常,则确定所述主数据库和所述备数据库所在的服务器正常;切换判断模块,用于若判定所述主数据库或所述备数据库的数据库实例异常,则判断是否将所述主数据库和所述备数据库所在的服务器进行切换。
在本发明的一个实施例中,所述切换判断模块包括:宕机判断模块,用于通过异常的数据库实例中主数据库只读开关的开启状态,确定所述主数据库或所述备数据库所在的服务器宕机;切换控制模块,用于若确定所述主数据库所在的服务器宕机,则将所述主数据库和所述备数据库所在的服务器进行切换;服务器保持模块,用于若确定所述备数据库所在的服务器宕机,则保持所述主数据库所在的服务器不变。
在本发明的一个实施例中,所述宕机判断模块包括:第一宕机模块,用于若异常的数据库实例中所述主数据库的只读开关关闭,则确定所述主数据库所在的服务器宕机;第二宕机模块,用于若异常的数据库实例中所述主数据库的只读开关开启,则确定所述备数据库所在的服务器宕机。
在本发明的一个实施例中,所述主数据库所在的服务器包括一虚拟地址,所述切换控制模块包括:地址添加模块,用于卸载所述主数据库所在的服务器的所述虚拟地址,并将所述虚拟地址添加至所述备数据库所在的服务器;开关调整模块,用于通过代理程序开启所述主数据库所在的服务器的只读开关,并通过代理程序关闭所述备数据库所在的服务器的只读开关。
在本发明的一个实施例中,所述集群包括分布式协调服务集群。
除此之外,还提供了一种服务器控制装置600,包括:心跳采集模块601,用于在主服务器和备服务器分别与对应的代理程序通信正常时,接收主数据库和备数据库的心跳信息;记录生成模块602,用于根据所述心跳信息生成记录信息,以使管理服务器根据所述记录信息确定主数据库和备数据库的数据库实例是否正常。
在本发明的一个实施例中,还包括:记录删除模块,用于在所述主数据库或所述备数据库分别与对应的代理程序连接失败时,删除所述记录信息。
在本发明的一个实施例中,所述数据库实例包括数据库地址以及数据库端口。
示例性设备
在介绍了本发明示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的用于服务器控制的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的服务器控制可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元可以执行如图2中所示的步骤。
下面参照图7来描述根据本发明的这种实施方式的用于服务器控制的电子设备700。图7所示的服务器控制设备700仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,服务器控制设备700以通用计算设备的形式表现。服务器控制设备700的组件可以包括但不限于:上述至少一个处理单元701、上述至少一个存储单元702、连接不同系统组件(包括存储单元702和处理单元701)的总线703。
总线703表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元702可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)7021和/或高速缓存存储器7022,还可以进一步包括只读存储器(ROM)7023。
存储单元702还可以包括具有一组(至少一个)程序模块7024的程序/实用工具7025,这样的程序模块7024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
服务器控制设备700也可以与一个或多个外部设备704(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与服务器控制设备700交互的设备通信,和/或与使得服务器控制设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口705进行。并且,服务器控制设备700还可以通过网络适配器706与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器706通过总线703与服务器控制设备700的其它模块通信。应当明白,尽管图7中未示出,可以结合服务器控制设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的服务器控制方法中的步骤,例如,所述处理单元可以执行如图2中所示的步骤。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图8所示,描述了根据本发明的实施方式的用于服务器控制的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了服务器控制设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种服务器控制方法,包括:
监听主数据库和备数据库的记录信息,所述记录信息是在主数据库和备数据库分别与对应的代理程序之间的通信正常时生成的;
在未监听到所述记录信息时,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常;
根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常。
2.根据权利要求1所述的服务器控制方法,监听主数据库和备数据库的记录信息包括:
监听集群针对主数据库和备数据库的心跳信息生成的记录信息。
3.根据权利要求1所述的服务器控制方法,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常包括:
对所述主数据库和所述备数据库分别与对应的代理程序进行至少一次连接;
若所述至少一次连接均连接成功,则确定所述主数据库和所述备数据库的数据库实例正常;
若所述至少一次连接中均连接失败,则确定所述主数据库或所述备数据库的数据库实例异常。
4.根据权利要求1所述的服务器控制方法,根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常包括:
若判定所述主数据库和所述备数据库的数据库实例正常,则确定所述主数据库和所述备数据库所在的服务器正常;
若判定所述主数据库或所述备数据库的数据库实例异常,则判断是否将所述主数据库和所述备数据库所在的服务器进行切换。
5.根据权利要求4所述的服务器控制方法,判断是否将所述主数据库和所述备数据库所在的服务器进行切换包括:
通过异常的数据库实例中主数据库只读开关的开启状态,确定所述主数据库或所述备数据库所在的服务器宕机;
若确定所述主数据库所在的服务器宕机,则将所述主数据库和所述备数据库所在的服务器进行切换;
若确定所述备数据库所在的服务器宕机,则保持所述主数据库所在的服务器不变。
6.根据权利要求5所述的服务器控制方法,通过异常的数据库实例中主数据库只读开关的开启状态,确定所述主数据库或所述备数据库所在的服务器宕机包括:
若异常的数据库实例中所述主数据库的只读开关关闭,则确定所述主数据库所在的服务器宕机;
若异常的数据库实例中所述主数据库的只读开关开启,则确定所述备数据库所在的服务器宕机。
7.根据权利要求5所述的服务器控制方法,所述主数据库所在的服务器包括一虚拟地址,将所述主数据库和所述备数据库所在的服务器进行切换包括:
卸载所述主数据库所在的服务器的所述虚拟地址,并将所述虚拟地址添加至所述备数据库所在的服务器;
通过代理程序开启所述主数据库所在的服务器的只读开关,并通过代理程序关闭所述备数据库所在的服务器的只读开关。
8.一种服务器控制装置,包括:
记录监听模块,用于监听主数据库和备数据库的记录信息,所述记录信息是在主数据库和备数据库分别与对应的代理程序之间的通信正常时生成的;
连接测试模块,用于在未监听到所述记录信息时,对所述主数据库和所述备数据库分别进行连接测试,以判断所述主数据库和所述备数据库的数据库实例是否正常;
状态判断模块,用于根据所述主数据库和所述备数据库的数据库实例是否正常,确定所述主数据库和所述备数据库所在的服务器是否正常。
9.一种电子设备,包括:处理器和存储器,所述存储器存储有可执行指令,所述处理器用于调用所述存储器存储的可执行指令执行如权利要求1至7中任一项所述的服务器控制方法。
10.一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如权利要求1至7中任一项所述的服务器控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810614574.6A CN108833164B (zh) | 2018-06-14 | 2018-06-14 | 服务器控制方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810614574.6A CN108833164B (zh) | 2018-06-14 | 2018-06-14 | 服务器控制方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108833164A true CN108833164A (zh) | 2018-11-16 |
CN108833164B CN108833164B (zh) | 2021-10-08 |
Family
ID=64142034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810614574.6A Active CN108833164B (zh) | 2018-06-14 | 2018-06-14 | 服务器控制方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108833164B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459903A (zh) * | 2019-01-21 | 2020-07-28 | 顺丰科技有限公司 | 数据库管理系统及方法 |
CN111597192A (zh) * | 2020-04-10 | 2020-08-28 | 北京百度网讯科技有限公司 | 数据库的切换控制方法、装置及电子设备 |
CN112118130A (zh) * | 2020-08-25 | 2020-12-22 | 通号城市轨道交通技术有限公司 | 自适应的分布式缓存主备状态信息切换方法及装置 |
CN114124673A (zh) * | 2021-11-25 | 2022-03-01 | 杭州安恒信息技术股份有限公司 | 一种syslog日志对比测试与主备高可用的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101212458A (zh) * | 2006-12-25 | 2008-07-02 | 中兴通讯股份有限公司 | 一种数据库系统备份方法 |
CN106126652A (zh) * | 2016-06-24 | 2016-11-16 | 武汉斗鱼网络科技有限公司 | 用于分布式数据库集群的故障数据库切换方法及系统 |
CN107153660A (zh) * | 2016-03-04 | 2017-09-12 | 福建天晴数码有限公司 | 分布式数据库系统的故障检测处理方法及其系统 |
CN107291787A (zh) * | 2016-04-13 | 2017-10-24 | 中兴通讯股份有限公司 | 主备数据库切换方法和装置 |
-
2018
- 2018-06-14 CN CN201810614574.6A patent/CN108833164B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101212458A (zh) * | 2006-12-25 | 2008-07-02 | 中兴通讯股份有限公司 | 一种数据库系统备份方法 |
CN107153660A (zh) * | 2016-03-04 | 2017-09-12 | 福建天晴数码有限公司 | 分布式数据库系统的故障检测处理方法及其系统 |
CN107291787A (zh) * | 2016-04-13 | 2017-10-24 | 中兴通讯股份有限公司 | 主备数据库切换方法和装置 |
CN106126652A (zh) * | 2016-06-24 | 2016-11-16 | 武汉斗鱼网络科技有限公司 | 用于分布式数据库集群的故障数据库切换方法及系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459903A (zh) * | 2019-01-21 | 2020-07-28 | 顺丰科技有限公司 | 数据库管理系统及方法 |
CN111597192A (zh) * | 2020-04-10 | 2020-08-28 | 北京百度网讯科技有限公司 | 数据库的切换控制方法、装置及电子设备 |
CN111597192B (zh) * | 2020-04-10 | 2023-10-03 | 北京百度网讯科技有限公司 | 数据库的切换控制方法、装置及电子设备 |
CN112118130A (zh) * | 2020-08-25 | 2020-12-22 | 通号城市轨道交通技术有限公司 | 自适应的分布式缓存主备状态信息切换方法及装置 |
CN112118130B (zh) * | 2020-08-25 | 2023-07-21 | 通号城市轨道交通技术有限公司 | 自适应的分布式缓存主备状态信息切换方法及装置 |
CN114124673A (zh) * | 2021-11-25 | 2022-03-01 | 杭州安恒信息技术股份有限公司 | 一种syslog日志对比测试与主备高可用的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108833164B (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108833164A (zh) | 服务器控制方法、装置、电子设备及存储介质 | |
CN103297396B (zh) | 群集系统中管理故障转移的装置和方法 | |
CN102355368B (zh) | 一种网络设备的故障处理方法及系统 | |
CN109788068B (zh) | 心跳状态信息上报方法、装置和设备及计算机存储介质 | |
CN107015885A (zh) | 主备用数据库切换时的服务提供方法、系统和配置中心 | |
CN109960634A (zh) | 一种应用程序监控方法、装置及系统 | |
CN108710673A (zh) | 实现数据库高可用方法、系统、计算机设备和存储介质 | |
US9904608B2 (en) | Filtering event log entries | |
CN109165106A (zh) | 业务处理方法、装置、设备、存储介质及流程运行系统 | |
CN108984349A (zh) | 主节点选举方法及装置、介质和计算设备 | |
WO2023125591A1 (zh) | 远程诊断方法及装置、系统、电子设备和存储介质 | |
CN108427728A (zh) | 元数据的管理方法、设备及计算机可读介质 | |
CN107635010A (zh) | 流量调度方法、装置、计算机可读存储介质及电子设备 | |
CN112291082B (zh) | 机房容灾处理方法、终端及存储介质 | |
CN109992442A (zh) | 一种故障处理方法、系统、设备及存储介质 | |
CN114091610A (zh) | 智能决策方法及装置 | |
CN104283780A (zh) | 建立数据传输路径的方法和装置 | |
CN108228481A (zh) | 用于保证数据一致性的方法和设备 | |
CN113946559A (zh) | 数据处理方法、目标数据库系统及数据处理系统 | |
CN110209526A (zh) | 一种存储层同步系统、及存储介质 | |
CN108197016A (zh) | 一种云平台故障原因分析方法、装置、设备及存储介质 | |
CN108418859A (zh) | 写数据的方法和装置 | |
CN108512753A (zh) | 一种集群文件系统中消息传输的方法及装置 | |
CN114064435A (zh) | 数据库测试方法、装置、介质与电子设备 | |
CN117076196A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |