掌桥专利:专业的专利平台
掌桥专利
首页

分布式数据库表结构灰度升级方法、装置及系统

文献发布时间:2023-06-19 10:57:17


分布式数据库表结构灰度升级方法、装置及系统

技术领域

本发明涉及数据库升级技术领域,尤其涉及一种分布式数据库表结构灰度升级方法、装置及系统。

背景技术

随着分布式数据库的大规模推广使用,在对数据库的表结构进行变更升级时,需要保障业务运行的连续性、降低数据库的停机变更时间以减少业务影响。现有的数据库表结构变更升级时,不同的应用需要结合自身的实际业务场景,由应用研发人员制定仅适用于本应用的表结构变更方案。例如,传统的MySQL数据库表结构升级方法是把同步的MySQL主库和备库的一个备库分离出来,对该备库进行表结构升级、重新搭建主从同步的高可用架构,然后停止主库的业务,通过移行程序从主库迁移增量数据到备库中,最后把业务切换到备库,由该备库作为新的主库对外提供数据库服务。这种数据库表结构升级存在以下几个问题:一是分布式数据库节点太多,业务停机时间过长,需要分钟级甚至小时级的停机时间;二是需要开发人员编写增量的数据移行程序;三是备库要重新搭建高可用架构;四是操作步骤多而复杂,中途出现问题会增加停机时间,停机时长不可控;五是升级方案只适用于本应用的本次升级,不具备通用性。

发明内容

为了解决以上问题的至少之一,本发明的一个目的在于提供一种分布式数据库表结构灰度升级方法,实现数据库表结构的快速升级,减少数据库表结构升级的停机时间。本发明的另一个目的在于提供一种分布式数据库表结构灰度升级装置。本发明的再一个目的在于提供一种分布式数据库表结构灰度升级系统。本发明的还一个目的在于提供一种计算机设备。本发明的还一个目的在于提供一种可读介质。

为了达到以上目的,本发明一方面公开了一种分布式数据库表结构灰度升级方法,包括:

根据表结构变更指令确定待升级的所有目标数据库、源表以及灰度升级优先级;

在灰度升级优先级最高的所述目标数据库中建立表结构变更后的临时表,通过数据迁移方式将待升级源表的表数据迁移至所述临时表并将所述临时表替换为所述源表,目标数据库表结构变更完成;

当灰度升级优先级最高的目标数据库表结构变更完成后,向应用服务器反馈升级成功信息。

优选的,进一步包括:

基于预设条件在未进行表结构变更的目标数据库中建立表结构升级后的临时表,通过数据迁移方式将待升级源表的表数据迁移至所述临时表并将所述临时表替换为所述源表,未进行表结构变更的目标数据库表结构升级完成。

优选的,所述根据所述表结构变更指令确定待升级的所有目标数据库及源表具体包括:

根据表结构变更指令确定所述目标数据库的数据库信息和源表信息;

根据所述数据库信息确定所述数据库的IP地址,并根据所述源表信息获取所述数据库中源表的表数据。

优选的,所述在灰度升级优先级最高的所述目标数据库中建立表结构变更后的临时表具体包括:

根据所述表结构变更指令确定表结构变更后的目标表结构;

根据所述目标表结构建立一个空表作为所述临时表。

优选的,所述通过数据迁移方式将源表数据迁移至所述临时表并将所述临时表替换为所述源表具体包括:

根据所述表结构变更指令确定数据迁移规则;

根据所述数据迁移规则将所述待升级源表中的数据迁移至所述临时表;

待数据迁移完成后,将所述临时表替换为所述源表。

优选的,所述根据所述数据迁移规则将所述待升级源表中的数据迁移至所述临时表具体包括:

根据所述数据迁移规则确定所述临时表相对于所述待升级源表的新增字段的赋值规则、所述待升级源表的表数据处理规则以及需要迁移的字段;

将所述源表中需要迁移的字段的表数据根据所述表数据处理规则得到变更后数据;

将所述变更后数据迁移至所述临时表对应的位置并为所述临时表中所述新增字段赋值。

优选的,进一步包括在将所述临时表替换为所述源表,之前:

获取所述目标数据库的日志文件;

解析所述日志文件得到数据记录;

根据所述数据记录形成表数据并写入所述临时表。

优选的,所述将所述临时表替换为所述源表具体包括:

