数据库切换方法、系统、电子设备和计算机可读介质与流程

文档序号:16972690发布日期:2019-02-26 18:42阅读:160来源:国知局
数据库切换方法、系统、电子设备和计算机可读介质与流程

本公开涉及互联网技术领域,更具体地,涉及一种数据库切换方法、系统、电子设备和计算机可读介质。



背景技术:

数据库的高可用已经成为了信息化建设的重中之重。在现有技术中,通常将数据库的主从复制技术与高可用切换方案相结合来提高数据库的可用性。例如,在主节点数据库宕机或者对系统的硬件维护、版本升级等情况下,利用高可用切换方案将当前的主节点数据库切换成从节点数据库,并将某个从节点数据库切换成主节点数据库,以保证数据库的高可用。

在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题:现有的主节点数据库与从节点数据库的切换容易出现切换中断,成功率较低。



技术实现要素:

有鉴于此,本公开提供了一种数据库切换方法、系统、电子设备和计算机可读介质。

本公开的一个方面提供了一种数据库切换方法包括,获取切换请求,所述切换请求用于将主节点数据库从第一数据库切换为第二数据库,基于所述切换请求,确定切换类型,基于所述切换类型,检测切换环境是否满足切换条件,以及在所述切换环境满足所述切换条件的情况下,将主节点数据库从所述第一数据库切换为所述第二数据库。

根据本公开的实施例,获取切换请求包括基于用户输入生成切换请求,或者在第一数据库作为主节点数据库发生异常的情况下,生成切换请求。

根据本公开的实施例,在第一数据库作为主节点数据库发生异常的情况下,生成切换请求包括,获得多个从节点数据库的状态,基于所述多个从节点数据库的状态,确定一个从节点数据库为第二数据库,以及生成用于将主节点数据库从第一数据库切换为第二数据库的切换请求。

根据本公开的实施例,基于所述切换请求,确定切换类型包括,从所述切换请求中读取表征切换类型的参数,以确定切换类型,或者基于所述切换请求,检测所述第一数据库是否异常,在所述第一数据库异常的情况下,确定切换类型是故障切换,在所述第一数据库正常的情况下,确定切换类型是在线切换。

根据本公开的实施例,在所述切换类型为在线切换的情况下,所述检测切换环境是否满足切换条件包括以下至少一种,检测是否存在工作状态异常的数据库,检测是否具备访问各个数据库的权限,或者验证切换请求中包括的从节点数据库是否是所述第一数据库的从节点。

根据本公开的实施例,在所述切换类型为在线切换的情况下,所述方法还包括,若在将主节点数据库从所述第一数据库切换为所述第二数据库的过程中出现异常,则中止所述切换并执行预定操作。

根据本公开的实施例,所述数据库切换方法还包括存储所述第一数据库的日志位点,所述预定操作包括基于所述第一数据库的日志位点,执行回滚操作。

根据本公开的实施例,,在所述切换类型为在线切换的情况下,所述将主节点数据库从第一数据库切换为第二数据库包括,禁止所述第一数据库的写入进程,在所述第二数据库中的数据与所述第一数据库的数据一致的情况下,记录所述第二数据库的当前日志位点,将所述第二数据库设置为读写模式,以及在第三数据库中的数据与所述第一数据库的数据一致的情况下,基于所述当前日志位点,将所述主节点数据库从第一数据库切换为第二数据库,其中,所述第三数据库包括除第二数据库以外的其他从节点数据库,所述将所述主节点数据库从第一数据库切换为第二数据库包括控制所述第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据。

根据本公开的实施例,在所述切换类型为故障切换的情况下,所述检测切换环境是否满足预设条件包括检测所述第一数据库工作状态是否异常。

根据本公开的实施例,所述数据库切换方法还包括,检测多个第三数据库的工作状态是否异常,所述第三数据库包括除第二数据库以外的其他从节点数据库,以及在至少一个所述第三数据库的工作状态异常的情况下,将所述至少一个第三数据库设为忽略节点。

根据本公开的实施例,在基于用户输入生成切换请求的情况下,所述检测切换环境是否满足预设条件还包括检测所述第二数据库是否正常。

根据本公开的实施例,在所述切换类型为故障切换的情况下,所述将主节点数据库从第一数据库切换为第二数据库包括,判断所述第二数据库是否存在数据缺失,在所述第二数据库不存在数据缺失的情况下,记录所述第二数据库的当前日志位点,并将所述第二数据库的工作模式设置为读写模式,以及基于所述当前日志位点,将主节点数据库从第一数据库切换为第二数据库,所述将主节点数据库从第一数据库切换为第二数据库包括控制第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据,其中,所述第三数据库包括除第二数据库以外的其他从节点数据库。

根据本公开的实施例,所述数据库切换方法还包括记录所述第三数据库存储的主从复制配置信息,其中,所述控制所述第三数据库从所述第二数据库读取数据包括基于所述主从复制配置信息,控制所述第三数据库从所述第二数据库读取数据。

根据本公开的实施例,所述数据库切换方法还包括在所述第二数据库存在数据缺失的情况下,第二数据库与不存在数据缺失的第四数据库的建立数据复制的连接,以及基于所述第四数据库,恢复所述第二数据库的缺失数据。

根据本公开的实施例,所述数据库切换方法还包括发送将主节点数据库从第一数据库切换为第二数据库的切换报告。

根据本公开的实施例,所述数据库切换方法还包括通过第一接口与外部系统进行切换信息的交互,其中,所述切换信息包括将主节点数据库从第一数据库切换为第二数据库的结果,和/或将主节点数据库从第一数据库切换为第二数据库所需要的配置信息。

根据本公开的实施例,所述数据库切换方法还包括中断业务系统与所述第一数据库的连接,以及在所述主节点数据库切换完成的情况下,将所述第一数据库的虚拟地址分配给所述第二数据库,用于使业务系统通过所述虚拟地址访问的数据库为所述第二数据库,而非所述第一数据库。

本公开的另一个方面提供了一种数据库切换系统包括,获取模块用于获取切换请求,所述切换请求用于将主节点数据库从第一数据库切换为第二数据库,确定模块用于基于所述切换请求,确定切换类型,第一检测模块用于基于所述切换类型,检测切换环境是否满足切换条件,以及切换模块用于在所述切换环境满足所述切换条件的情况下,将主节点数据库从所述第一数据库切换为所述第二数据库。

