集群脑裂的处理方法、装置、设备及可读存储介质与流程

    专利查询2022-08-16  96



    1.本发明涉及数据处理技术领域,具体涉及一种集群脑裂的处理方法、装置、设备及可读存储介质。


    背景技术:

    2.mariadb作为mysql的分支,其作为一种开源的数据库产品,因其实用的数据库特性在云平台环境中得到了广泛应用,mariadb galera cluster提供了一套高可用multi-master集群解决方案,但是若由于网络波动等原因发生数据库脑裂时,其将会存在数据丢失的可能性,而数据库脑裂的发生通常不易被发现,因而难以及时处理数据库脑裂故障,这就导致云平台环境存在一定的数据安全隐患,影响了云平台的安全性。


    技术实现要素:

    3.有鉴于此,本发明实施例提供了一种集群脑裂的处理方法、装置、设备及可读存储介质,以解决数据库脑裂不易被检测和处理的问题。
    4.根据第一方面,本发明实施例提供了一种集群脑裂的处理方法,包括:检测数据库集群的运行状态;基于所述数据库集群的运行状态,确定所述数据库集群是否发生脑裂;当所述数据库集群发生脑裂时,获取所述数据库集群中各个数据库节点对应的不同状态参数值;检测所述不同状态参数值对应的序列值;基于所述序列值的对比结果,确定待同步的目标数据库节点,对所述目标数据库节点进行数据同步。
    5.本发明实施例提供的集群脑裂的处理方法,通过检测数据库集群的运行状态,确定其是否发生脑裂,在其发生脑裂时,对比数据库节点所对应不同状态参数值的序列值以确定出最新的数据,并根据该序列值的对比结果对目标数据库节点进行数据同步,从而实现脑裂情况的实时自动检测和处理,最大程度上降低了数据丢失的可能性,提高了数据安全性。
    6.结合第一方面,在第一方面的第一实施方式中,所述基于所述序列值的对比结果,确定待同步的目标数据库节点,对所述目标数据库节点进行数据同步,包括:对比所述序列值,确定最大序列值以及非最大序列值;关闭所述非最大序列值对应的数据库节点,得到所述目标数据库节点;重启所述目标数据库节点,对所述目标数据库节点进行数据同步。
    7.本发明实施例提供的集群脑裂的处理方法,通过对比序列值从中确定出的最大序列值以及非最大序列值,继而关闭非最大序列值对应的数据库节点,即将最大序列值对应的数据库节点作为目标数据库节点,重启该目标数据库节点实现数据同步。由此通过对发生脑裂的数据库集群的序列值进行对比,确定出具有较新数据的数据库节点,并自动重启以进行重新同步,由此实现了数据库脑裂的自动处理。
    8.结合第一方面第一实施方式,在第一方面的第二实施方式中,所述方法还包括:获取所述非最大序列值对应的系统文件;在关闭所述非最大序列值对应的数据库节点时,删除所述系统文件。
    9.本发明实施例提供的集群脑裂的处理方法,通过在关闭非最大序列值对应的数据库节点时,删除其对应的系统文件。由此能够保证非最大序列值对应的数据库节点能够被彻底关闭,提高了脑裂处理的有效性。
    10.结合第一方面第一实施方式,在第一方面的第三实施方式中,在重启所述目标数据库节点之后,还包括:检测重启后的所述目标数据库节点是否存在唯一的状态参数值;当重启后的所述目标数据库节点存在唯一的状态参数值时,判定所述数据库集群完成脑裂处理。
    11.本发明实施例提供的集群脑裂的处理方法,通过检测重启后的目标数据库节点是否存在唯一的状态参数值,以确定数据库集群是否完成脑裂处理,便于在脑裂情况仍未处理时及时报警,最大程度上避免数据丢失。
    12.结合第一方面,在第一方面的第四实施方式中,所述基于所述数据库集群的运行状态,确定所述数据库集群是否发生脑裂,包括:获取所述数据库集群中各个数据库节点对应的状态参数值;检测所述各个数据库节点对应的状态参数值是否相同;当所述各个数据库节点对应的状态参数值存在不相同时,判定所述数据库集群发生脑裂。
    13.本发明实施例提供的集群脑裂的处理方法,在检测到数据库集群中各个数据库节点对应的状态参数值存在不同时,确定数据库集群已经发生脑裂。该方法通过对数据库集群的相关数据库状态进行比较,实现了对数据库脑裂发生的自动检测。
    14.结合第一方面第四实施方式,在第一方面的第五实施方式中,在所述获取数据库集群中各个数据库节点对应的状态参数值之前,还包括:获取数据库集群中数据库节点的总数量以及各个数据库节点的可用状态和同步状态;检测所述可用状态和所述同步状态均正常的数据库节点数量;当所述数据库节点数量与所述数据库节点的总数量相等时,获取所述数据库集群中各个数据库节点对应的状态参数值。
    15.本发明实施例提供的集群脑裂的处理方法,在获取数据库集群中各个数据库节点对应的状态参数值之前,通过检测可用状态和同步状态均正常的数据库节点数量以及数据库节点的总数量是否相等,以确定数据库集群是否存在其他异常,便于同时兼顾数据库集群的其他异常检测以及脑裂检测。
    16.结合第一方面或第一方面第一实施方式至第五实施方式中的任一实施方式,在第一方面的第六实施方式中,所述方法还包括:响应于镜像文件的创建操作,基于所述创建操作生成处理所述集群脑裂的镜像文件,所述镜像文件伴随所述数据库集群的启动而启动。
    17.本发明实施例提供的集群脑裂的处理方法,通过创建用于处理集群脑裂的镜像文件,实现了脑裂恢复工具的一键部署,并设置该镜像文件伴随数据库集群的启动而启动,由此能够在数据库集群启动时,自动执行脑裂的实时自动检测,以便在发生脑裂时及时处理。
    18.根据第二方面,本发明实施例提供了一种集群脑裂的处理装置,包括:第一检测模块,用于检测数据库集群的运行状态;判断模块,用于基于所述数据库集群的运行状态,确定所述数据库集群是否发生脑裂;获取模块,用于当所述数据库集群发生脑裂时,获取所述数据库集群中各个数据库节点对应的不同状态参数值;第二检测模块,用于检测所述不同状态参数值对应的序列值;同步模块,用于基于所述序列值的对比结果,确定待同步的目标数据库节点,对所述目标数据库节点进行数据同步。
    19.本发明实施例提供的集群脑裂的处理装置,通过检测数据库集群的运行状态,确
    定其是否发生脑裂,在其发生脑裂时,对比数据库节点所对应不同状态参数值的序列值以确定出最新的数据,并根据该序列值的对比结果对目标数据库节点进行数据同步,从而实现脑裂情况的实时自动检测和处理,最大程度上降低了数据丢失的可能性,提高了数据安全性。
    20.根据第三方面,本发明实施例提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面或第一方面任一实施方式所述的集群脑裂的处理方法。
    21.根据第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行第一方面或第一方面任一实施方式所述的集群脑裂的处理方法。
    22.需要说明的是,本发明实施例提供的电子设备以及计算机可读存储介质的相应有益效果,请参见集群脑裂的处理方法中相应内容的描述,在此不再赘述。
    附图说明
    23.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    24.图1是根据本发明实施例的集群脑裂的处理方法的流程图;
    25.图2是根据本发明实施例的集群脑裂的处理方法的另一流程图;
    26.图3是根据本发明实施例的集群脑裂的处理方法的另一流程图;
    27.图4是根据本发明实施例的集群脑裂的处理方法的另一流程图;
    28.图5是根据本发明实施例的集群脑裂的处理方法的另一流程图;
    29.图6是根据本发明实施例的集群脑裂的处理装置的结构框图;
    30.图7是本发明实施例提供的电子设备的硬件结构示意图。
    具体实施方式
    31.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
    32.根据本发明实施例,提供了一种集群脑裂的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
    33.在本实施例中提供了一种集群脑裂的处理方法,可用于电子设备,如服务器、电脑等构成的云平台,图1是根据本发明实施例的集群脑裂的处理方法的流程图,如图1所示,该流程包括如下步骤:
    34.s11,检测数据库集群的运行状态。
    35.数据库集群为mariadb galera cluster集群,运行状态用于表征数据库集群中各个数据库节点的服务状态,即各个数据库节点是否能够正常提供服务。运行状态可以包括数据库节点的可用状态以及同步状态,云平台可以对数据库集群中各个数据库节点对应的系统文件进行查询,通过解析系统文件确定数据库节点当前的可用状态以及同步状态。
    36.s12,基于数据库集群的运行状态,确定数据库集群是否发生脑裂。
    37.云平台可以根据数据库集群的运行状态,确定数据库集群中各个数据库节点对应的状态参数值wsrep_cluster_state_uuid,数据库部署在不同的服务器上以向外提供数据库服务,该向外提供数据库服务的服务器即为数据库节点。对于不同的数据库节点而言,其状态参数值wsrep_cluster_state_uuid不同,即各个数据库节点具有与其对应的唯一的状态参数值。云平台通过分析数据库集群中各个数据库节点的状态参数值,即可确定出数据库集群是否发生脑裂。当数据库集群发生脑裂时,执行步骤s13,否则继续检测数据库集群的运行状态。
    38.s13,获取数据库集群中各个数据库节点对应的不同状态参数值。
    39.当数据库集群发生脑裂时,数据库集群中的数据库节点分裂为2个或2个以上独立的提供服务的子节点,此时对于同一个数据库节点而言,其必然具有2个或2个以上的不同的状态参数值。云平台可以通过查询是数据库节点,分别获取各个数据库节点所对应的不同状态参数值wsrep_cluster_state_uuid。
    40.s14,检测不同状态参数值对应的序列值。
    41.序列值为对应于各个状态参数值的标识信息,该序列值用于表示数据库节点的更新状态,即数据是否为最新数据。在检测到各个数据库节点对应的不同状态参数值时,云平台可以分别获取不同状态参数值的序列值seqno(即向外提供数据库服务的各个节点或子节点的序列值seqno)。
    42.s15,基于序列值的对比结果,确定待同步的目标数据库节点,对目标数据库节点进行数据同步。
    43.云平台对其检测到的序列值进行对比,从中确定出最新数据所对应的节点,将该节点确定为目标数据库节点,并将对应于该节点的其他数据库子节点进行删除,则目标数据库节点将具有唯一的状态参数值,继而重启该目标数据库节点完成数据同步。
    44.本实施例提供的集群脑裂的处理方法,通过检测数据库集群的运行状态,确定其是否发生脑裂,在其发生脑裂时,对比数据库节点所对应不同状态参数值的序列值以确定出最新的数据,并根据该序列值的对比结果对目标数据库节点进行数据同步,从而实现脑裂情况的实时自动检测和处理,最大程度上降低了数据丢失的可能性,提高了数据安全性。
    45.在本实施例中提供了一种集群脑裂的处理方法,可用于电子设备,如手机、平板电脑、电脑等,图2是根据本发明实施例的集群脑裂的处理方法的流程图,如图2所示,该流程包括如下步骤:
    46.s21,检测数据库集群的运行状态。详细说明参见上述实施例对应的相关描述,此处不再赘述。
    47.s22,基于数据库集群的运行状态,确定数据库集群是否发生脑裂。详细说明参见上述实施例对应的相关描述,此处不再赘述。
    48.s23,当数据库集群发生脑裂时,获取数据库集群中各个数据库节点对应的不同状态参数值。详细说明参见上述实施例对应的相关描述,此处不再赘述。
    49.s24,检测不同状态参数值对应的序列值。详细说明参见上述实施例对应的相关描述,此处不再赘述。
    50.s25,基于序列值的对比结果,确定待同步的目标数据库节点,对目标数据库节点进行数据同步。
    51.具体地,上述步骤s25可以包括:
    52.s251,对比序列值,确定最大序列值以及非最大序列值。
    53.云平台可以对数据库集群中的各个数据库节点进行遍历,对同一数据库节点形成的不同状态参数值所对应的序列值进行比较,从中确定出最大序列值以及非最大序列值。
    54.s252,关闭非最大序列值对应的数据库节点,得到目标数据库节点。
    55.由于最大序列值表示该节点的数据为最新数据,云平台在确定出最大序列值之后,即可将脑裂产生的非最大序列值对应的数据库节点予以关闭,由此即可只包括最大序列值对应的数据库节点,并将该最大序列值对应的数据库节点确定为目标数据库节点。
    56.s253,重启目标数据库节点,对目标数据库节点进行数据同步。
    57.云平台重新启动该目标数据库节点,以对该目标数据库节点进行数据的自动同步,保证目标数据库节点的数据完整性,避免脑裂导致的数据丢失。
    58.可选地,为了保证非最大序列值对应的数据库节点能够被彻底关闭,提高了脑裂处理的有效性,在执行上述步骤s252的同时,还可以:获取非最大序列值对应的系统文件,对非最大序列值对应的系统文件予以删除。
    59.系统文件用于表征数据库节点的运行状态,在确定出非最大序列值对应的数据库节点时,云平台还可以获取对应于该数据库节点的相关系统文件,例如grastate.dat、galera.cache等系统文件,不仅能够保证数据库节点能够被彻底关闭,还能够释放系统文件所占用空间。
    60.可选地,如图3所示,上述步骤s25还可以包括:
    61.s254,检测重启后的目标数据库节点是否存在唯一的状态参数值。
    62.在目标数据库节点重新启动后,云平台可以对该目标数据库节点对应的状态参数值进行检测,以确定该目标数据库节点当前所对应的状态参数值是否唯一。当重启后的目标数据库节点存在唯一的状态参数值时,执行步骤s255,否则进行异常告警,便于技术人员及时进行干预处理。
    63.s255,判定数据库集群完成脑裂处理。
    64.当重启后的目标数据库节点存在唯一的状态参数值时,表示该目标数据库节点不存在脑裂,此时可以判定该目标数据节点已经自动完成脑裂处理。
    65.通过检测重启后的目标数据库节点是否存在唯一的状态参数值,以确定数据库集群是否完成脑裂处理,便于在脑裂情况仍未处理时及时报警,最大程度上避免数据丢失。
    66.本实施例提供的集群脑裂的处理方法,通过对比序列值从中确定出的最大序列值以及非最大序列值,继而关闭非最大序列值对应的数据库节点,即将最大序列值对应的数据库节点作为目标数据库节点,重启该目标数据库节点实现数据同步。由此通过对发生脑裂的数据库集群的序列值进行对比,确定出具有较新数据的数据库节点,并自动重启以进
    行重新同步,由此实现了数据库脑裂的自动处理。
    67.在本实施例中提供了一种集群脑裂的处理方法,可用于电子设备,如手机、平板电脑、电脑等,图4是根据本发明实施例的集群脑裂的处理方法的流程图,如图4所示,该流程包括如下步骤:
    68.s31,检测数据库集群的运行状态。详细说明参见上述实施例对应的相关描述,此处不再赘述。
    69.s32,基于数据库集群的运行状态,确定数据库集群是否发生脑裂。
    70.具体地,上述步骤s32可以包括:
    71.s321,获取数据库集群中各个数据库节点对应的状态参数值。
    72.云平台可以登录数据库,查询数据库集群中各个数据库节点对应的状态参数值wsrep_cluster_state_uuid,每个数据库节点对应唯一的状态参数值,通过检测当前数据库节点对应的状态参数值,可以确定数据库节点是否产生脑裂。
    73.具体地,如图5所示,在执行步骤s321之前,上述步骤s32还可以包括:
    74.s32a,获取数据库集群中数据库节点的总数量以及各个数据库节点的可用状态和同步状态。
    75.可用状态为数据库节点当前是否处于可用状态,同步状态为数据库节点当前是否完成同步。云平台可以获取数据库集群所包含的数据库节点的总数量,并通过wsrep_local_state_comment查询数据库节点的同步状态,通过wsrep_cluster_status查询数据库节点的可用状态。
    76.s32b,检测可用状态和同步状态均正常的数据库节点数量。
    77.云平台可以查询数据库集群中各个数据节点的可用状态是否为primary,同步状态是否为synced,从数据库节点中确定出可用状态为primary且同步状态为synced的节点,并统计可用状态为primary且同步状态为synced的节点数量。
    78.s32c,当数据库节点数量与数据库节点的总数量相等时,获取数据库集群中各个数据库节点对应的状态参数值。
    79.云平台对数据库节点数量与数据库节点的总数量进行比较,判断数据库节点数量与数据库节点的总数量是否相等。当数据库节点数量与数据库节点的总数量相等时,表示数据库集群中不存在损坏无法提供服务的数据库节点,继而继续获取数据库集群中各个数据库节点对应的状态参数值;否则表示数据库集群中存在损坏无法提供服务的数据库节点,此时云平台可以直接抛出异常告警,便于技术人员及时根据该异常告警采取相应的调整措施。
    80.在获取数据库集群中各个数据库节点对应的状态参数值之前,通过检测可用状态和同步状态均正常的数据库节点数量以及数据库节点的总数量是否相等,以确定数据库集群是否存在其他异常,便于同时兼顾数据库集群的其他异常检测以及脑裂检测。
    81.s322,检测各个数据库节点对应的状态参数值是否相同。
    82.数据库集群在其正常运行状态下,各个数据库节点对应的状态参数值是相同的,云平台可以查询所有数据库节点的状态参数值wsrep_cluster_state_uuid是否相同,若该值全部相同,则继续循环检测;若该值出现不相同的情况,执行步骤s323。
    83.s323,判定数据库集群发生脑裂。
    84.当各个数据库节点对应的状态参数值存在不相同时,表示数据库集群中存在分裂的数据库节点,此时云平台可以判定数据库集群发生脑裂。
    85.s33,当数据库集群发生脑裂时,获取数据库集群中各个数据库节点对应的不同状态参数值。详细说明参见上述实施例对应的相关描述,此处不再赘述。
    86.s34,检测不同状态参数值对应的序列值。详细说明参见上述实施例对应的相关描述,此处不再赘述。
    87.s35,基于序列值的对比结果,确定待同步的目标数据库节点,对目标数据库节点进行数据同步。详细说明参见上述实施例对应的相关描述,此处不再赘述。
    88.s36,响应于镜像文件的创建操作,基于创建操作生成处理集群脑裂的镜像文件,该镜像文件伴随数据库集群的启动而启动。
    89.技术人员可以创建镜像文件,例如docker镜像,将上述处理集群脑裂的方法以脚本的形式内置于该镜像文件中,并设置该镜像文件伴随数据库集群的启动而启动。相应地,云平台可以增加galera脑裂处理角色,通过kolla-ansible对用于处理集群脑裂的镜像文件进行一键部署,即云平台可以响应于技术人员对镜像文件的创建操作,生成用于处理集群脑裂的镜像文件,并对该镜像文件进行部署,以在数据库集群启动时,能够启动该镜像文件进行数据库集群脑裂的自动检测及处理。
    90.通过创建用于处理集群脑裂的镜像文件,实现了脑裂恢复工具的一键部署,并设置该镜像文件伴随数据库集群的启动而启动,由此能够在数据库集群启动时,自动执行脑裂的实时自动检测,以便在发生脑裂时及时处理。
    91.本实施例提供的集群脑裂的处理方法,在检测到数据库集群中各个数据库节点对应的状态参数值存在不同时,确定数据库集群已经发生脑裂。该方法通过对数据库集群的相关数据库状态进行比较,实现了对数据库脑裂发生的自动检测。
    92.在本实施例中还提供了一种集群脑裂的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
    93.本实施例提供一种集群脑裂的处理装置,如图6所示,包括:
    94.第一检测模块41,用于检测数据库集群的运行状态。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
    95.判断模块42,用于基于数据库集群的运行状态,确定数据库集群是否发生脑裂。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
    96.获取模块43,用于当数据库集群发生脑裂时,获取数据库集群中各个数据库节点对应的不同状态参数值。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
    97.第二检测模块44,用于检测不同状态参数值对应的序列值。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
    98.同步模块45,用于基于序列值的对比结果,确定待同步的目标数据库节点,对目标数据库节点进行数据同步。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
    99.本实施例提供的集群脑裂的处理装置,通过检测数据库集群的运行状态,确定其是否发生脑裂,在其发生脑裂时,对比数据库节点所对应不同状态参数值的序列值以确定
    出最新的数据,并根据该序列值的对比结果对目标数据库节点进行数据同步,从而实现脑裂情况的实时自动检测和处理,最大程度上降低了数据丢失的可能性,提高了数据安全性。
    100.本实施例中的集群脑裂的处理装置是以功能单元的形式来呈现,这里的单元是指asic电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
    101.上述各模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
    102.本发明实施例还提供一种电子设备,具有上述图6所示的集群脑裂的处理装置。
    103.请参阅图7,图7是本发明可选实施例提供的一种终端的结构示意图,如图7所示,该终端可以包括:至少一个处理器501,例如cpu(central processing unit,中央处理器),至少一个通信接口503,存储器504,至少一个通信总线502。其中,通信总线502用于实现这些组件之间的连接通信。其中,通信接口503可以包括显示屏(display)、键盘(keyboard),可选通信接口503还可以包括标准的有线接口、无线接口。存储器504可以是高速ram存储器(random access memory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器504可选的还可以是至少一个位于远离前述处理器501的存储装置。其中处理器501可以结合图6所描述的装置,存储器504中存储应用程序,且处理器501调用存储器504中存储的程序代码,以用于执行上述任一方法步骤。
    104.其中,通信总线502可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。通信总线502可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
    105.其中,存储器504可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:ram);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:hdd)或固态硬盘(英文:solid-state drive,缩写:ssd);存储器504还可以包括上述种类存储器的组合。
    106.其中,处理器501可以是中央处理器(英文:central processing unit,缩写:cpu),网络处理器(英文:network processor,缩写:np)或者cpu和np的组合。
    107.其中,处理器501还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:asic),可编程逻辑器件(英文:programmable logic device,缩写:pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:cpld),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:fpga),通用阵列逻辑(英文:generic array logic,缩写:gal)或其任意组合。
    108.可选地,存储器504还用于存储程序指令。处理器501可以调用程序指令,实现如本技术图1至图5实施例中所示的集群脑裂的处理方法。
    109.本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的集群脑裂的处理方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机
    存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
    110.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

    技术特征:
    1.一种集群脑裂的处理方法,其特征在于,包括:检测数据库集群的运行状态;基于所述数据库集群的运行状态,确定所述数据库集群是否发生脑裂;当所述数据库集群发生脑裂时,获取所述数据库集群中各个数据库节点对应的不同状态参数值;检测所述不同状态参数值对应的序列值;基于所述序列值的对比结果,确定待同步的目标数据库节点,对所述目标数据库节点进行数据同步。2.根据权利要求1所述的方法,其特征在于,所述基于所述序列值的对比结果,确定待同步的目标数据库节点,对所述目标数据库节点进行数据同步,包括:对比所述序列值,确定最大序列值以及非最大序列值;关闭所述非最大序列值对应的数据库节点,得到所述目标数据库节点;重启所述目标数据库节点,对所述目标数据库节点进行数据同步。3.根据权利要求2所述的方法,其特征在于,还包括:获取所述非最大序列值对应的系统文件;在关闭所述非最大序列值对应的数据库节点时,删除所述系统文件。4.根据权利要求2所述的方法,其特征在于,在重启所述目标数据库节点之后,还包括:检测重启后的所述目标数据库节点是否存在唯一的状态参数值;当重启后的所述目标数据库节点存在唯一的状态参数值时,判定所述数据库集群完成脑裂处理。5.根据权利要求1所述的方法,其特征在于,所述基于所述数据库集群的运行状态,确定所述数据库集群是否发生脑裂,包括:获取所述数据库集群中各个数据库节点对应的状态参数值;检测所述各个数据库节点对应的状态参数值是否相同;当所述各个数据库节点对应的状态参数值存在不相同时,判定所述数据库集群发生脑裂。6.根据权利要求5所述的方法,其特征在于,在所述获取数据库集群中各个数据库节点对应的状态参数值之前,还包括:获取数据库集群中数据库节点的总数量以及各个数据库节点的可用状态和同步状态;检测所述可用状态和所述同步状态均正常的数据库节点数量;当所述数据库节点数量与所述数据库节点的总数量相等时,获取所述数据库集群中各个数据库节点对应的状态参数值。7.根据权利要求1-6任一项所述的方法,其特征在于,还包括:响应于镜像文件的创建操作,基于所述创建操作生成处理所述集群脑裂的镜像文件,所述镜像文件伴随所述数据库集群的启动而启动。8.一种集群脑裂的处理装置,其特征在于,包括:第一检测模块,用于检测数据库集群的运行状态;判断模块,用于基于所述数据库集群的运行状态,确定所述数据库集群是否发生脑裂;获取模块,用于当所述数据库集群发生脑裂时,获取所述数据库集群中各个数据库节
    点对应的不同状态参数值;第二检测模块,用于检测所述不同状态参数值对应的序列值;同步模块,用于基于所述序列值的对比结果,确定待同步的目标数据库节点,对所述目标数据库节点进行数据同步。9.一种电子设备,其特征在于,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1-7任一项所述的集群脑裂的处理方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行权利要求1-7任一项所述的集群脑裂的处理方法。

    技术总结
    本发明涉及数据处理技术领域,公开了一种集群脑裂的处理方法、装置、设备及可读存储介质。其中,该方法包括:检测数据库集群的运行状态;基于数据库集群的运行状态,确定数据库集群是否发生脑裂;当数据库集群发生脑裂时,获取数据库集群中各个数据库节点对应的不同状态参数值;检测不同状态参数值对应的序列值;基于序列值的对比结果,确定待同步的目标数据库节点,对目标数据库节点进行数据同步。通过实施本发明,实现脑裂情况的实时自动检测和处理,最大程度上降低了数据丢失的可能性,提高了数据安全性。了数据安全性。了数据安全性。


    技术研发人员:刘进源
    受保护的技术使用者:苏州浪潮智能科技有限公司
    技术研发日:2022.02.18
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-8490.html

    最新回复(0)