停止针对所述待升级源表的所有数据处理操作;

将所述待升级源表的表名更改为临时名称;

将所述临时表的表名更改为所述待升级源表的表名,将所述临时表替换为所述源表。

优选的,所述目标数据库为主库,所述方法进一步包括:

当所述主库中数据库表结构变更完成后,将所述主库中表结构变更后的源表备份至备用数据库中。

本发明还公开了一种分布式数据库表结构灰度升级装置,包括:

表结构变更模块,用于根据表结构变更指令确定待升级的所有目标数据库、源表以及灰度升级优先级;

数据迁移模块,用于在灰度升级优先级最高的所述目标数据库中建立表结构变更后的临时表,通过数据迁移方式将待升级源表的表数据迁移至所述临时表并将所述临时表替换为所述源表,目标数据库表结构变更完成;

管控模块,用于当灰度升级优先级最高的目标数据库表结构变更完成后,向应用服务器反馈升级成功信息。

本发明还公开了一种分布式数据库表结构灰度升级系统,包括应用服务器、分布式数据库以及分布式数据库表结构灰度升级装置;

所述应用服务器向所述分布式数据库表结构灰度升级装置传输表结构变更指令,所述分布式数据库表结构灰度升级装置用于根据表结构变更指令确定待升级的所有目标数据库、源表以及灰度升级优先级;在灰度升级优先级最高的所述目标数据库中建立表结构变更后的临时表,通过数据迁移方式将待升级源表的表数据迁移至所述临时表并将所述临时表替换为所述源表,目标数据库表结构变更完成;当灰度升级优先级最高的目标数据库表结构变更完成后,向应用服务器反馈升级成功信息。

本发明还公开了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,

所述处理器执行所述程序时实现如上所述方法。

本发明还公开了一种计算机可读介质,其上存储有计算机程序,

该程序被处理器执行时实现如上所述方法。

本发明根据表结构变更指令可以确定待升级的所有目标数据库、目标数据库中待升级的源表以及灰度升级优先级。然后,在灰度升级优先级最高的目标数据库中建立表结构变更后的临时表,通过数据迁移方式将待升级的源表中的表数据迁移至临时表中,待数据迁移完成后,将数据迁移得到的临时表替换为待升级源表得到表结构变更后的源表,实现目标数据库表结构的快速变更升级。当灰度升级优先级最高的目标数据库表结构变更完成后,向应用服务器反馈升级成功信息以使应用服务器在灰度升级优先级最高的关键目标数据库表结构升级完成后优先向应用服务器提供数据处理服务。通过分级的数据库表结构灰度升级方式可以缩短升级时间,防止部分数据库源表和临时表切换时间过长导致分布式数据库停机时间长而降低用户体验的问题。本发明通过建立临时表及数据迁移的方式得到表结构变更后的源表,在数据迁移的过程中无需停机,仅在将临时表替换为源表的过程中需要停止对源表的所有数据处理操作,从而本发明的数据库表结构变更速度快,大大缩短了表结构变更的停机时间,停机时间可由分钟级或小时级缩短至秒级,极大地提高了业务运行的连续性。并且,本发明的数据库表结构变更过程无需应用服务器的参与,也无需开发人员编写移行程序,不需要重新搭建数据库高可用备库,不需要手动进行数据迁移,通过设置表结构变更指令的一次性操作即可实现所有目标数据库的表结构变更升级,减少开发人员的开发工作量和运维难度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出本发明分布式数据库表结构灰度升级方法一个具体实施例的流程图;

图2示出本发明分布式数据库表结构灰度升级方法一个具体实施例S100的流程图;

图3示出本发明分布式数据库表结构灰度升级方法一个具体实施例S200建立临时表的流程图;

图4示出本发明分布式数据库表结构灰度升级方法一个具体例子的示意图;

图5示出本发明分布式数据库表结构灰度升级方法一个具体实施例S200数据迁移实现表结构升级的流程图;

图6示出本发明分布式数据库表结构灰度升级方法一个具体实施例S220的流程图;

图7示出本发明分布式数据库表结构灰度升级方法一个具体实施例增量数据迁移的流程图;

图8示出本发明分布式数据库表结构灰度升级方法一个具体实施例S200源表和临时表切换的流程图;