根据本公开的实施例,获取模块包括,第一生成子模块用于基于用户输入生成切换请求,或者第二生成子模块用于在第一数据库作为主节点数据库发生异常的情况下,生成切换请求。

根据本公开的实施例,第二生成子模块包括,获取单元用于获得多个从节点数据库的状态,确定单元用于基于所述多个从节点数据库的状态,确定一个从节点数据库为第二数据库,生成单元用于生成以将主节点数据库从第一数据库切换为第二数据库的切换请求。

根据本公开的实施例,确定模块包括以下至少一种,第一确定子模块用于从所述切换请求中读取表征切换类型的参数,以确定切换类型,或者第二确定子模块用于基于所述切换请求,检测所述第一数据库是否异常,在所述第一数据库异常的情况下,确定切换类型是故障切换,在所述第一数据库正常的情况下,确定切换类型是在线切换。

根据本公开的实施例,在所述切换类型为在线切换的情况下,所述第一检测模块包括以下至少一种,第一检测子模块用于检测是否存在工作状态异常的数据库,第二检测子模块,用于检测是否具备访问各个数据库的权限,或者验证子模块,用于验证切换请求中包括的从节点数据库是否是所述第一数据库的从节点。

根据本公开的实施例,在所述切换类型为在线切换的情况下,所述系统还包括,中断模块用于若在将主节点数据库从所述第一数据库切换为第二数据库的过程中出现异常,则中止所述切换并执行预定操作。

根据本公开的实施例,所述数据库切换系统,还包括存储模块用于存储所述第一数据库的日志位点,所述中断模块包括回滚子模块,用于基于所述第一数据库的日志位点,执行回滚操作。

根据本公开的实施例,在所述切换类型为在线切换的情况下,所述切换模块包括,禁止子模块用于禁止所述第一数据库的写入进程,记录子模块用于在所述第二数据库中的数据与所述第一数据库中的数据一致的情况下,记录所述第二数据库的当前日志位点,设置子模块用于将所述第二数据库设置为读写模式,第一切换子模块用于在第三数据库中的数据与所述第一数据库的数据一致的情况下,基于所述当前日志位点,将所述主节点数据库从第一数据库切换为第二数据库,其中,所述第三数据库包括除第二数据库以外的其他从节点数据库,其中,所述第一切换子模块包括切换单元,用于控制所述第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据。

根据本公开的实施例,切换类型为故障切换的情况下,所述第一检测模块包括,第三检测子模块用于检测所述第一数据库工作状态是否异常。

根据本公开的实施例,所述系统还包括,第二检测模块用于检测多个第三数据库的工作状态是否异常,所述第三数据库包括除第二数据库以外的其他从节点数据库,以及设置模块用于在至少一个所述第三数据库的工作状态异常的情况下,将所述至少一个第三数据库设为忽略节点。

根据本公开的实施例,在基于用户输入生成切换请求的情况下,所述第一检测模块还包括第四检测子模块,用于检测所述第二数据库工作状态是否正常。

根据本公开的实施例,在所述切换类型为故障切换的情况下,所述切换模块包括,判断子模块用于判断所述第二数据库是否存在数据缺失,执行子模块用于在所述第二数据库不存在数据缺失的情况下,记录所述第二数据库的当前日志位点,并将所述第二数据库的工作模式设置为读写模式,第二切换子模块用于基于所述当前日志位点,将主节点数据库从第一数据库切换为第二数据库,其中,所述第二切换子模块包括切换单元用于控制第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据,其中,所述第三数据库包括除第二数据库以外的其他从节点数据库。

根据本公开的实施例,所述系统还包括,记录模块用于记录所述第三数据库存储的主从配置信息,其中,所述切换单元包括切换子单元,用于基于所述主从配置信息,控制所述第三数据库从所述第二数据库读取数据。

根据本公开的实施例,所述系统还包括,连接模块用于在所述第二数据库存在数据缺失的情况下,第二数据库与不存在数据缺失的第四数据库的建立数据复制的连接,以及恢复模块,用于基于所述第四数据库,恢复所述第二数据库的缺失数据。

根据本公开的实施例,所述系统还包括,发送模块用于发送将主节点数据库从第一数据库切换为第二数据库的切换报告。

根据本公开的实施例,所述系统还包括,交互模块用于通过第一接口与外部系统进行切换信息的交互,其中,所述切换信息包括将主节点数据库从第一数据库切换为第二数据库的结果,和/或将主节点数据库从第一数据库切换为第二数据库所需要的配置信息。

根据本公开的实施例,所述系统还包括,中断模块用于中断业务系统与所述第一数据库的连接,以及分配模块,用于在所述主节点数据库切换完成的情况下,将所述第一数据库的虚拟地址分配给所述第二数据库,用于使业务系统通过所述虚拟地址访问的数据库为所述第二数据库,而非所述第一数据库。

本公开的另一个方面提供了一种电子设备,包括一个或多个处理器,存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行上述任意一项的方法。

本公开的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。

本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。

根据本公开的实施例,可以至少部分地解决主节点数据库与从节点数据库的切换容易出现切换中断,成功率较低的问题,并因此可以实现提高主从切换成功率的技术效果。

附图说明

通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:

图1示意性示出了根据本公开实施例的可以应用数据库切换方法的示例性系统架构;

图2示意性示出了根据本公开的实施例的数据库切换方法的流程图;

图3示意性示出了根据本公开的实施例的在第一数据库作为主节点数据库发生异常的情况下,生成切换请求的流程图;

图4示意性示出了根据本公开的实施例的切换类型为在线切换的情况下,将主节点数据库从第一数据库切换为第二数据库的流程图;

图5示意性示出了根据本公开的另一实施例的数据库切换方法的流程图;

图6示意性示出了根据本公开的另一实施例的数据库切换方法的流程图;

图7示意性示出了根据本公开的另一实施例的数据库切换方法的流程图;

图8示意性示出了根据本公开的另一实施例的将主节点数据库从第一数据库切换为第二数据库的流程图;

图9示意性示出了根据本公开的另一实施例的数据切换方法的流程图;

图10示意性示出了根据本公开的另一实施例的数据切换方法的流程图;

图11a示意性示出了根据本公开的实施例的在线切换方法的流程图;

图11b示意性示出了根据本公开的实施例的在线切换方法的效果示意图;

