发明内容
本说明书提出一种分布式数据库集群管理方法;所述分布式数据库集群包括主节点、与所述主节点对应的至少一个附属主节点;其中,所述主节点维护了各附属主节点的同步状态,所述方法包括:
在监测到所述至少一个附属主节点中的目标附属主节点发生宕机故障时,确定所述主节点维护的元数据是否发生修改;其中,所述元数据包括与所述分布式数据库集群中的数据库事务相关的元数据;
如果所述主节点维护的元数据发生修改,将所述目标附属主节点的同步状态更新为未同步状态;
在所述目标附属主节点恢复正常时,确认所述目标附属主节点的同步状态是否为未同步状态;
如果所述目标附属主节点的同步状态为未同步状态,基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复,并对所述目标附属主节点承载的未完成的数据库事务进行恢复。
可选的,所述分布式数据库集群还包括用于执行所述主节点或者所述附属主节点下发的数据库事务的若干计算节点;所述主节点搭载了用于维护所述若干计算节点的同步状态的系统表;各附属主节点的同步状态被维护在所述系统表中。
可选的,所述系统表还用于维护所述若干计算节点的运行状态;所述主节点还维护了各附属主节点的运行状态;各附属主节点的运行状态也被维护在所述系统表中。
可选的,所述方法还包括:
如果所述主节点维护的所述元数据未发生修改,将所述目标附属主节点的同步状态保持为已同步状态;
相应的,
如果所述目标附属主节点的同步状态为已同步状态,针对所述目标附属主节点执行强制重启,以对所述目标附属主节点进行恢复。
可选的,所述主节点还维护了各附属主节点的运行状态;
所述方法还包括:
在所述目标附属主节点发生宕机故障时,将维护的所述目标附属主节点的运行状态更新为离线状态;
在所述目标附属主节点恢复正常时,将所述目标附属主节点的运行状态由离线状态更新为在线状态;
相应的,
在监测到所述至少一个附属主节点中的目标附属主节点发生宕机故障时,确定所述主节点维护的元数据是否发生修改,包括:
在所述主节点维护的所述目标附属主节点的运行状态为离线状态时,进一步确定所述主节点维护的元数据是否发生修改;
在所述目标附属主节点恢复正常时,确认所述目标附属主节点的同步状态是否为未同步状态,包括:
在所述主节点维护的所述目标附属主节点的运行状态为在线状态时,进一步确认所述目标附属主节点的同步状态是否为未同步状态。
可选的,所述方法还包括:
在基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复之前,为所述主节点维护的所述元数据添加访问锁;以及,
在基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复之后,释放为所述元数据添加的所述访问锁。
可选的,所述分布式数据库集群为基于改进的greenplum构建的分布式数据库集群。
本说明书还提出一种分布式数据库集群管理装置;所述分布式数据库集群包括主节点、与所述主节点对应的至少一个附属主节点;其中,所述主节点维护了各附属主节点的同步状态,所述装置包括:
监测模块,在监测到所述至少一个附属主节点中的目标附属主节点发生宕机故障时,确定所述主节点维护的元数据是否发生修改;其中,所述元数据包括与所述分布式数据库集群中的数据库事务相关的元数据;
如果所述主节点维护的元数据发生修改,将所述目标附属主节点的同步状态更新为未同步状态;
恢复模块,在所述目标附属主节点恢复正常时,确认所述目标附属主节点的同步状态是否为未同步状态;
如果所述目标附属主节点的同步状态为未同步状态,基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复,并对所述目标附属主节点承载的未完成的数据库事务进行恢复。
可选的,所述分布式数据库集群还包括用于执行所述主节点或者所述附属主节点下发的数据库事务的若干计算节点;所述主节点搭载了用于维护所述若干计算节点的同步状态的系统表;各附属主节点的同步状态被维护在所述系统表中。
可选的,所述系统表还用于维护所述若干计算节点的运行状态;所述主节点还维护了各附属主节点的运行状态;各附属主节点的运行状态也被维护在所述系统表中。
可选的,所述监测模块进一步,如果所述主节点维护的所述元数据未发生修改,将所述目标附属主节点的同步状态保持为已同步状态;
相应的,所述恢复模块进一步,如果所述目标附属主节点的同步状态为已同步状态,针对所述目标附属主节点执行强制重启,以对所述目标附属主节点进行恢复。
可选的,所述主节点还维护了各附属主节点的运行状态;
所述监测模块进一步,在所述目标附属主节点发生宕机故障时,将维护的所述目标附属主节点的运行状态更新为离线状态;
在所述目标附属主节点恢复正常时,将所述目标附属主节点的运行状态由离线状态更新为在线状态;
相应的,
在监测到所述至少一个附属主节点中的目标附属主节点发生宕机故障时,确定所述主节点维护的元数据是否发生修改,所述监测模块进一步:
在所述主节点维护的所述目标附属主节点的运行状态为离线状态时,进一步确定所述主节点维护的元数据是否发生修改;
在所述目标附属主节点恢复正常时,确认所述目标附属主节点的同步状态是否为未同步状态,所述恢复模块进一步:
在所述主节点维护的所述目标附属主节点的运行状态为在线状态时,进一步确认所述目标附属主节点的同步状态是否为未同步状态。
可选的,所述装置还包括访问控制模块;所述访问控制模块进一步:
在基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复之前,为所述主节点维护的所述元数据添加访问锁;以及,
在基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复之后,释放为所述元数据添加的所述访问锁。
可选的,所述分布式数据库集群为基于改进的greenplum构建的分布式数据库集群。
本申请还提供一种电子设备,一种分布式数据库,包括:
主节点;
与所述主节点对应的至少一个附属主节点;
其中,所述主节点维护了各附属主节点的同步状态,在监测到所述至少一个附属主节点中的目标附属主节点发生宕机故障时,确定所述主节点维护的元数据是否发生修改;所述元数据包括与所述分布式数据库集群中的数据库事务相关的元数据;如果所述主节点维护的元数据发生修改,将所述目标附属主节点的同步状态更新为未同步状态;在所述目标附属主节点恢复正常时,确认所述目标附属主节点的同步状态是否为未同步状态;如果所述目标附属主节点的同步状态为未同步状态,基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复,并对所述目标附属主节点承载的未完成的数据库事务进行恢复。
本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述的方法。
本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。
在以上技术方案中,避免为附属主节点部署对应standby节点,通过主节点实时维护附属主节点的同步状态,并对同步状态为未同步状态的目标附属主节点执行数据库事务恢复,可以避免仅根据附属主节点是否宕机来进行数据库事务恢复,减少了系统资源消耗,同时提高了集群故障的恢复效率。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
请参考图1,图1是本说明书一实施例提供的一种分布式数据库集群的组网示意图。
如图1所示,分布式数据库集群包括主节点、作为该主节点对应的附属主节点(附属主节点1、附属主节点2、...附属主节点M)、用于执行主节点或者附属主节点下发的数据库事务的若干计算节点(计算节点1、计算节点2、...计算节点N),M、N为正整数;其中,附属主节点与主节点同时运行处理业务,用于在主节点性能不足时,对主节点承载的业务进行分担,主节点、附属主节点和计算节点基于网络相连通信;主节点是整个分布式数据库集群的核心,一旦宕机整个集群都会陷入不可用的状态,所以,分布式数据库集群中通常还部署有一个standby节点,作为主节点的热备来保证集群的高可用。
在一些场景下,作为主节点的性能扩展的附属主节点,如果也发生宕机,则会导致分布式数据库集群的性能急剧下降的问题。
为了解决该问题,在传统的方案中,可以在分布式数据库集群中,针对每个附属主节点也分别部署standby节点作为热备。比如:以图1为例,在分布式数据库集群中,针对M个附属主节点需要额外部署M个standby节点。由此可见,在此方案中,部署成本较高。
另外,在此方案中,由于standby节点对外不提供数据库服务(比如:数据库及表的增、删、改、查等),而且需要实时同步附属主节点对外提供数据库服务时的所产生数据库日志,并且只有在standby节点同步数据库日志后才指示附属主节点对外提供的数据库服务为完成,因此在为附属主节点配置对应standby节点后,将会导致附属主节点对外提供的数据库服务的性能下降。
基于此,在图1所示的组网架构基础上,本说明书旨在提出,一种通过主节点同时监测附属主节点是否故障以及在故障期间元数据数据是否更改,进而针对故障附属主节点上承载的未完成的数据库事务进行恢复的分布式数据库集群管理的技术方案。
在实现时,分布式数据库集群包括主节点、作为上述主节点的性能扩展的至少一个附属主节点;其中,上述主节点维护了各附属主节点的同步状态。
进一步地,主节点在监测到上述至少一个附属主节点中的目标附属主节点发生宕机故障时,确定上述主节点维护的元数据是否发生修改。
进一步地,如果上述主节点维护的元数据发生修改,将上述目标附属主节点的同步状态更新为未同步状态;其中,上述元数据包括与上述分布式数据库集群中承载的数据库事务相关的元数据。
进一步地,在上述目标附属主节点恢复正常时,确认上述目标附属主节点的同步状态是否为未同步状态。
进一步地,如果上述目标附属主节点的同步状态为未同步状态,基于上述主节点维护的上述元数据对上述目标附属主节点维护的元数据进行恢复,并对上述目标附属主节点承载的未完成的数据库事务进行恢复。
在以上技术方案中,避免为附属主节点部署对应standby节点,通过主节点实时维护附属主节点的同步状态,并对同步状态为未同步状态的目标附属主节点执行数据库事务恢复,可以避免仅根据附属主节点是否宕机来进行数据库事务恢复,减少了系统资源消耗,同时提高了集群故障的恢复效率。
下面通过具体实施例并结合具体的应用场景对本说明书进行描述。
请参见图2,图2是一示例性实施例提供的一种分布式数据库集群管理方法的流程图;上述分布式数据库集群包括主节点、作为上述主节点的性能扩展的至少一个附属主节点;其中,上述主节点维护了各附属主节点的同步状态,上述方法执行以下步骤:
步骤202、在监测到上述至少一个附属主节点中的目标附属主节点发生宕机故障时,确定上述主节点维护的元数据是否发生修改;其中,上述元数据包括与上述分布式数据库集群中的数据库事务相关的元数据。
步骤204、如果上述主节点维护的元数据发生修改,将上述目标附属主节点的同步状态更新为未同步状态。
步骤206、在上述目标附属主节点恢复正常时,确认上述目标附属主节点的同步状态是否为未同步状态。
步骤208、如果上述目标附属主节点的同步状态为未同步状态,基于上述主节点维护的上述元数据对上述目标附属主节点维护的元数据进行恢复,并对上述目标附属主节点承载的未完成的数据库事务进行恢复。
在本说明书中,上述分布式数据库集群包括主节点、与上述主节点对应的至少一个附属主节点、用于执行上述主节点或者上述附属主节点下发的数据库事务的若干计算节点;
其中,上述主节点,是指上述分布式数据库集群中的一种节点角色,分布式数据库集群中只会有一个主节点,负责分布式数据库集群管理、数据库事务及其相关元数据的管理,并且可以接受来自客户端的访问请求(比如:SQL读写访问请求),生成执行计划,并下发给计算节点执行计算,收集计算结果并返回给客户端。
上述附属主节点,是指上述分布式数据库集群中的一种节点角色,在上述分布式数据库集群中可以部署一个或多个附属主节点,各个附属主节点可以作为上述主节点对外提供数据库服务的性能扩展,用于分担上述主节点承载的数据库事务及其相关元数据的管理。
上述计算节点,是指上述分布式数据库集群中的一种节点角色,在上述分布式数据库集群中可以部署一个或多个计算节点,各个计算节点可以执行上述主节点或者上述附属主节点下发的数据库事务,同时各个计算节点还可以负责存储用户数据(比如:在数据库及其表中保存的用户数据)。
在本说明书中,上述分布式数据库集群,可以包括基于MPP(Massively ParallelProcessing,海量并行处理)机制构建的任何类型的分布数据库集群。
例如,上述分布式数据库集群具体可以包括greenplum集群或其它基于MPP机制构建的分布数据库集群。
在示出的一种实施方式中,上述分布式数据库集群,可以为基于改进的greenplum构建的分布式数据库集群;
例如,上述分布式数据库集群,具体可以包括ADBPG(AnalyticDB PostGresql,阿里云提供的一种分布式数据库)集群。
需要说明是,ADBPG集群相对传统的greenplum集群的主要改进之一,在于架构改进,具体架构改进在于,ADBPG集群相比greenplum集群增加了附属主节点的节点角色。
例如,ADBPG集群的架构具体可以参考如图1所示的分布式数据库集群的架构,这里不再赘述。而greenplum集群的架构仅包括类似ADBPG集群中主节点的Master节点,以及类似ADBPG集群中计算节点的segment节点,在ADBPG集群中并不存在附属主节点的节点角色。
在本说明书中,上述主节点维护了各附属主节点的同步状态;其中,上述同步状态用于指示各附属主节点维护的元数据与上述主节点维护的元数据是否一致。
例如,上述主节点还可以通过新创建一个用户表,用于保存各附属主节点的同步状态。
当然,在实际应用中,上述主节点还可以利用已有的系统表,专门用于保存各附属主节点的同步状态。
在示出的一种实施方式中,上述主节点搭载了用于维护上述若干计算节点的同步状态的系统表;
其中,该系统表为用于维护上述若干计算节点的同步状态的系统表,各附属主节点的同步状态被维护在该系统表中。
例如,在实现时,可以通过在该系统表中通过扩展节点类型,增加附属主节点对应的节点类型枚举值,来区别计算节点和附属主节点。
需要说明的是,通过利用主节点维护的已有的系统表来维护附属主节点的同步状态,没有引入额外的用户表或修改系统表的表结构(比如:增加表字段),保证了分布式数据库集群软件版本的兼容性,便于分布式数据库集群软件的平滑升级。
在示出的一种实施方式中,在上述主节点搭载了用于维护上述若干计算节点的同步状态的系统表时,上述系统表还可以用于维护上述若干计算节点的运行状态;上述主节点还维护了各附属主节点的运行状态;各附属主节点的运行状态也被维护在上述系统表中。
例如,以主节点搭载了用于维护若干计算节点的同步状态和运行状态的系统表为例,该主节点除了还维护了各附属主节点的同步状态外,也可以维护各附属主节点的运行状态。
需要说明的是,该系统表中维护的附属主节点的运行状态,可以用于表示附属主节点是否正常,比如:在主节点监测到一个附属主节点发生宕机故障时,则主节点将该系统表中维护的附属主节点的运行状态从正常更新为故障。
在本说明书中,在上述分布式数据库集群正常运行后,上述主节点可以将各附属主节点的同步状态初始设置为已同步状态。
在本说明书中,上述主节点可以监测各附属主节点是否发生宕机故障。
例如,主节点上可以启动一个监测进程,周期性地监测各附属主节点分别与主节点之间的保活通信是否正常,如果一个附属主节点与主节点之间的保活通信失败,则主节点可以确定该附属主节点发生宕机故障,在确定该附属主节点发生宕机故障后,主节点可以将前文描述的系统表中的该附属主节点的运行状态从正常更新为故障。
需要说明是,如何判断附属主节点与主节点之间的保活通信失败的具体方式,在本说明书中不作具体限定。比如,可以根据保活通信失败次数是否达到预设次数阈值或者根据保活通信失败的时间达到预设的时间阈值来确定保活通信是否失败,或者是以上示例的两种情况组合来确定保活通信是否失败。
在本说明书中,在上述主节点监测到至少一个上述附属主节点中的目标附属主节点发生宕机故障时,确定上述主节点维护的元数据是否发生修改。
例如,在分布式数据库集群分别部署仅有一个或多个附属主节点的组网时,当主节点监测到一个或多个附属主节点中的目标附属主节点发生宕机故障时,确定主节点维护的元数据是否发生修改。
需要说明的是,确定上述元数据发生修改的检测方式,在本说明书中不作具体限定。例如:在实际应用中,主节点可以通过监测在目标附属主节点宕机期间内,是否有访问目标附属主节点的DDL(Data Definition Language,数据库模式定义语言)语句;其中,DDL语句可以包括create(添加)、alter(修改)、drop(删除)和truncate(删除)四个SQL关键字的SQL语句。
在本说明书中,如果上述主节点确定自身维护的上述元数据发生修改,将上述目标附属主节点的同步状态更新为未同步状态。
例如,请参考图1,以发生宕机故障的目标附属主节点为附属主节点1为例,在附属主节点1发生宕机故障时,如果主节点确定自身维护的元数据发生修改,将附属主节点1的同步状态从初始设置的已同步状态更新为未同步状态。
需要说明的是,在本说明书中,上述元数据,是指与上述分布式数据库集群中的数据库事务相关的业务元数据,而不是分布式数据库集群配置管理相关的管理元数据。在实际应用中,该业务元数据,具体可以包括与数据库事务相关的数据库、视图、数据表及表字段相关的元数据(比如:数据库信息、模式信息、表信息、属性信息、函数信息等)。
在本说明书中,在上述目标附属主节点恢复正常时,上述主节点确认上述目标附属主节点的同步状态是否为未同步状态。
接着以上示例继续举例,在目标附属主节点1恢复正常时,主节点可以从维护了各附属主节点的同步状态的系统表中,获取目标附属主节点1的同步状态并确认其同步状态是否为未同步状态。
在本说明书中,如果上述目标附属主节点的同步状态为未同步状态,基于上述主节点维护的上述元数据对上述目标附属主节点维护的元数据进行恢复,并对上述目标附属主节点承载的未完成的数据库事务进行恢复。
接着以上示例继续举例,在目标附属主节点1的同步状态为未同步状态,基于主节点维护的元数据对目标附属主节点1维护的元数据进行全量恢复,并对目标附属主节点1承载的未完成的数据库事务进行恢复。
需要说明的是,基于上述主节点维护的上述元数据对上述目标附属主节点维护的元数据进行恢复并对上述目标附属主节点承载的未完成的数据库事务进行全量恢复,具体可以包括:将主节点维护的元数据库中的元数据先备份保存为全量备份,再将该全量备份复导入至目标附属主节点维护的元数据库进行全量恢复,并由上述目标附属主节点根据自身元数据库中已恢复的元数据来查找对应管理至少一个计算节点,再触发该至少一个计算节点分别针对自身上残留的两阶段事务进行恢复;其中,两阶段事务、全量备份及全量恢复的具体过程,请参见相关原理介绍,这里不再赘述。
在示出的一种实施方式中,在基于上述主节点维护的上述元数据对上述目标附属主节点维护的元数据进行恢复之前,上述主节点可以为自身维护的上述元数据添加访问锁;以及,在基于上述主节点维护的上述元数据对所述目标附属主节点维护的元数据进行恢复之后,释放为上述元数据添加的上述访问锁。
例如,在基于主节点维护的元数据对目标附属主节点1维护的元数据进行恢复之前,主节点可以为自身维护的元数据添加访问锁,以此用于禁止在对目标附属主节点1维护的元数据进行恢复的过程中,发生新的元数据更改。相应的,在基于主节点维护的元数据对目标附属主节点1维护的元数据进行恢复之后,释放为该元数据添加的该访问锁,以此用于恢复客户端向分布式数据库集群发起的可导致元数据更改的数据库访问(比如:类似前文描述的DDL语句触发的数据库访问)。
在示出的一种实施方式中,如果上述主节点维护的上述元数据未发生修改,上述主节点将上述目标附属主节点的同步状态保持为已同步状态;
相应的,如果上述目标附属主节点的同步状态为已同步状态,针对上述目标附属主节点执行强制重启,以对上述目标附属主节点进行恢复。
例如,请参考图1,以发生宕机故障的目标附属主节点为附属主节点1为例,在附属主节点1发生宕机故障时,如果主节点确定自身维护的元数据未发生修改,将附属主节点1的同步状态保持为已同步状态,也即,将初始设置的已同步状态继续保持为已同步状态,不作状态修改。相应的,如果目标附属主节点1的同步状态为已同步状态,针对目标附属主节点1执行强制重启,以对目标附属主节点1进行故障恢复。
需要说明的是,在目标附属主节点发生宕机故障后,主节点维护的该目标附属主节点的运行状态为故障且主节点维护的该目标附属主节点同步状态为已同步状态,此时,对该目标附属主节点仅执行强制重启(比如:目标附属主节点已经发生kernal panic挂死,可以对其执行断电重启等)。一方面,可以避免仅根据附属主节点是否宕机来进行数据库事务恢复。另一方面,无需执行如同前文描述的“在目标附属主节点同步状态为未同步状态时,所对应对目标附属主节点维护的元数据进行全量恢复,并对上述目标附属主节点承载的未完成的数据库事务进行恢复”的恢复过程,因此,可以极大地减少了由于附属主节点宕机而导致的集群故障的恢复时间,提高了集群故障的恢复效率。
通过以上实施例可见,避免为附属主节点部署对应standby节点,通过主节点实时维护附属主节点的同步状态,并对同步状态为未同步状态的目标附属主节点执行数据库事务恢复,可以避免仅根据附属主节点是否宕机来进行数据库事务恢复,减少了系统资源消耗,同时提高了集群故障的恢复效率。
例如,以图1的组网为例,通过以上实施例,在保持分布式数据库集群性能不降低的前提下,一方面,避免为M个附属主节点分别部署对应的M个standby节点,降低了集群部署成本;以及,由于不部署与附属主节点对应的standby节点,避免了前文描述的部署与附属主节点对应的standby节点后会导致对外提供的数据库服务的性能下降的问题。另一方面,基于主节点监测附属主节点是否发生宕机的条件和附属主节点宕机期间持续监测集群元数据是否发生更改的条件,并通过结合该两个条件来综合判断是否对附属主节点进行数据库事务恢复,避免仅根据附属主节点是否宕机的单一条件判断是否进行数据库事务恢复,减少了系统资源消耗,同时提高了集群故障的恢复效率。
与上述方法实施例相对应,本说明书还提供了一种分布式数据库集群管理装置的实施例。
本说明书的基于区块链的分级存储装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
从硬件层面而言,如图3所示,为本说明书的分布式数据库集群管理装置所在电子设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图4是本说明书一示例性实施例示出的一种分布式数据库集群管理装置的框图。
请参考图4,分布式数据库集群管理装置40可以应用在前述图3所示的电子设备中;所述分布式数据库集群包括主节点、与所述主节点对应的至少一个附属主节点;其中,所述主节点维护了各附属主节点的同步状态,所述装置50包括:
监测模块401,在监测到所述至少一个附属主节点中的目标附属主节点发生宕机故障时,确定所述主节点维护的元数据是否发生修改;其中,所述元数据包括与所述分布式数据库集群中的数据库事务相关的元数据;
如果所述主节点维护的元数据发生修改,将所述目标附属主节点的同步状态更新为未同步状态;
恢复模块402,在所述目标附属主节点恢复正常时,确认所述目标附属主节点的同步状态是否为未同步状态;
如果所述目标附属主节点的同步状态为未同步状态,基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复,并对所述目标附属主节点承载的未完成的数据库事务进行恢复。
在本实施例中,所述分布式数据库集群还包括用于执行所述主节点或者所述附属主节点下发的数据库事务的若干计算节点;所述主节点搭载了用于维护所述若干计算节点的同步状态的系统表;各附属主节点的同步状态被维护在所述系统表中。
在本实施例中,所述系统表还用于维护所述若干计算节点的运行状态;所述主节点还维护了各附属主节点的运行状态;各附属主节点的运行状态也被维护在所述系统表中。
在本实施例中,所述监测模块401进一步,如果所述主节点维护的所述元数据未发生修改,将所述目标附属主节点的同步状态保持为已同步状态;
相应的,所述恢复模块402进一步,如果所述目标附属主节点的同步状态为已同步状态,针对所述目标附属主节点执行强制重启,以对所述目标附属主节点进行恢复。
在本实施例中,所述主节点还维护了各附属主节点的运行状态;
所述监测模块401进一步,在所述目标附属主节点发生宕机故障时,将维护的所述目标附属主节点的运行状态更新为离线状态;
在所述目标附属主节点恢复正常时,将所述目标附属主节点的运行状态由离线状态更新为在线状态;
相应的,
在监测到所述至少一个附属主节点中的目标附属主节点发生宕机故障时,确定所述主节点维护的元数据是否发生修改,所述监测模块401进一步:
在所述主节点维护的所述目标附属主节点的运行状态为离线状态时,进一步确定所述主节点维护的元数据是否发生修改;
在所述目标附属主节点恢复正常时,确认所述目标附属主节点的同步状态是否为未同步状态,所述恢复模块402进一步:
在所述主节点维护的所述目标附属主节点的运行状态为在线状态时,进一步确认所述目标附属主节点的同步状态是否为未同步状态。
在本实施例中,所述装置还包括访问控制模块;所述访问控制模块进一步:
在基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复之前,为所述主节点维护的所述元数据添加访问锁;以及,
在基于所述主节点维护的所述元数据对所述目标附属主节点维护的元数据进行恢复之后,释放为所述元数据添加的所述访问锁。
在本实施例中,所述分布式数据库集群为基于改进的greenplum构建的分布式数据库集群。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。