图9示出本发明分布式数据库表结构灰度升级方法一个具体例子中基于数据迁移技术实现分布式MySQL数据库表结构快速升级的升级流程图;

图10示出本发明分布式数据库表结构灰度升级方法一个具体例子中数据库表结构快速升级的待升级源表和临时表切换的流程图;

图11示出本发明分布式数据库表结构灰度升级装置一个具体实施例的结构图;

图12示出适于用来实现本发明实施例的计算机设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前应用采用的分布式数据库的表结构变更升级需要先在备库中进行表结构升级,并需要重新搭建主从同步的高可用架构。在进行升级时,需要停止主库的业务,通过移行程序从主库迁移增量数据到备库中,最后把业务切换到备库,由该备库作为新的主库对外提供数据库服务。因此,目前的数据库表结构变更升级存在以下几个问题:一是分布式数据库节点太多,业务停机时间过长,需要分钟级甚至小时级的停机时间;二是需要开发人员编写增量的数据移行程序;三是备库要重新搭建高可用架构;四是操作步骤多而复杂,中途出现问题会增加停机时间,停机时长不可控;五是升级方案只适用于本应用的本次升级,不具备通用性。针对传统数据库表结构升级存在的诸多问题,本发明根据表结构变更指令可以确定待升级的所有目标数据库以及目标数据库中待升级的源表。然后,在目标数据库中建立表结构变更后的临时表,通过数据迁移方式将待升级的源表中的表数据迁移至临时表中,待数据迁移完成后,将数据迁移得到的临时表替换为待升级源表得到表结构变更后的源表,实现目标数据库表结构的快速变更升级。本发明通过建立临时表及数据迁移的方式得到表结构变更后的源表,在数据迁移的过程中无需停机,仅在将临时表替换为源表的过程中需要停止对源表的所有数据处理操作,从而本发明的数据库表结构变更速度快,大大缩短了表结构变更的停机时间。综上,本发明提出了一种分布式数据库表结构灰度升级方法,一方面能实现秒级、全部数据库节点自动化升级,以减少业务停机时间;另一方面实现通用的分布式数据库表结构升级方案,升级过程中对开发人员透明,不需要开发人员编写数据移行程序,不需要重新搭建主库和备库间的高可用环境。并且,本发明通过分级的数据库表结构灰度升级方式可以缩短升级时间,防止部分数据库源表和临时表切换时间过长导致分布式数据库停机时间长而降低用户体验的问题。

根据本发明的一个方面,本实施例公开了一种分布式数据库表结构灰度升级方法。如图1所示,本实施例中,所述方法包括:

S100:根据表结构变更指令确定待升级的所有目标数据库、源表以及灰度升级优先级。

S200:在灰度升级优先级最高的所述目标数据库中建立表结构变更后的临时表,通过数据迁移方式将待升级源表的表数据迁移至所述临时表并将所述临时表替换为所述源表,目标数据库表结构变更完成。

S300:当灰度升级优先级最高的目标数据库表结构变更完成后,向应用服务器反馈升级成功信息。

本发明根据表结构变更指令可以确定待升级的所有目标数据库、目标数据库中待升级的源表以及灰度升级优先级。然后,在灰度升级优先级最高的目标数据库中建立表结构变更后的临时表,通过数据迁移方式将待升级的源表中的表数据迁移至临时表中,待数据迁移完成后,将数据迁移得到的临时表替换为待升级源表得到表结构变更后的源表,实现目标数据库表结构的快速变更升级。当灰度升级优先级最高的目标数据库表结构变更完成后,向应用服务器反馈升级成功信息以使应用服务器在灰度升级优先级最高的关键目标数据库表结构升级完成后优先向应用服务器提供数据处理服务。通过分级的数据库表结构灰度升级方式可以缩短升级时间,防止部分数据库源表和临时表切换时间过长导致分布式数据库停机时间长而降低用户体验的问题。本发明通过建立临时表及数据迁移的方式得到表结构变更后的源表,在数据迁移的过程中无需停机,仅在将临时表替换为源表的过程中需要停止对源表的所有数据处理操作,从而本发明的数据库表结构变更速度快,大大缩短了表结构变更的停机时间,停机时间可由分钟级或小时级缩短至秒级,极大地提高了业务运行的连续性。并且,本发明的数据库表结构变更过程无需应用服务器的参与,也无需开发人员编写移行程序,不需要重新搭建数据库高可用备库,不需要手动进行数据迁移,通过设置表结构变更指令的一次性操作即可实现所有目标数据库的表结构变更升级,减少开发人员的开发工作量和运维难度。