图12a示意性示出了根据本公开的实施例的故障切换方法的流程图;

图12b示意性示出了根据本公开的实施例的故障切换方法的效果示意图;

图13示意性示出了根据本公开的实施例的数据库切换系统的框图;

图14示意性示出了根据本公开的实施例的第二生成子模块的框图;

图15示意性示出了根据本公开另一实施例的数据库切换系统的框图;

图16示意性示出了根据本公开另一实施例的数据库切换系统的框图;

图17示意性示出了根据本公开实施例的切换模块的框图;

图18示意性示出了根据本公开另一实施例的数据库切换系统的框图;

图19示意性示出了根据本公开另一实施例的切换模块的框图;

图20示意性示出了根据本公开另一实施例的数据库切换系统的框图;

图21示意性示出了根据本公开另一实施例的数据库切换系统的框图;

图22示意性示出了根据本公开另一实施例的数据库切换系统的框图;以及

图23示意性示出了根据本公开实施例的电子设备的方框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“a或b”应当被理解为包括“a”或“b”、或“a和b”的可能性。

本公开的实施例提供了一种数据库切换方法包括,获取切换请求,所述切换请求用于将主节点数据库从第一数据库切换为第二数据库,基于所述切换请求,确定切换类型,基于所述切换类型,检测切换环境是否满足切换条件,以及在所述切换环境满足所述切换条件的情况下,将主节点数据库从所述第一数据库切换为所述第二数据库。

图1示意性示出了根据本公开实施例的可以应用数据库切换方法的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。

如图1所示,根据该实施例的系统架构100可以包括服务器110,业务系统120以及数据库系统130,其中,数据库系统130可以包括主节点数据库131、从节点数据库132和133。从节点数据库132和133可以从主节点数据库131中复制数据,保证与主节点数据库131的数据一致。数据库系统130例如可以是mysql数据库。

服务器110可以是管理服务器,用于管理数据库系统130。例如,监控数据库系统130中的主节点数据库131以及从节点数据库132和133的工作状态,或者控制数据库系统130的主从切换操作等。业务系统120可以访问主节点数据库131中存储的数据,也可以将日志存储在主节点数据库131中。

在主节点数据库131的工作状态异常或者管理员对系统硬件维护、版本升级的情况下,可以将数据库系统130的主节点数据库由服务器131切换成某一从节点数据库,以维持业务系统120的正常运行。

然而,在现有技术中,主节点数据库与从节点数据库的切换容易出现切换中断,切换成功率较低。

需要说明的是,本公开实施例所提供的数据库切换方法一般可以由服务器110执行。相应地,本公开实施例所提供的数据库切换系统一般可以设置于服务器110中。

应该理解,图1中的主节点数据库和从节点数据库的数目仅仅是示意性的。根据实现需要,可以具有任意数目的主节点数据库和从节点数据库。

图2示意性示出了根据本公开的实施例的数据库切换方法的流程图。

如图2所示,该方法包括操作s210~s240。

在操作s210,获取切换请求,所述切换请求用于将主节点数据库从第一数据库切换为第二数据库。

在操作s220,基于所述切换请求,确定切换类型。

在操作s230,基于所述切换类型,检测切换环境是否满足切换条件。

在操作s240,在所述切换环境满足所述切换条件的情况下,将主节点数据库从所述第一数据库切换为所述第二数据库。

该方法在执行主节点数据库从第一数据库切换为第二数据库之前,会检测切换环境是否满足切换条件,只有在满足切换条件的情况下,才会执主从数据库的切换,至少部分地避免了在执行主从切换的过程中出现异常,导致切换的中断的情况,进而提高了主从数据库切换的成功率。

根据本公开的实施例,在操作s210,获取切换请求包括基于用户输入生成切换请求。例如,主节点数据库正常工作,而用户需要对数据库的硬件进行维护的情况下,用户通过客户端主动发出主从数据库切换的请求。根据本公开的实施例,获取切换请求包括在第一数据库作为主节点数据库发生异常的情况下,生成切换请求。例如,监控主节点数据库的电子设备发现主节点数据库宕机或者进程停止,从而生成了主从切换请求。

图3示意性示出了根据本公开的实施例的在第一数据库作为主节点数据库发生异常的情况下,生成切换请求的流程图。

如图3所示,该方法包括操作s310~s330。

在操作s310,获得多个从节点数据库的状态。

在操作s320,基于所述多个从节点数据库的状态,确定一个从节点数据库为第二数据库。

在操作s330,生成用于将主节点数据库从第一数据库切换为第二数据库的切换请求。

根据本公开的实施例,在操作s310,从节点数据库的状态例如可以是从节点数据库中的日志数据与主节点数据库中的日志数据的一致程度。在图1所示的情景中,例如,从节点数据库132与主节点数据库131中的日志数据一致,而从节点数据库133中的日志数据缺少主节点数据库131中的部分日志数据。

根据本公开的实施例,在操作s320,例如可以将含有最新日志数据的从节点数据库作为第二数据库,或者可以将含有日志数据最多的从节点数据库作为第二数据库。例如,在操作s310描述的图1的情景中,可以将从节点数据库132作为第二数据库。

根据本公开的实施例,在操作s330,例如,生成指定从节点数据库132为第二数据库的切换请求。

返回参考图2,根据本公开的实施例,在操作s220,数据库切换类型例如可以包括在线切换和故障切换。在线切换,例如可以是在主节点数据库工作状态正常的情况下,用户通过客户端主动发出数据库切换的请求时执行的切换。故障切换,例如可以是主节点数据库工作状态异常时执行的切换。基于所述切换请求,确定切换类型包括从所述切换请求中读取表征切换类型的参数,以确定切换类型。例如,切换请求中包括一参数,该参数用于指示数据库的切换类型是在线切换或者故障切换。根据本公开的实施例,基于所述切换请求,确定切换类型包括基于所述切换请求,检测所述第一数据库是否异常,在所述第一数据库异常的情况下,确定切换类型是故障切换,在所述第一数据库正常的情况下,确定切换类型是在线切换。例如,在获取到切换请求的情况下,检测当前的主节点数据库是否异常,若主节点数据库异常,执行故障切换的操作,在主节点数据库正常的情况下,执行在线切换的操作。

