一种选举方法、装置及数据库镜像集群节点的制作方法

文档序号:8361489阅读:366来源:国知局
一种选举方法、装置及数据库镜像集群节点的制作方法
【技术领域】
[0001]本发明涉及数据处理领域,尤其涉及一种选举方法、装置及数据库镜像集群节点。
【背景技术】
[0002]随着数据量的不断膨胀,以及商业智能(BI)在企业内的快速发展,BI用户对信息分析平台的访问频率和查询复杂度也快速提升,因此要求相应的数据库对海量数据高并发查询进行支持,因而米取MPP (Massive Parallel Processing)架构的数据库系统是非常有益的,在MPP中增加节点就可以线性提高系统的数据存储能力和数据处理能力。
[0003]在MPP架构中,为了保证高可用,对每个处理单元提供数据库层的镜像机制保护,当然这个处理单元不仅仅能提供高可用,同时可以提供更多的查询能力,也可以通过镜像获取数据库的备份以便对数据进行分析。当然,每个处理单元也是一个单独的集群(我们称该集群为数据库镜像集群),也是一个主(Master)节点多个从(Slave)节点的集群,因而需要选取唯一 Master节点的方法。
[0004]数据库镜像集群选取唯一的Master节点与一般的集群选取唯一的Master节点有不同的地方,因为镜像集群的功能决定了该集群可能有多个节点,为了不影响集群的写数据的性能,只能少部分的节点与Master节点是同步的,大部分的节点是异步的,所以一定要选取当前数据最新的节点作为Master节点,否则会导致数据丢失。
[0005]现有技术中作为Master的节点通常是随机选择的,这就可能选择出所维护数据最旧的数据库节点作为Master节点,在这种情况下,当其它比该Master节点维护数据更新的节点以该Master节点上的数据为准来维护数据时,就会发生一部分数据的丢失,从而引起用户使用上的不便。这种不便例如:数据丢失了,也就会发生某个用户已经提交的事务,像根本没在这个系统中操作过,在用户看起来就是,他提交的事务,被回滚了。

【发明内容】