在优选的实施方式中,所述方法进一步包括:

S400:基于预设条件在未进行表结构变更的目标数据库中建立表结构升级后的临时表,通过数据迁移方式将待升级源表的表数据迁移至所述临时表并将所述临时表替换为所述源表,未进行表结构变更的目标数据库表结构升级完成。

可以理解的是,灰度升级优先级可包括预设的多个级别,其中,灰度升级优先级最高的目标数据库可以优先升级,灰度升级优先级最高的目标数据库的表结构变更后即向应用服务器反馈升级成功信息,一方面可使一部分目标数据库优先升级,对升级后的应用服务器运行进行监控,若表结构升级后运行出现问题能够降低影响范围且便于应用服务器及时排除故障。另一方面,使灰度升级优先级最高的目标数据库先升级,相对于所有目标数据库全部升级后再结束停机向应用服务器恢复服务的方式,该优选的实施方式能够进一步缩短停机时间。此外,应用服务器在接收到升级成功信息后首先向升级后的目标数据库发送数据处理任务,当未进行表结构变更的目标数据库也升级完成后再恢复向所有目标数据库发送数据处理任务的正常运行。此时,灰度升级优先级较低的目标数据库表结构升级时即使停机也不会影响应用服务器的正常数据处理任务的执行。

需要说明的是,灰度升级优先级包括的多个级别可以根据实际需求灵活设置,例如,灰度升级优先级可包括最高级、高级、中级和低级等级别。确定目标数据库的优先级时,可根据表结构变更指令中设定的优先级进行确定,也可根据各个目标数据库待升级源表存储的数据重要性以及多个目标数据库中待升级源表是否相同等参数进行优先级确定,例如若多个目标数据库待升级源表相同,可确定其中的一个或多个的优先级较高优先升级提供服务,本领域技术人员可根据实际情况进行灰度升级优先级的设置和目标数据库优先级的确定,在此不再赘述。还需要说明的是,预设条件可以是基于应用服务器传输的启动继续表结构升级的表结构变更指令,也可以是再次启动未进行表结构变更的数据库表结构变更升级的预设时间,例如,可预设应用空闲时间,对于未优先进行表结构变更的目标数据库,可在该应用空闲时间继续升级。本领域技术人员可根据实际情况设置预设条件,本发明对此并不作限定。

在优选的实施方式中,如图2所示,所述S100根据所述表结构变更指令确定待升级的所有目标数据库及源表具体包括:

S110:根据表结构变更指令确定所述目标数据库的数据库信息和源表信息。

S120:根据所述数据库信息确定所述数据库的IP地址,并根据所述源表信息获取所述数据库中源表的表数据。

需要说明的是,目前为用户提供相应服务的应用需要设置应用服务器以实现应用的业务逻辑,应用服务器运行时需要执行对分布式数据库进行业务数据的存储、增删改查以及启动分布式数据库中的表结构升级等任务。分布式数据库可向应用服务器提供分库分表、数据存储、数据查询与修改等数据处理服务。分布式数据库通常包括多个分布式节点,其中每个节点中设置一个或多个数据库。通常的,每个节点中设置有主库和备库两种数据库,主库在对应用服务器传输的数据处理任务提供数据处理服务后将更新的数据再备份至备库中,从而当主库出现故障时,可切换至备库向应用服务器提供数据处理服务,避免主库故障时无法向应用服务器提供服务而导致的应用运行异常的问题,提高了应用服务器的运行稳定性和持续提供服务的能力。

在该优选的实施方式中,可以理解的是,该表结构变更指令可以是开发人员通过人机交互设备输入的,也可以是应用服务器传输得到,还可以是通过其他方式预先设置的,该表结构变更指令可以通过多种方式获取,本发明对此并不作限定。