根据本公开的实施例,在操作s230,不同的切换类型可以对应不同的切换条件。例如,故障切换可以是主节点数据库出现异常,需要保证切换的成功率,为了提高切换的成功率,切换条件包括第一数据库工作状态异常,第二数据库的工作状态正常。而在线切换是主节点数据库正常的情况下执行的切换类型,切换条件包括第一数据库的工作状态正常,若检测到第一数据库的工作状态不正常,则不执行在线切换的操作。

根据本公开的实施例,在操作s230,在所述切换类型为在线切换的情况下,所述检测切换环境是否满足切换条件包括以下至少一种检测是否存在工作状态异常的数据库,检测是否具备访问各个数据库的权限,或者验证切换请求中包括的从节点数据库是否是所述第一数据库的从节点。

根据本公开的实施例,检测是否存在工作状态异常的数据库包括检测第一数据库即当前主节点数据库工作状态是否异常,以及各个从节点数据库工作状态是否异常。若任何一个数据库的工作状态出现异常,则不满足切换条件。

根据本公开的实施例,检测是否具备访问各个数据库的权限,在图1所示的情景中,例如可以是检测管理机110是否具有访问、登陆主节点数据库131以及从节点数据库132和133的权限。

根据本公开的实施例,验证切换请求中包括的从节点数据库是否是所述第一数据库的从节点,在图1所示的情景中,例如可以是切换请求中的配置信息表征当前的从节点数据库包括从节点数据库132、从节点数据库133以及从节点数据库134,而验证出从节点数据库134不是第一数据库131的从节点。在该情景中,切换请求中传入的配置信息出现错误,需要将该错误进行修正,或者中止本次切换。

在切换类型为在线切换的情况下,根据本公开的实施例,在操作s240,在所述切换环境满足所述切换条件的情况下,将主节点数据库从所述第一数据库切换为所述第二数据库。

图4示意性示出了根据本公开的实施例的切换类型为在线切换的情况下,将主节点数据库从第一数据库切换为第二数据库的流程图。

如图4所示,该方法包括操作s241~s244。

在操作s241,禁止所述第一数据库的写入进程。

在操作s242,在所述第二数据库中的数据与所述第一数据库的数据一致的情况下,记录所述第二数据库的当前日志位点。

在操作s243,将所述第二数据库设置为读写模式。

在操作s244,在第三数据库中的数据与所述第一数据库的数据一致的情况下,基于所述当前日志位点,将所述主节点数据库从第一数据库切换为第二数据库。

其中,所述第三数据库包括除第二数据库以外的其他从节点数据库。

将所述主节点数据库从第一数据库切换为第二数据库包括控制所述第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据。

根据本公开的实施例,在操作s241,禁止所述第一数据库的写入进程,例如可以是登录第一数据库,对第一数据库加读锁,设置全局只读。根据本公开的实施例,例如可以通过第一数据库的日志位点的变化情况来确认是否加读锁成功,若第一数据库的日志位点未出现变化,则确定没有了写入操作。根据本公开的实施例,可以记录下第一数据库的日志位点。

根据本公开的实施例,在操作s242,例如可以是第二数据库中的数据变更到在操作s241记录的第一数据库的日志位点时,确定第二数据库中的数据与所述第一数据库的数据一致。根据本公开的实施例,记录第二数据库的当前日志位点,用于使其他从节点数据库从第二数据库的当前日志位点开始复制数据。

根据本公开的实施例,在操作s243,将所述第二数据库设置为读写模式,使第二数据库具备升级为主节点数据库的条件。根据本公开的实施例,操作s243可以是在确定第三数据库中的数据与所述第一数据库的数据一致后执行,以避免第三数据库在执行日志数据变更的过程中出现异常而导致切换不完整。

根据本公开的实施例,在操作s244,例如可以是等待第三数据库执行到第一数据库的日志位点,执行changemaster语句,将第三数据库的主节点切换到第二数据库,并启动从第二数据库的当前日志位点开始复制日志数据的操作。

根据本公开的实施例,在操作s244,还包括记录第三数据库存储的主从复制配置信息。在第三数据库中的数据与所述第一数据库的数据一致的情况下,记录第三数据库存储的主从复杂配置信息,其中,控制所述第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据包括,基于所述主从复制配置信息,控制所述第三数据库从所述第二数据库读取数据。该方法在切换的过程中,记录从节点的复制配置,例如该从节点的配置信息包括延时同步,使得将主节点数据库从第一数据库切换到第二数据库后,从节点的复制配置信息保持不变,提高了主从数据库数据同步的准确性,至少部分地避免了主从数据同步出现问题,或者无法同步等情况。

图5示意性示出了根据本公开的另一实施例的数据库切换方法的流程图。

如图5所示,该方法在前述实施例的基础上还包括操作s510。

在操作s510,若在将主节点数据库从所述第一数据库切换为所述第二数据库的过程中出现异常,则中止所述切换并执行预定操作。

根据本公开的实施例,在操作s510,在执行在线切换的过程中,可以实时对第一数据库、第二数据库以及第三数据库的工作状态等切换环境进行检查,若在任何时候出现异常,则中止切换并执行预定操作。预定操作例如可以是发送错误报告或者显示警告等。根据本公开的实施例,预定操作包括回滚操作。

图6示意性示出了根据本公开的另一实施例的数据库切换方法的流程图。

如图6所示,该方法在前述实施例的基础上还包括操作s610。

在操作s610,存储所述第一数据库的日志位点。其中,预定操作包括基于所述第一数据库的日志位点,执行回滚操作。

该方法在在线切换出现异常时,执行回滚操作,撤销之前的切换操作,使得从节点数据库包括第二数据库以及第三数据库从第一数据库的日志位点继续复制数据,以保证各个节点数据库正常工作。

根据本公开的实施例,在操作s610,例如在操作s241,在禁止所述第一数据库的写入进程的情况下,记录当前主节点数据库的日志位点即第一数据库的日志位点。在切换过程出现异常的情况下,从节点数据库包括第二数据库和第三数据库从第一数据库的日志位点开始复制数据,恢复切换之前的工作状态。

图7示意性示出了根据本公开的另一实施例的数据库切换方法的流程图。

如图7所示,该方法在前述实施例的基础上还包括操作s710和操作s720。

在操作s710,检测多个第三数据库的工作状态是否异常,所述第三数据库包括除第二数据库以外的其他从节点数据库。

在操作s720,在至少一个所述第三数据库的工作状态异常的情况下,将所述至少一个第三数据库设为忽略节点。

