公开/公告号CN112685497A
专利类型发明专利
公开/公告日2021-04-20
原文格式PDF
申请/专利权人 北京浪潮数据技术有限公司;
申请/专利号CN202011568388.7
发明设计人 何金彪;
申请日2020-12-25
分类号G06F16/27(20190101);G06F16/28(20190101);G06F11/14(20060101);
代理机构11227 北京集佳知识产权代理有限公司;
代理人张春辉
地址 100085 北京市海淀区上地信息路2号C栋5层
入库时间 2023-06-19 10:41:48
技术领域
本申请涉及计算机技术领域,特别涉及一种应用于管理节点的mysql数据库集群的数据操作执行方法及装置,一种应用于工作节点的mysql数据库集群的数据操作执行方法及装置,以及一种mysql数据库集群的数据操作执行设备。
背景技术
随着移动互联网时代的到来,智能设备越来越多(智能手机、智能手表、平板等),数据量存储越来越大,用户读写数据的频次和并发度也越来越高,传统的单机数据库已经不能满足海量数据存储和并发处理的需求。越来越多的公司选择使用分布式数据库集群,当使用mysql数据库集群的时候,有时候会误删一些数据,导致数据缺失了完整性,所以需要对数据进行备份,将误删的数据还原出来,从而保证数据的完整性。
由于数据库集群节点很多,当执行备份/恢复操作时,如果某节点由于网络问题或者宕机导致部分节点执行命令成功,部分命令执行失败,此时数据库集群个别节点数据将不再完整,各个节点的数据就会出现不一致的问题,造成用户查询数据出现数据错乱的不良体验。
发明内容
本申请的目的是提供一种应用于管理节点的mysql数据库集群的数据操作执行方法及装置,一种应用于工作节点的mysql数据库集群的数据操作执行方法及装置,以及一种mysql数据库集群的数据操作执行设备,用以解决mysql数据库集群中,在执行数据操作时容易导致各个节点的数据不一致的问题。其具体方案如下:
第一方面,本申请提供了一种mysql数据库集群的数据操作执行方法,应用于管理节点,该方法包括:
在接收到数据操作命令后,向mysql数据库集群的全部工作节点发送准备命令,询问所述工作节点是否能够正常执行目标数据操作;
接收各个所述工作节点的响应消息;
若全部所述工作节点的响应消息均为是,则向全部所述工作节点发送提交命令,以便所述工作节点执行目标数据操作;
若任意所述工作节点的响应消息为否,则向全部所述工作节点发送终止命令,以便所述工作节点执行回滚操作。
优选的,所述数据操作命令包括:备份命令和/或恢复命令。
优选的,在所述向全部所述工作节点发送提交命令,以便所述工作节点执行目标数据操作之后,还包括:
等待所述工作节点的完成响应,在接收到全部所述工作节点的完成响应时,判定所述目标数据操作执行结束。
优选的,在所述在接收到数据操作命令后,向mysql数据库集群的全部工作节点发送准备命令之后,还包括:
若超过时间阈值还未接收到任意所述工作节点的响应消息,则向全部所述工作节点发送终止命令,以便所述工作节点执行回滚操作。
第二方面,本申请提供了一种mysql数据库集群的数据操作执行装置,应用于管理节点,该装置包括:
准备命令发送模块:用于在接收到数据操作命令后,向mysql数据库集群的全部工作节点发送准备命令,询问所述工作节点是否能够正常执行目标数据操作;
响应消息接收模块:用于接收各个所述工作节点的响应消息;
提交命令发送模块:用于在全部所述工作节点的响应消息均为是时,向全部所述工作节点发送提交命令,以便所述工作节点执行目标数据操作;
终止命令发送模块:用于在任意所述工作节点的响应消息为否时,向全部所述工作节点发送终止命令,以便所述工作节点执行回滚操作。
第三方面,本申请提供了一种mysql数据库集群的数据操作执行方法,应用于工作节点,该方法包括:
在接收到管理节点发送的准备命令之后,检测自身是否能够正常执行目标数据操作,生成响应消息并发送至所述管理节点;
在接收到所述管理节点发送的提交命令时,执行目标数据操作;
在接收到所述管理节点发送的终止命令时,执行回滚操作;
其中,当且仅当mysql数据库集群中全部工作节点的所述响应消息均为是时,所述管理节点发送所述提交命令,否则所述管理节点发送所述终止命令。
优选的,所述检测自身是否能够正常执行目标数据操作,包括:
根据所述准备命令加载目标资源并执行准备操作,检测自身是否能够正常执行目标数据操作。
优选的,在所述在接收到所述管理节点发送的提交命令时,执行所述目标数据操作之后,还包括:
释放在整个事务期间内占用的资源。
第四方面,本申请提供了一种mysql数据库集群的数据操作执行装置,应用于工作节点,该装置包括:
功能检测模块:用于在接收到管理节点发送的准备命令之后,检测自身是否能够正常执行目标数据操作,生成响应消息并发送至所述管理节点;
数据操作执行模块:用于在接收到所述管理节点发送的提交命令时,执行目标数据操作;
回滚操作执行模块:用于在接收到所述管理节点发送的终止命令时,执行回滚操作;
其中,当且仅当mysql数据库集群中全部工作节点的所述响应消息均为是时,所述管理节点发送所述提交命令,否则所述管理节点发送所述终止命令。
第五方面,本申请提供了一种mysql数据库集群的数据操作执行设备,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上所述的应用于管理节点的mysql数据库集群的数据操作执行方法,或如上所述的应用于工作节点的mysql数据库集群的数据操作执行方法。
本申请所提供的一种应用于管理节点的mysql数据库集群的数据操作执行方法,包括:在接收到数据操作命令后,向mysql数据库集群的全部工作节点发送准备命令,询问工作节点是否能够正常执行目标数据操作;接收各个工作节点的响应消息;若全部工作节点的响应消息均为是,则向全部工作节点发送提交命令,以便工作节点执行目标数据操作;若任意工作节点的响应消息为否,则向全部工作节点发送终止命令,以便工作节点执行回滚操作。
可见,该方法在执行数据操作之前先对各个工作节点进行校验,当且仅当各个工作节点均能够正常执行目标数据操作时,管理节点才向工作节点发送提交命令触发真正的目标数据操作,否则发送终止命令触发回滚操作。保证了mysql数据库集群各节点之间数据的一致性,提升了用户查询数据的准确性,避免出现数据错乱问题。
此外,本申请还提供了一种应用于管理节点的mysql数据库集群的数据操作执行装置、一种应用于工作节点的mysql数据库集群的数据操作执行方法及装置、以及一种mysql数据库集群的数据操作执行设备,其技术效果与上述方法的技术效果相对应,这里不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请所提供的应用于管理节点的mysql数据库集群的数据操作执行方法实施例的流程图;
图2为本申请所提供的应用于管理节点的mysql数据库集群的数据操作执行装置实施例的功能框图;
图3为本申请所提供的应用于工作节点的mysql数据库集群的数据操作执行方法实施例的流程图;
图4为本申请所提供的应用于工作节点的mysql数据库集群的数据操作执行装置实施例的功能框图;
图5为本申请所提供的mysql数据库集群的数据操作执行过程的一致性校验原理图;
图6为本申请所提供的mysql数据库集群的数据操作执行过程的流程图。
具体实施方式
本申请的核心是提供一种应用于管理节点的mysql数据库集群的数据操作执行方法及装置、一种应用于工作节点的mysql数据库集群的数据操作执行方法及装置、以及一种mysql数据库集群的数据操作执行设备,保证了mysql数据库集群各节点之间数据的一致性,提升了用户查询数据的准确性,避免出现数据错乱问题。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面对本申请提供的应用于管理节点的mysql数据库集群的数据操作执行方法实施例进行介绍,参见图1,该实施例包括:
S101、在接收到数据操作命令后,向mysql数据库集群的全部工作节点发送准备命令,询问所述工作节点是否能够正常执行目标数据操作;
S102、接收各个所述工作节点的响应消息;
S103、若全部所述工作节点的响应消息均为是,则向全部所述工作节点发送提交命令,以便所述工作节点执行目标数据操作;
S104、若任意所述工作节点的响应消息为否,则向全部所述工作节点发送终止命令,以便所述工作节点执行回滚操作。
本实施例的目的在于,在mysql数据库集群接收到数据操作命令后,先对集群的各个工作节点进行一致性校验,当且仅当一致性校验通过时,才执行目标数据操作。以此来保证集群各个节点数据的完全统一,保证用户读取数据的准确性。
本实施例中,管理节点是指集群中的Master节点,负责将工作任务下发至各个工作节点,并保持与工作节点的通信正常。工作节点是指集群中的Worker节点,负责执行管理节点下发的具体任务,并保持与管理节点的通信正常。
在一些具体的实施例中,上述数据操作命令具体可以为备份命令或恢复命令,相应的,上述目标数据操作为备份操作或恢复操作。
在上述数据操作命令为备份/恢复命令时,具体实施过程如下:管理节点向各工作节点发送准备命令,判断各个工作节点是否能够正常执行备份/恢复操作;管理节点接收各工作节点的响应消息,根据响应消息再次向工作节点发送提交命令或终止命令,让各个工作节点执行备份/恢复操作或回滚操作。具体的,当全部工作节点的响应消息均为是时,管理节点向工作节点发送提交命令,各个工作节点执行备份/恢复操作;当任意工作节点的响应消息为否时,管理节点向工作节点发送终止命令,各个工作节点执行回滚操作。
在实际应用中,在向全部工作节点发送提交命令之后,还需要等待工作节点返回完成响应。因此,在S103之后,还包括以下过程:等待工作节点的完成响应,在接收到全部工作节点的完成响应时,判定目标数据操作执行结束。
相应的,在S104之后,还包括以下过程:等待工作节点的回滚响应,在接收到全部工作节点的回滚响应时,判定回滚操作执行结束。
值得一提的是,实际应用中,部分工作节点可能存在故障,因此即便管理节点向其发送准备命令也不会收到工作节点返回的响应消息。这种情况下,如果执行目标数据操作就会发生各个工作节点之间数据不一致的情况。因此,针对这种情况,在S101之后,还包括以下过程:若超过时间阈值还未接收到任意工作节点的响应消息,则向全部工作节点发送终止命令,以便工作节点执行回滚操作。
本实施例所提供一种应用于管理节点的mysql数据库集群的数据操作执行方法,在执行数据操作之前先对各个工作节点进行校验,当且仅当各个工作节点均能够正常执行目标数据操作时,管理节点才向工作节点发送提交命令触发真正的目标数据操作,否则发送终止命令触发回滚操作。保证了mysql数据库集群各节点之间数据的一致性,提升了用户查询数据的准确性,避免出现数据错乱问题。
下面对本申请实施例提供的应用于管理节点的mysql数据库集群的数据操作执行装置进行介绍,下文描述的应用于管理节点的mysql数据库集群的数据操作执行装置与上文描述的应用于管理节点的mysql数据库集群的数据操作执行方法可相互对应参照。
如图2所示,本实施例中,应用于管理节点的mysql数据库集群的数据操作执行装置包括:
准备命令发送模块201:用于在接收到数据操作命令后,向mysql数据库集群的全部工作节点发送准备命令,询问所述工作节点是否能够正常执行目标数据操作;
响应消息接收模块202:用于接收各个所述工作节点的响应消息;
提交命令发送模块203:用于在全部所述工作节点的响应消息均为是时,向全部所述工作节点发送提交命令,以便所述工作节点执行目标数据操作;
终止命令发送模块204:用于在任意所述工作节点的响应消息为否时,向全部所述工作节点发送终止命令,以便所述工作节点执行回滚操作。
在一些具体的实施例中,所述数据操作命令包括:备份命令和/或恢复命令。
在一些具体的实施例中,还包括:
完成响应等待模块:用于等待所述工作节点的完成响应,在接收到全部所述工作节点的完成响应时,判定所述目标数据操作执行结束。
在一些具体的实施例中,还包括:
响应超时模块:用于若超过时间阈值还未接收到任意所述工作节点的响应消息,则向全部所述工作节点发送终止命令,以便所述工作节点执行回滚操作。
本实施例的应用于管理节点的mysql数据库集群的数据操作执行装置用于实现前述的应用于管理节点的mysql数据库集群的数据操作执行方法,因此该装置的具体实施方式可见前文中的应用于管理节点的mysql数据库集群的数据操作执行方法的实施例部分,在此不再展开介绍。
下面开始详细介绍本申请提供的应用于工作节点的mysql数据库集群的数据操作执行方法实施例,参见图3,该实施例具体包括:
S301、在接收到管理节点发送的准备命令之后,检测自身是否能够正常执行目标数据操作,生成响应消息并发送至所述管理节点;
S302、在接收到所述管理节点发送的提交命令时,执行目标数据操作;
S303、在接收到所述管理节点发送的终止命令时,执行回滚操作。
本实施例的目的在于,在mysql数据库集群接收到数据操作命令后,先对集群的各个工作节点进行一致性校验,当且仅当一致性校验通过时,才执行目标数据操作。以此来保证集群各个节点数据的完全统一,保证用户读取数据的准确性。因此,本实施例中,当且仅当mysql数据库集群中全部工作节点的所述响应消息均为是时,所述管理节点发送所述提交命令,否则所述管理节点发送所述终止命令。
在一些具体的实施例中,上述目标数据操作为备份操作或恢复操作。
在上述数据操作命令为备份/恢复命令时,具体实施过程如下:工作节点接收管理节点发送的准备命令,之后工作节点检测自身是否能够正常执行备份/恢复操作,根据检测结果生成响应消息并发送至管理节点。之后根据管理节点再次发送来的命令,执行备份/恢复操作或回滚操作。具体的,管理节点发送的命令是提交命令时,工作节点执行备份/恢复操作;管理节点发送的命令是终止命令时,工作节点执行回滚操作。
实际应用中,上述S301的过程具体为:根据所述准备命令加载目标资源并执行准备操作,检测自身是否能够正常执行目标数据操作。需要说明的是,此时工作节点并没有执行真正的目标数据操作。
作为一种具体的实施方式,在S302或S303之后,还包括以下过程:释放在整个事务期间内占用的资源。
此外,实际应用中,工作节点在执行目标数据操作或回滚操作之后,还需要向管理节点发送相应的响应,从而告知管理节点操作已完成。因此,在S302之后,还包括以下过程:向管理节点发送完成响应。在S303之后,还包括以下过程:向管理节点发送回滚响应。
可见,本实施例提供的一种应用于工作节点的mysql数据库集群的数据操作执行方法,在执行数据操作之前,先根据管理节点发送的准备命令对自身进行检测,判断自身是否能够正常执行目标数据操作,并向管理节点发送响应消息。之后,如果接收到管理节点发送的提交命令,则执行目标数据操作,如果接收到管理节点发送的终止命令,则执行数据回滚操作。需要说明的是,当且仅当全部工作节点的响应消息均为是时,管理节点才会发送提交命令,因此该方法保证了mysql数据库集群各节点之间数据的一致性,提升了用户查询数据的准确性,避免出现数据错乱问题。
下面对本申请实施例提供的应用于工作节点的mysql数据库集群的数据操作执行装置进行介绍,下文描述的应用于工作节点的mysql数据库集群的数据操作执行装置与上文描述的应用于工作节点的mysql数据库集群的数据操作执行方法可相互对应参照。
如图4所示,本实施例中,应用于工作节点的mysql数据库集群的数据操作执行装置包括:
功能检测模块401:用于在接收到管理节点发送的准备命令之后,检测自身是否能够正常执行目标数据操作,生成响应消息并发送至所述管理节点;
数据操作执行模块402:用于在接收到所述管理节点发送的提交命令时,执行目标数据操作;
回滚操作执行模块403:用于在接收到所述管理节点发送的终止命令时,执行回滚操作;
其中,当且仅当mysql数据库集群中全部工作节点的所述响应消息均为是时,所述管理节点发送所述提交命令,否则所述管理节点发送所述终止命令。
在一些具体的实施例中,功能检测模块具体用于:
根据所述准备命令加载目标资源并执行准备操作,检测自身是否能够正常执行目标数据操作。
在一些具体的实施例中,还包括:
资源释放模块:用于释放在整个事务期间内占用的资源。
本实施例的应用于工作节点的mysql数据库集群的数据操作执行装置用于实现前述的应用于工作节点的mysql数据库集群的数据操作执行方法,因此该装置的具体实施方式可见前文中的应用于工作节点的mysql数据库集群的数据操作执行方法的实施例部分,在此不再展开介绍。
上文分别以管理节点和工作节点为执行主体,对mysql数据库集群的数据操作执行过程进行了介绍。下面以整个集群为执行主体,对mysql数据库集群的数据操作执行过程进行综合描述。
本实施例在mysql数据库集群引入了一致性校验装置,如图5所示,将备份/恢复过程分为两个阶段:准备阶段和提交阶段,包含两种角色:协调者和参与者,其中管理节点对应一致性校验装置中的“协调者”,工作节点对应一致性校验装置中的“参与者”。
整体实施流程如图6所示,下面对实施过程作详细介绍:
准备阶段的实施过程如下:
1、协调者向所有参与者发送准备命令(prepare命令),询问参与者是否能够正常执行备份/恢复操作,等待个参与者的响应;
2、所有参与者收到准备命令,获取相应资源,比如锁资源,执行准备操作,判断是否可以正常执行备份/恢复操作,需要说明的是,此时并没有真正执行备份/恢复操作;
3、各参与者向协调者发送响应消息。如果参与者能够正常执行备份/恢复操作,则返回“yes”否则返回“no”。
提交阶段根据一致性校验是否通过,分以下两部分:
第一部分,当协调者从所有参与者获得的响应消息都为“yes”时,实施过程如下:
1、协调者向所有参与接发出提交命令(commit命令);
2、参与者正式完成备份/恢复操作,并释放在整个事务期间内占用的资源;
3、参与者向协调者发送“完成”消息;
4、协调者收到所有参与者反馈的“完成”消息后,备份/恢复过程结束。
第二部分,当任意参与者在准备阶段返回的响应消息为“no”,或者协调者在准备阶段的询问超时之前无法获取所有参与者的响应消息时,实施过程如下:
1、协调者向所有参与者发出终止命令;
2、参与者将之前执行的本地操作进行回滚,并释放在整个事务期间内占用的资源;
3、参与者向协调者发送“回滚完成”消息;
4、协调者收到所有参与者反馈的“回滚完成”消息后,取消事务。
综上,通过引入一致性校验装置,在mysql集群数据库执行备份/还原操作时,预先判断集群中各个工作节点是否具备正常执行备份/恢复操作的条件,如果集群中所有工作节点都具备该条件,管理节点发送提交命令让各工作节点执行备份/恢复操作,否则发送终止命令让各工作节点执行回滚操作。保证集群中各个节点的操作保持一致,要么全部执行,要么都不执行,保证了mysql集群数据库数据的准确性、完整性和一致性。
最后,本申请提供了一种mysql数据库集群的数据操作执行设备,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上文所述的应用于管理节点的mysql数据库集群的数据操作执行方法,或如上文所述的应用于工作节点的mysql数据库集群的数据操作执行方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
机译: 一种用于提供虚拟空间的方法,一种用于使计算机执行方法的程序,以及用于执行程序的信息处理设备。
机译: 一种用于在移动无线电网络中执行用于移动无线电网络终端的切换过程的方法,用于执行方法,车辆和核心网络管理设备和相应的计算机程序中执行步骤的对应装置
机译: 由多个显示设备构成的显示设备,一种显示设备,其内容显示方法,用于执行方法的存储介质记录程序以及由多个显示设备构成的显示系统