进一步的,根据接收或预设的表结构变更指令可以得到需要表结构升级的目标数据库的IP地址、数据库编号以及数据库类型等数据库信息,还可以得到待升级的源表的表名和文件大小等源表信息。其中,根据数据库信息可得到目标数据库的IP地址,根据该IP地址可以直接访问目标数据库,以对目标数据库中的数据进行增删改查的数据处理。从而,可通过IP地址访问目标数据库,并根据源表信息获取源表中的表数据,根据表数据通过数据迁移的方式建立临时表,在数据迁移至临时表的过程中数据库无需暂停服务,从而大大减少了源表表结构升级所需的停机时间。数据库编号可以根据需求预先设置,数据库类型可包括MySql、SQLServer、Oracle、Sybase和DB2等常见的数据库类型。

在优选的实施方式中,如图3所示,所述S200在灰度升级优先级最高的所述目标数据库中建立表结构变更后的临时表具体包括:

S211:根据所述表结构变更指令确定表结构变更后的目标表结构。

S211:根据所述目标表结构建立一个空表作为所述临时表。

在该优选的实施方式中,表结构变更指令中进一步包括了表结构变更条件,根据表结构变更条件可得到目标表结构。其中,表结构变更条件可以是多种表现形式,该变更条件可以是目标表结构相对于源表的变更或者直接给出目标表结构的字段等各个参数。从而,根据表结构变更指令中的表结构变更条件可以在目标数据库中建立一个空表,该空表具有目标表结构,可作为临时表进行数据迁移。例如,如图4所示,在一个具体例子中,该数据库采用分布式MySQL数据库,分布式MySQL数据库包括MySQL节点1、MySQL节点2…MySQL节点n的n个节点。在表结构升级过程中,通过数据库IP地址可访问分布式数据库中的MySQL节点1的MySQL主库数据库。进一步的,确定MySQL主库中需要表结构变更进行表结构升级的表A和表B两个源表。根据表结构变更指令分别确定表A和表B表结构变更后的目标表结构,并建立表A’和表B’两个空表作为表A和表B的临时表。

在优选的实施方式中,如图5所示,所述S200中通过数据迁移方式将源表数据迁移至所述临时表并将所述临时表替换为所述源表具体可包括:

S210:根据所述表结构变更指令确定数据迁移规则。

S220:根据所述数据迁移规则将所述待升级源表中的数据迁移至所述临时表。

S230:待数据迁移完成后,将所述临时表替换为所述源表。

在该优选的实施方式中,可以理解的是,在建立临时表之后,需要将待升级源表中的存量数据通过数据迁移的方式迁移到临时表的对应位置,即将待升级源表中已有的数据迁移至临时表中。需要说明的是,该数据迁移是指将待升级源表中的数据通过迁移至临时表中,数据迁移包括了将数据复制后填充至所述临时表中的过程,还包括了在迁移过程中对于待升级源表中的存量数据基于表结构变更指令进行处理后填充至临时表中的过程。

具体的,根据表结构变更指令可以确定数据迁移规则,即根据该数据迁移规则可确定对待升级源表中的存量数据需要经过哪些数据处理后才能够写入临时表。其中,常见的数据处理可以包括仅迁移、变更存储格式后迁移以及基于预设函数的迁移等多种处理方式。当待升级源表中的所有存量数据(已有数据)均通过数据迁移的方式写入临时表后,可将临时表替换为源表,完成表结构变更升级。替换后的源表已经具有目标表结构,从而在后续接收到应用服务器的数据处理任务时,可以直接向替换后的源表中写入增量数据。因此,在该优选的实施方式中,通过数据迁移及临时表切换的方式无需在备库中进行表结构变更再进行主库和备库切换等复杂的升级过程,且在数据迁移过程中主库仍可正常向应用服务器提供服务,仅在临时表切换为源表时进行暂时停机,停机时间短,基本可以做到用户无感知的效果,提升应用提供持续服务的能力,提高用户体验。例如,在上述具体例子中,如图4所示,在主库中针对待升级源表表A和表B分别建立临时表表A’和表B’后,即可启动表A至表A’以及表B至表B’的数据迁移,基于表A和表B分别对应的数据迁移规则将表A和表B中的存量数据迁移至表A’和表B’中,当表A和表B中的所有存量数据均迁移完成后,即可用表A’替换表A,用表B’替换表B,则替换后的表A和表B具有表结构变更后的目标表结构,实现了表结构升级。

在优选的实施方式中,如图6所示,所述S220中根据所述数据迁移规则将所述待升级源表中的数据迁移至所述临时表具体可包括:

S221:根据所述数据迁移规则确定所述临时表相对于所述待升级源表的新增字段的赋值规则、所述待升级源表的表数据处理规则以及需要迁移的字段。

S222:将所述源表中需要迁移的字段的表数据根据所述表数据处理规则得到变更后数据。

S223:将所述变更后数据迁移至所述临时表对应的位置并为所述临时表中所述新增字段赋值。

可以理解的是,对待升级源表进行表结构升级需要对源表的字段等表结构进行变更。在该优选的实施方式中,为了使待升级源表中的存量数据可以迁移至临时表中,在数据迁移规则中预先设定了待升级源表变更的新增字段以及新增字段的赋值规则、对于待升级源表中的存量数据迁移至临时表前的表数据处理规则以及需要迁移的字段。其中,根据数据迁移规则中设定的需要迁移的字段可确定待升级源表中哪些字段的表数据需要迁移至临时表中,而哪些字段的表数据无需迁移至临时表中,从而对需要迁移至临时表中的表数据基于表数据处理规则进行数据处理后写入临时表中,并对临时表中的新增字段进行赋值。其中,对新增字段的赋值可以是全部设置为默认值,也可以是根据待升级源表中的表数据得到新增字段对应的数据并进行赋值,本发明对此并不作限定。

在优选的实施方式中,如图7所示,所述方法进一步包括在将所述临时表替换为所述源表之前:

S231:获取所述目标数据库的日志文件。

S232:解析所述日志文件得到数据记录。

S233:根据所述数据记录形成表数据并写入所述临时表。

可以理解的是,在将待升级源表中的所有存量数据迁移至临时表之后即将临时表替换为源表,这种表结构升级方式需要在数据迁移之后进入停机状态。在停机状态时,主库不再向应用服务器提供服务,在应用访问高峰期时停机升级,可能会导致用户体验的降低或者出现应用崩溃等问题。在该优选的实施方式中,当数据迁移完成后,继续获取目标数据库的日志文件,从日志文件中解析得到数据记录。根据该数据记录可得到新增表数据,即得到增量数据,可将该增量数据写入临时表中,在保证目标数据库向应用服务器继续提供服务的同时保持临时表中的表数据与待升级源表中的数据一致。从而,可在应用服务器空闲的时候用临时表替换待升级源表得到表结构变更后的源表,提高应用服务器提供持续服务的能力和可靠性。例如,对于图4示出的具体例子,可从MySQL主库的Binlog日志文件里面读取Binlog日志,然后对Binlog日志解析为数据记录,根据数据记录形成表数据并写入所述临时表。

在优选的实施方式中,如图8所示,所述S200中将所述临时表替换为所述源表具体可包括:

S241:停止针对所述待升级源表的所有数据处理操作。

S242:将所述待升级源表的表名更改为临时名称。

S243:将所述临时表的表名更改为所述待升级源表的表名,将所述临时表替换为所述源表。

可以理解的是,在用临时表替换待升级源表时,需要进行停机升级。具体的,可停止目标数据库的所有数据处理任务,即停止针对待升级源表的所有数据处理操作,停止对待升级源表中的表数据的增删改查。然后更改待升级源表的表名为临时名称,从而可将临时表的表名更改为待升级源表的表名,将临时表替换为所述源表,实现源表的表结构变更升级。在该优选的实施方式中,待升级源表和临时表中的数据一致,从而只需将临时表的表名替换为待升级源表的表名,此时源表中的表结构已变更为目标表结构,可向应用服务器提供升级后的数据处理服务,升级时的停机时间短,操作简单,无需开发人员的复杂人工升级操作。

在优选的实施方式中,所述目标数据库为主库,所述方法进一步包括:

S500:当所述主库中数据库表结构变更完成后,将所述主库中表结构变更后的源表备份至备用数据库中。

可以理解的是,分布式数据库各节点中通常包括主库和备库(备用数据库),在将主库中的源表进行表结构变更升级后,进一步将升级后的源表备份至各备库中,对备库中的源表进行升级。例如,在图4示出的具体例子中,MySQL节点1中设有一个主库和三个备库,在主库中的表A和表B的表结构变更后,将表结构变更后的表A和表B分别备份至三个备库中,提高数据库节点提供服务的能力。