该方法将工作状态异常的第三数据库设为忽略节点,在主从切换的过程中,不对忽略节点进行日志数据的变更,进而提高主从切换的成功率。

根据本公开的实施例,在操作s710,第三数据库的工作状态例如包括第三数据库日志数据变更进程停止,或者第三数据库宕机等。

根据本公开的实施例,在操作s720,忽略节点例如可以是不再对该节点进行主节点数据库的切换操作,或者不再执行日志数据变更。

根据本公开的实施例,在切换类型为故障切换的情况下,检测切换环境是否满足预设条件包括,检测切换请求中的传入参数是否正确,传入参数例如可以是当前的主节点数据库,从节点数据库等,检测是否存在宕机节点,检测访问权限是否正常,检测所有第三数据库是否都是当前主节点的从节点,检测第三数据库的复制状态是否正常等。

根据本公开的实施例,在切换类型为故障切换的情况下,检测切换环境是否满足预设条件包括,检测所述第一数据库工作状态是否异常。根据本公开的实施例,若第一数据库的工作状态正常,切换环境不满足预设条件,若第一数据库的工作状态异常,切换环境满足预设条件。根据本公开的实施例,切换类型为故障切换,并且基于用户输入生成切换请求的情况下,所述检测切换环境是否满足预设条件还包括检测所述第二数据库是否正常。若第二数据库正常,切换环境满足预设条件,若第二数据库异常,切换环境不满足预设条件。

图8示意性示出了根据本公开的另一实施例的将主节点数据库从第一数据库切换为第二数据库的流程图。

如图8所示,该方法包括操作s245~s247。

在操作s245,判断所述第二数据库是否存在数据缺失。

在操作s246,在所述第二数据库不存在数据缺失的情况下,记录所述第二数据库的当前日志位点,并将所述第二数据库的工作模式设置为读写模式。

在操作s247,基于所述当前日志位点,将主节点数据库从第一数据库切换为第二数据库。

所述将主节点数据库从第一数据库切换为第二数据库包括,控制第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据,其中,所述第三数据库包括除第二数据库以外的其他从节点数据库。

该方法不需要等待第三数据库与第一数据库中的日志数据相同,缩短了切换时间,提高了切换的成功率。例如,即使第三数据库的复制状态出现异常,也不会影响切换操作。

根据本公开的实施例,在复制状态正常的情况下,mysql的半同步机制,使得至少有一个从节点接收了所有的主节点日志。在操作s245,例如可以是根据接收到的日志信息,找到日志最全的从节点并存储在列表中,如果第二数据库不再列表上,表面第二数据库存在数据缺失。

图9示意性示出了根据本公开的另一实施例的数据切换方法的流程图。

如图9所示,该方法在前述实施例的基础上还包括操作s910~s920。

在操作s910,在所述第二数据库存在数据缺失的情况下,第二数据库与不存在数据缺失的第四数据库的建立数据复制的连接。

在操作s920,基于所述第四数据库,恢复所述第二数据库的缺失数据。

该方法在第二数据库存在数据缺失的情况下,能够自动恢复第二数据库的缺失数据,进一步提高了切换的成功率。

根据本公开的实施例,在操作s910,例如,在所述第二数据库存在数据缺失的情况下,等待第二数据库执行完已经接收的所有日志后,将第二数据库与在操作s245中所述的列表中的一个数据库建立数据复制的连接。

根据本公开的实施例,在操作s920,例如可以是利用mysql的gtid(globaltransacitionidentifiers,全局事务标志)特性,获取第二数据库与第四数据库差异的日志数据,将差异日志数据复制到第二数据库中,完成第二数据库缺失数据的恢复。

返回参考图8,根据本公开的实施例,在操作s246,在所述第二数据库不存在数据缺失的情况下,记录所述第二数据库的当前日志位点,并将所述第二数据库的工作模式设置为读写模式。

根据本公开的实施例,在操作s247,例如可以是等待第三数据库执行到第一数据库的日志位点,执行changemaster语句,将第三数据库的主节点切换到第二数据库,并启动从第二数据库的当前日志位点开始复制日志数据的操作。

根据本公开的实施例,在操作s247,还包括记录第三数据库存储的主从复制配置信息。在第三数据库中的数据与所述第一数据库的数据一致的情况下,记录第三数据库存储的主从复杂配置信息,其中,控制所述第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据包括,基于所述主从复制配置信息,控制所述第三数据库从所述第二数据库读取数据。该方法在切换的过程中,记录从节点的复制配置,例如该从节点的配置信息包括延时同步,使得将主节点数据库从第一数据库切换到第二数据库后,从节点的复制配置信息保持不变,提高了主从数据库数据同步的准确性,至少部分地避免了主从数据同步出现问题,或者无法同步等情况。

根据本公开的实施例,在进行故障切换的过程中,数据库切换方法还包括强制关闭第一数据库进程。在检测切换环境满足预设条件之后,强制关闭第一数据库。例如,第一数据库的服务器虽然没有宕机,但是第一数据库的进程停止,此时,将主数据库节点从第一数据库切换至第二数据库,在一段时间之后,第一数据库的进程可能会自行恢复,若业务系统与第一数据库已经建立了长连接,在第一数据库的进行恢复后,业务系统依然通过该长连接访问第一数据库,然而此时,主数据库节点已经是第二数据库,造成业务系统的访问出现问题。通过强制关闭第一数据库的进程,能够保证在主从切换完成后,业务系统不会通过长连接访问到第一数据库。

图10示意性示出了根据本公开的另一实施例的数据切换方法的流程图。

如图10所示,该方法在前述实施例的基础上还包括操作s1010~s1020。

在操作s1010,中断业务系统与所述第一数据库的连接。

在操作s1020,在所述主节点数据库切换完成的情况下,将所述第一数据库的虚拟地址分配给所述第二数据库,用于使业务系统通过所述虚拟地址访问的数据库为所述第二数据库,而非所述第一数据库。

该方法通过将第一数据库的虚拟地址分配给第二数据库来切换数据库访问指向,不需要复杂的操作,易于实现。

根据本公开的实施例,在操作s1010,例如中断业务系统与所述第一数据库的长连接。中断业务系统与所述第一数据库的连接能够保证在将主节点数据库从第一数据库切换到第二书库之后,业务系统访问第二数据库,而不是通过切换之前建立的长连接依然访问到第一数据库。