[0006]有鉴于此,本发明实施例的目的是提供一种选举方法、装置及数据库镜像集群节点,以避免因选择所维护数据最旧的节点作为唯一主节点而造成数据丢失,提升用户体验。
[0007]为解决上述技术问题,本发明实施例提供方案如下:
[0008]本发明实施例提供一种选举方法,用于数据库镜像集群中的多个节点中的第一节点,所述多个节点中每个节点自身均维护一用于表征自身维护数据的新旧程度的表征量,所述方法包括:
[0009]向所述多个节点广播包括自身维护的表征量的广播信息,同时开始监听所述多个节点广播的包括自身维护的表征量的广播信息;
[0010]在监听到所述多个节点中大于第一设定数目的节点广播的广播信息时,根据所述大于第一设定数目的节点广播的广播信息中包括的表征量,从所述大于第一设定数目的节点中选择出自身维护数据的新旧程度最新的第二节点,其中,所述第一设定数目大于或等于一个节点,所述大于第一设定数目的节点广播的消息中包括的表征量不完全相同;
[0011]向所述第二节点发送赞同其成为主节点的赞同信息,同时开始监听所述多个节点向其发送的赞同其成为主节点的赞同信息;
[0012]在监听到所述多个节点中大于第二设定数目的节点向其发送的赞同信息时,将自身设置为主节点,其中,所述第二设定数目大于或等于所述多个节点的数目的二分之一的向下取整值。
[0013]优选地,还包括:
[0014]向所述多个节点广播包括自身维护的表征量的广播信息之前,监听所述数据库镜像集群中主节点以设定周期、周期性地向所述多个节点广播的心跳信息;
[0015]判断在监听到所述数据库镜像集群中主节点广播的第一心跳信息之后的设定时长时间内,是否监听到所述数据库镜像集群中主节点广播的下一心跳信息,获取一判断结果,其中,所述设定时长大于所述设定周期;
[0016]当所述判断结果为否时,进入所述向所述多个节点广播包括自身维护的表征量的广播信息,同时开始监听所述多个节点广播的包括自身维护的表征量的广播信息的步骤。
[0017]优选地,所述多个节点中每个节点自身维护的数据中包括日志,所述多个节点中每个节点自身维护的表征量包括该节点自身维护的最新日志的序号;
[0018]所述在监听到所述多个节点中大于第一设定数目的节点广播的广播信息时,根据所述大于第一设定数目的节点广播的广播信息中包括的表征量,从所述大于第一设定数目的节点中选择出自身维护数据的新旧程度最新的第二节点包括:
[0019]在监听到所述多个节点中大于第一设定数目的节点广播的表征量时,根据所述大于第一设定数目的节点广播的广播信息中包括的序号,从所述至少两个节点中选择出所广播的广播信息中包括的序号最大的所述第二节点。
[0020]优选地,所述根据所述大于第一设定数目的节点广播的广播信息中包括的表征量,从所述大于第一设定数目的节点中选择出自身维护数据的新旧程度最新的第二节点包括:
[0021]根据所述大于第一设定数目的节点广播的广播信息中包括的表征量,从所述大于第一设定数目的节点中选择出自身维护数据的新旧程度最新的所有节点;
[0022]在所述所有节点的数目大于一个时,从所述所有节点中选择出对应选择优先级最高的所述第二节点。
[0023]优选地,所述选择优先级由节点的镜像类型来表征,其中,镜像类型为同步镜像的节点的选择优先级比镜像类型为异步镜像的节点的选择优先级高;或者,
[0024]所述选择优先级由节点的IP地址和监听端口号组成的字符串来表征,其中,节点的IP地址和监听端口号组成的字符串映射成的数值越大表明节点的选择优先级越高,或者,节点的IP地址和监听端口号组成的字符串映射成的数值越小表明节点的选择优先级越高;或者,
[0025]所述选择优先级由节点的镜像类型、和IP地址和监听端口号组成的字符串来表征,其中,镜像类型为同步镜像的节点的选择优先级比镜像类型为异步镜像的节点的选择优先级高;镜像类型相同的至少两个节点中,节点的IP地址和监听端口号组成的字符串映射成的数值越大表明节点的选择优先级越高,或者,节点的IP地址和监听端口号组成的字符串映射成的数值越小表明节点的选择优先级越高。
[0026]本发明实施例还提供一种选举装置,用于数据库镜像集群中的多个节点中的第一节点,所述多个节点中每个节点自身均维护一用于表征自身维护数据的新旧程度的表征量,所述装置包括:
[0027]广播及监听模块,用于向所述多个节点广播包括自身维护的表征量的广播信息,同时开始监听所述多个节点广播的包括自身维护的表征量的广播信息;
[0028]选择模块,用于在监听到所述多个节点中大于第一设定数目的节点广播的广播信息时,根据所述大于第一设定数目的节点广播的广播信息中包括的表征量,从所述大于第一设定数目的节点中选择出自身维护数据的新旧程度最新的第二节点,其中,所述第一设定数目大于或等于一个节点,所述大于第一设定数目的节点广播的消息中包括的表征量不完全相同;
[0029]发送及监听模块,用于向所述第二节点发送赞同其成为主节点的赞同信息,同时开始监听所述多个节点向其发送的赞同其成为主节点的赞同信息;
[0030]设置模块,用于在监听到所述多个节点中大于第二设定数目的节点向其发送的赞同信息时,将自身设置为主节点,其中,所述第二设定数目大于或等于所述多个节点的数目的二分之一的向下取整值。
[0031]优选地,还包括:
[0032]监听模块,用于向所述多个节点广播包括自身维护的表征量的广播信息之前,监听所述数据库镜像集群中主节点以设定周期、周期性地向所述多个节点广播的心跳信息;
[0033]判断模块,用于判断在监听到所述数据库镜像集群中主节点广播的第一心跳信息之后的设定时长时间内,是否监听到所述数据库镜像集群中主节点广播的下一心跳信息,获取一判断结果,其中,所述设定时长大于所述设定周期;当所述判断结果为否时,进入所述广播及监听模块
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1