下面通过一个具体例子来对本发明作进一步的说明。图9示出了本发明的基于数据迁移技术实现分布式MySQL数据库表结构快速升级的升级流程图。如图9所示,所述方法包括以下步骤:

步骤S201:应用服务器在管控模块录入需要升级的分布式MySQL数据库节点的数据库信息、待升级源表的源表信息、目标表结构和数据迁移规则的表结构变更指令,启动表结构升级任务。

步骤S202:表结构变更模块根据分布式MySQL数据库节点中目标数据库的IP地址和待升级源表,在分布式MySQL目标数据库的主库上参考目标表结构新建临时表。

步骤S203:数据迁移模块根据数据迁移规则,自动生成分布式MySQL数据库集群所有待升级节点MySQL数据库的源表到临时表的存量数据迁移任务和增量数据迁移任务。

步骤S204:自动开启所有MySQL节点目标数据库的源表到临时表的存量数据迁移任务,直到存量数据迁移完成。

步骤S205:数据追平后,自动开启所有MySQL节点目标数据库的源表到临时表的增量数据迁移任务,目标数据库继续保持运行。

图10进一步示出了数据库表结构快速升级的待升级源表和临时表切换的流程图,具体包括以下步骤:

步骤S301:应用服务器启动管控模块的切换任务。

步骤S302:数据迁移模块停止分布式MySQL数据库所有MySQL节点目标数据库的增量数据迁移。

步骤S303:数据迁移模块完成所有MySQL节点的源表和临时表的替换。

步骤S304:数据迁移模块等待所有MySQL节点返回操作成功后,管控模块通知应用服务器表结构升级完成。

综上,本发明的数据库表结构变更速度快,大大缩短了表结构变更的停机时间,停机时间可由分钟级或小时级缩短至秒级,极大地提高了业务运行的连续性。并且,本发明的数据库表结构变更过程无需应用服务器的参与,也无需开发人员编写移行程序,不需要重新搭建数据库高可用备库,不需要手动进行数据迁移,通过设置表结构变更指令的一次性操作即可实现所有目标数据库的表结构变更升级,减少开发人员的开发工作量和运维难度。

基于相同原理,本实施例还公开了一种分布式数据库表结构灰度升级装置。如图11所示,本实施例中,所述装置包括表结构变更模块11、数据迁移模块12和管控模块13。

其中,所述表结构变更模块11用于根据表结构变更指令确定待升级的所有目标数据库、源表以及灰度升级优先级。

数据迁移模块12用于在灰度升级优先级最高的所述目标数据库中建立表结构变更后的临时表,通过数据迁移方式将待升级源表的表数据迁移至所述临时表并将所述临时表替换为所述源表,目标数据库表结构变更完成。

管控模块13用于当灰度升级优先级最高的目标数据库表结构变更完成后,向应用服务器反馈升级成功信息。

由于该装置解决问题的原理与以上方法类似,因此本装置的实施可以参见方法的实施,在此不再赘述。

基于相同原理,本实施例还公开了一种分布式数据库表结构灰度升级系统。如图4所示,本实施例中,所述分布式数据库表结构灰度升级系统包括应用服务器、分布式数据库以及分布式数据库表结构灰度升级装置。

其中,所述应用服务器向所述分布式数据库表结构灰度升级装置传输表结构变更指令,所述分布式数据库表结构灰度升级装置用于根据表结构变更指令确定待升级的所有目标数据库、源表以及灰度升级优先级;在灰度升级优先级最高的所述目标数据库中建立表结构变更后的临时表,通过数据迁移方式将待升级源表的表数据迁移至所述临时表并将所述临时表替换为所述源表,目标数据库表结构变更完成;当灰度升级优先级最高的目标数据库表结构变更完成后,向应用服务器反馈升级成功信息。

由于该系统解决问题的原理与以上方法类似,因此本系统的实施可以参见方法的实施,在此不再赘述。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

在一个典型的实例中计算机设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的由客户端执行的方法,或者,所述处理器执行所述程序时实现如上所述的由服务器执行的方法。

下面参考图12,其示出了适于用来实现本申请实施例的计算机设备600的结构示意图。

如图12所示,计算机设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。

特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 分布式数据库表结构灰度升级方法、装置及系统
  • 区块链版本灰度升级验证方法、装置及系统
技术分类

06120112740711