根据本公开的实施例,在操作s1020,例如,管理服务器登录到第一数据库,清除第一数据库的虚拟ip的相关信息,并将第一数据库的虚拟ip分配给第二数据库,使得业务系统通过该虚拟ip即可访问到第二数据库。

根据本公开的实施例,切换数据库的访问指向的方法不限于变更虚拟ip的方法。例如,还可以是域名解析变更、lvs(linuxvirtualserver,linux虚拟服务器)等方法。

根据本公开的实施例,数据库切换方法在前述实施例的基础上还包括发送将主节点数据库从第一数据库切换为第二数据库的切换报告。例如,在故障切换中,切换过程是数据库和管理机主动执行的,对于用户来说,数据库的切换过程是不透明的,用户不知道进行了哪些切换,为了使用户清楚切换过程,可以向用户发送切换报告。该切换报告例如可以是邮件或者短信等形式。

根据本公开的实施例,数据库切换方法在前述实施例的基础上还包括通过第一接口与外部系统进行切换信息的交互,其中,所述切换信息包括将主节点数据库从第一数据库切换为第二数据库的结果,和/或将主节点数据库从第一数据库切换为第二数据库所需要的配置信息。例如,将切换过程通过第一接口展示到外部系统的用户界面上,使用户清楚切换的过程。

根据本公开的实施例,例如外部系统的参数可以通过该第一接口传入该数据库切换系统中的管理服务器,使得数据库的切换不再依赖本地静态配置文件。

根据本公开的实施例,例如管理服务器登录各个节点服务器可以默认依赖ssh(secureshell,安全外壳协议)。若外部系统已经实现其它登录方式,可以通过该第一接口修改理服务器登录各个节点服务器的登录方式,实现更便捷安全的远程登录功能。

根据本公开的实施例,例如切换过程中的进度以及状态默认以日志形式打印在切换管理服务器的本地文件中,也可以通过python语言的logging模块编写自定义的日志发送模块,将进度和状态信息发送到其他系统,方便对整体的切换流程进行控制和显示。

根据本公开的实施例,例如数据库切换方法默认使用虚拟ip的方法来切换数据库的访问指向,而通过该第一接口可以实现使用其他的方法来切换数据库的访问指向。

图11a示意性示出了根据本公开的实施例的在线切换方法的流程图。

如图11a所示,该方法包括操作s1110~s1150。

在操作s1110,检测切换环境是否满足在线切换的预设条件。类似于上文描述的操作s230。根据本公开的实施例,检测切换环境是否满足切换条件包括以下至少一种检测是否存在工作状态异常的数据库,检测是否具备访问各个数据库的权限,或者验证切换请求中包括的从节点数据库是否是所述第一数据库的从节点。

在操作s1120,第一数据库禁止写入。类似于上文描述的操作s241。例如可以是登录第一数据库,对第一数据库加读锁,设置全局只读。

在操作s1130,使第二数据库具备成为主节点数据库的条件。类似于上文描述的操作s243,在第二数据库与第一数据库的数据一致的情况下,将所述第二数据库设置为读写模式。

在操作s1140,将第三数据库的主节点变为第二数据库。类似于上文描述的操作s244。例如可以是等待第三数据库执行到第一数据库的日志位点,执行changemaster语句,将第三数据库的主节点切换到第二数据库,并启动从第二数据库的当前日志位点开始复制日志数据的操作。

在操作s1150,切换数据库访问指向。类似于上文描述的操作s1010和s1020,中断业务系统与所述第一数据库的连接以及将数据库指向切换成第二数据库。

图11b示意性示出了根据本公开的实施例的在线切换方法的效果示意图。

图11b中包括主节点数据库与从节点数据库切换之前的系统架构图1110,以及主节点数据库与从节点数据库切换之后的系统架构图1120。

在主节点数据库与从节点数据库切换之前,如系统架构1110所示,主节点数据库是第一数据库1112。从节点数据库包括第二数据库1113和第三数据库,其中,第三数据库包括从节点数据库1114~1115,从节点数据库从第一数据库1112复制数据,以保证与第一数据库1112的数据同步。业务系统的读写请求通过虚拟ip1111访问到第一数据库1112。

在主节点数据库与从节点数据库切换之后,如系统架构1120所示,主节点数据库从第一数据库1112切换为第二数据库1113。第一数据库1112和第三数据库1114~1115均是第二数据库1113的从节点数据库,从第二数据库1113中复制数据,以保证与第二数据库1113的数据同步。业务系统通过虚拟ip1111访问第二数据库1113。

图12a示意性示出了根据本公开的实施例的故障切换方法的流程图。

如图12a所示,该方法包括操作s1210~s1250。

在操作s1210,检测切换环境是否满足故障切换的预设条件。类似于上文描述的操作s230。根据本公开的实施例,在切换类型为故障切换的情况下,检测切换环境是否满足预设条件包括,检测切换请求中的传入参数是否正确,传入参数例如可以是当前的主节点数据库,从节点数据库等,检测是否存在宕机节点,检测访问权限是否正常,检测所有第三数据库是否都是当前主节点的从节点,检测第三数据库的复制状态是否正常等。

在操作s1220,强制停止第一数据库进程。例如,业务系统与第一数据库建立了长连接,在第一数据库的服务器没有宕机,但进程停止的情况下,第一数据库的进程可能会自行恢复,在第一数据库的进行恢复后,业务系统依然通过该长连接访问第一数据库,然而此时,主数据库节点已经是第二数据库,造成业务系统的访问出现问题。通过强制关闭第一数据库的进程,能够保证在主从切换完成后,业务系统不会通过长连接访问到第一数据库。

在操作s1230,使第二数据库具备成为主节点数据库的条件。例如,执行上文描述的操作s245~s246,判断所述第二数据库是否存在数据缺失以及在所述第二数据库不存在数据缺失的情况下,记录所述第二数据库的当前日志位点,并将所述第二数据库的工作模式设置为读写模式。

在操作s1240,将第三数据库的主节点变为第二数据库。类似于上文描述的操作s247,基于所述当前日志位点,将主节点数据库从第一数据库切换为第二数据库。

在操作s1250,切换数据库指向类似于上文描述的操作s1010和s1020,中断业务系统与所述第一数据库的连接以及将数据库指向切换成第二数据库。

图12b示意性示出了根据本公开的实施例的故障切换方法的效果示意图。

图12b中包括主节点数据库与从节点数据库切换之前的系统架构图1110,以及主节点数据库与从节点数据库切换之后的系统架构图1220。

在主节点数据库与从节点数据库切换之前,如系统架构1110所示,主节点数据库是第一数据库1112。从节点数据库包括第二数据库1113和第三数据库,其中,第三数据库包括从节点数据库1114~1115,从节点数据库从第一数据库1112复制数据,以保证与第一数据库1112的数据同步。业务系统的读写请求通过虚拟ip1111访问到第一数据库1112。

在主节点数据库与从节点数据库切换之后,如系统架构1220所示,主节点数据库从第一数据库1112切换为第二数据库1113。第三数据库1114~1115是第二数据库1113的从节点数据库,从第二数据库1113中复制数据,以保证与第二数据库1113的数据同步。业务系统通过虚拟ip1111访问第二数据库1113。

图13示意性示出了根据本公开的实施例的数据库切换系统1300的框图。

如图13所示,数据库切换系统1300包括获取模块1310、确定模块1320、第一检测模块1330以及切换模块1340。

获取模块1310,例如执行上文参考图2描述的操作s210,用于获取切换请求,所述切换请求用于将主节点数据库从第一数据库切换为第二数据库。

确定模块1320,例如执行上文参考图2描述的操作s220,用于基于所述切换请求,确定切换类型。

第一检测模块1330,例如执行上文参考图2描述的操作s230,用于基于所述切换类型,检测切换环境是否满足切换条件。

切换模块1340,例如执行上文参考图2描述的操作s240,用于在所述切换环境满足所述切换条件的情况下,将主节点数据库从所述第一数据库切换为所述第二数据库。

根据本公开的实施例,获取模块1310包括第一生成子模块,用于基于用户输入生成切换请求,或者第二生成子模块,用于在第一数据库作为主节点数据库发生异常的情况下,生成切换请求。

根据本公开的实施例,确定模块1320包括以下至少一种,第一确定子模块,用于从所述切换请求中读取表征切换类型的参数,以确定切换类型,或者第二确定子模块,用于基于所述切换请求,检测所述第一数据库是否异常,在所述第一数据库异常的情况下,确定切换类型是故障切换,在所述第一数据库正常的情况下,确定切换类型是在线切换。

根据本公开的实施例,在所述切换类型为在线切换的情况下,所述第一检测模块1330包括以下至少一种,第一检测子模块,用于检测是否存在工作状态异常的数据库,第二检测子模块,用于检测是否具备访问各个数据库的权限,或者验证子模块,用于验证切换请求中包括的从节点数据库是否是所述第一数据库的从节点。

图14示意性示出了根据本公开的实施例的第二生成子模块1400的框图。

如图14所示,第二生成子模块1400包括获取单元1410、确定单元1420以及生成单元1430。

获取单元1410,例如执行上文参考图3描述的操作s310,用于获得多个从节点数据库的状态。

确定单元1420,例如执行上文参考图3描述的操作s320,用于基于所述多个从节点数据库的状态,确定一个从节点数据库为第二数据库。

生成单元1430,例如执行上文参考图3描述的操作s330,用于生成以将主节点数据库从第一数据库切换为第二数据库的切换请求。

图15示意性示出了根据本公开另一实施例的数据库切换系统1500的框图。

如图15所示,数据库切换系统1500在前述实施例的基础上还包括中断模块1510。

中断模块1510,例如执行上文参考图5描述的操作s510,用于若在将主节点数据库从所述第一数据库切换为第二数据库的过程中出现异常,则中止所述切换并执行预定操作。

图16示意性示出了根据本公开另一实施例的数据库切换系统1600的框图。

如图16所示,数据库切换系统1600在前述实施例的基础上还包括存储模块1610。其中,中断模块1510包括回滚子模块1511。

存储模块1610,例如执行上文参考图6描述的操作s610,用于存储所述第一数据库的日志位点。

回滚子模块1511用于基于所述第一数据库的日志位点,执行回滚操作。

图17示意性示出了根据本公开实施例的切换模块1340的框图。

如图17所示,切换模块1340包括禁止子模块1341、记录子模块1342、设置子模块1343以及第一切换子模块1344,其中,第一切换子模块1344包括切换单元1710。

禁止子模块1341,例如执行上文参考图4描述的操作s241,用于禁止所述第一数据库的写入进程。

记录子模块1342,例如执行上文参考图4描述的操作s242,用于在所述第二数据库中的数据与所述第一数据库中的数据一致的情况下,记录所述第二数据库的当前日志位点。

设置子模块1343,例如执行上文参考图4描述的操作s243,用于将所述第二数据库设置为读写模式。

第一切换子模块1344,例如执行上文参考图4描述的操作s244,用于在第三数据库中的数据与所述第一数据库的数据一致的情况下,基于所述当前日志位点,将所述主节点数据库从第一数据库切换为第二数据库,其中,所述第三数据库包括除第二数据库以外的其他从节点数据库。

其中,切换单元1710用于控制所述第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据。

根据本公开的实施例,在切换类型为故障切换的情况下,所述第一检测模块1330包括第三检测子模块,用于检测所述第一数据库工作状态是否异常。

图18示意性示出了根据本公开另一实施例的数据库切换系统1800的框图。

如图18所示,数据库切换系统1800包括第二检测模块1810和设置模块1820。

第二检测模块1810,例如执行上文参考图7描述的操作s710,用于检测多个第三数据库的工作状态是否异常,所述第三数据库包括除第二数据库以外的其他从节点数据库。

设置模块1820,例如执行上文参考图7描述的操作s720,用于在至少一个所述第三数据库的工作状态异常的情况下,将所述至少一个第三数据库设为忽略节点。

根据本公开的实施例,在基于用户输入生成切换请求的情况下,所述第一检测模块1330还包括第四检测子模块,用于检测所述第二数据库工作状态是否正常。

图19示意性示出了根据本公开另一实施例的切换模块1340的框图。

如图19所示,切换模块1340包括判断子模块1341、执行子模块1342以及第二切换子模块1343,其中,第二切换子模块1343包括切换单元1710。

判断子模块1341,例如执行上文参考图8描述的操作s245,用于判断所述第二数据库是否存在数据缺失。

执行子模块1342,例如执行上文参考图8描述的操作s246,用于在所述第二数据库不存在数据缺失的情况下,记录所述第二数据库的当前日志位点,并将所述第二数据库的工作模式设置为读写模式。

第二切换子模块1343,例如执行上文参考图8描述的操作s247,用于基于所述当前日志位点,将主节点数据库从第一数据库切换为第二数据库。

其中,切换单元1710用于控制第三数据库从所述第二数据库读取数据,而非从所述第一数据库读取数据,其中,所述第三数据库包括除第二数据库以外的其他从节点数据库。

根据本公开的实施例,数据库切换系统在前述实施例的基础上还包括记录模块,用于记录所述第三数据库存储的主从配置信息。其中,切换单元包括切换子单元,用于用于基于所述主从配置信息,控制所述第三数据库从所述第二数据库读取数据。

图20示意性示出了根据本公开另一实施例的数据库切换系统2000的框图。

如图20所示,切换系统2000在前述实施例的基础上还包括连接模块2010和恢复模块2020。

连接模块2010,例如执行上文参考图9描述的操作s910,用于在所述第二数据库存在数据缺失的情况下,第二数据库与不存在数据缺失的第四数据库的建立数据复制的连接。

恢复模块2020,例如执行上文参考图9描述的操作s920,用于基于所述第四数据库,恢复所述第二数据库的缺失数据。

图21示意性示出了根据本公开另一实施例的数据库切换系统2100的框图。

如图21所示,数据库切换系统2100在前述实施例的基础上还包括发送模块2110。

发送模块2110用于发送将主节点数据库从第一数据库切换为第二数据库的切换报告。例如,在故障切换中,切换过程是数据库和管理机主动执行的,对于用户来说,数据库的切换过程是不透明的,用户不知道进行了哪些切换,为了使用户清楚切换过程,可以向用户发送切换报告。该切换报告例如可以是邮件或者短信等形式。

根据本公开的实施例,数据库切换系统在前述实施例的基础上还包括交互模块,用于通过第一接口与外部系统进行切换信息的交互,其中,所述切换信息包括将主节点数据库从第一数据库切换为第二数据库的结果,和/或将主节点数据库从第一数据库切换为第二数据库所需要的配置信息。

图22示意性示出了根据本公开另一实施例的数据库切换系统2200的框图。

如图22所示,数据库切换系统2200在前述实施例的基础上还包括中断模块2210和分配模块2220。

中断模块2210,例如执行上文参考图10描述的操作s1010,用于中断业务系统与所述第一数据库的连接。

分配模块2220,例如执行上文参考图10描述的操作s1020,用于在所述主节点数据库切换完成的情况下,将所述第一数据库的虚拟地址分配给所述第二数据库,用于使业务系统通过所述虚拟地址访问的数据库为所述第二数据库,而非所述第一数据库。

根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

例如,获取模块1310、确定模块1320、第一检测模块1330、切换模块1340、第一生成子模块、第二生成子模块、第一确定子模块、第二确定子模块、第一检测子模块、第二检测子模块、验证子模块、第二生成子模块1400、确定单元1420、生成单元1430、中断模块1510、存储模块1610、回滚子模块1511、禁止子模块1341、记录子模块1342、设置子模块1343、第一切换子模块1344、切换单元1710、第三检测子模块、第二检测模块1810、设置模块1820、第四检测子模块、判断子模块1341、执行子模块1342、第二切换子模块1343、连接模块2010、恢复模块2020、发送模块2110、交互模块、中断模块2210和分配模块2220中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块1310、确定模块1320、第一检测模块1330、切换模块1340、第一生成子模块、第二生成子模块、第一确定子模块、第二确定子模块、第一检测子模块、第二检测子模块、验证子模块、第二生成子模块1400、确定单元1420、生成单元1430、中断模块1510、存储模块1610、回滚子模块1511、禁止子模块1341、记录子模块1342、设置子模块1343、第一切换子模块1344、切换单元1710、第三检测子模块、第二检测模块1810、设置模块1820、第四检测子模块、判断子模块1341、执行子模块1342、第二切换子模块1343、连接模块2010、恢复模块2020、发送模块2110、交互模块、中断模块2210和分配模块2220中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块1310、确定模块1320、第一检测模块1330、切换模块1340、第一生成子模块、第二生成子模块、第一确定子模块、第二确定子模块、第一检测子模块、第二检测子模块、验证子模块、第二生成子模块1400、确定单元1420、生成单元1430、中断模块1510、存储模块1610、回滚子模块1511、禁止子模块1341、记录子模块1342、设置子模块1343、第一切换子模块1344、切换单元1710、第三检测子模块、第二检测模块1810、设置模块1820、第四检测子模块、判断子模块1341、执行子模块1342、第二切换子模块1343、连接模块2010、恢复模块2020、发送模块2110、交互模块、中断模块2210和分配模块2220中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

图23示意性示出了根据本公开实施例的电子设备2300的方框图。图23示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图23所示,根据本公开实施例的电子设备2300包括处理器2301,其可以根据存储在只读存储器(rom)2302中的程序或者从存储部分2308加载到随机访问存储器(ram)2303中的程序而执行各种适当的动作和处理。处理器2301例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器2301还可以包括用于缓存用途的板载存储器。处理器2301可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

在ram2303中,存储有电子设备2300操作所需的各种程序和数据。处理器2301、rom2302以及ram2303通过总线2304彼此相连。处理器2301通过执行rom2302和/或ram2303中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom2302和ram2303以外的一个或多个存储器中。处理器2301也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。

根据本公开的实施例,电子设备2300还可以包括输入/输出(i/o)接口2305,输入/输出(i/o)接口2305也连接至总线2304。电子设备2300还可以包括连接至i/o接口2305的以下部件中的一项或多项:包括键盘、鼠标等的输入部分2306;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分2307;包括硬盘等的存储部分2308;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分2309。通信部分2309经由诸如因特网的网络执行通信处理。驱动器2310也根据需要连接至i/o接口2305。可拆卸介质2311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器2310上,以便于从其上读出的计算机程序根据需要被安装入存储部分2308。

根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分2309从网络上被下载和安装,和/或从可拆卸介质2311被安装。在该计算机程序被处理器2301执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。

本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。

根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。

例如,根据本公开的实施例,计算机可读介质可以包括上文描述的rom2302和/或ram2303和/或rom2302和ram2303以外的一个或多个存储器。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

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