数据迁移处理方法及装置与流程

文档序号:12363950阅读:285来源:国知局
数据迁移处理方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种数据迁移处理方法及装置。



背景技术:

分布式数据库系统的数据和表分布在各个节点上,按照系统的数据分布规则,数据可以按照不同的表分布在不同的节点上,也可以是一个表的数据根据表的列属性分布在不同节点上。当系统数据存储量增加时,原先的节点已经无法存储时,需要对系统的存储进行扩容,将存储在一个节点的数据重新分布到两个或者多个节点上。另外一种情况是系统运行一段时间后,不同的节点存储出现不均衡的情况,为了提升系统性能,需要将数据在节点间进行迁移。

不同于面向联机分析处理(Online Analytical Processing,简称为OLAP)系统,面向联机事务处理(On-Line Transaction Processing,简称为OLTP)系统往往会同时对数据进行读、写、更新操作,而OLAP系统往往都是一次性写后多次读取。因此分布式数据库系统在数据迁移和扩容的过程中必须考虑对系统当前的读写操作的影响。数据在迁移和扩容的过程中,往往需要耗费一定时间,在这段时间内系统需要停止数据库的读写操作,或者限制对数据库的操作,这势必影响了业务的运行。

针对相关技术中,在数据迁移和扩容的过程中需要停止数据库的读写操作的问题,还未提出有效的解决方案。



技术实现要素:

本发明提供了一种数据迁移处理方法及装置,以至少解决相关技术中在数据迁移和扩容的过程中需要停止数据库的读写操作的问题。

根据本发明的一个方面,提供了一种数据迁移处理方法,包括:接收将指定数据由第一节点迁移至第二节点的数据迁移请求消息;记录当前对所述指定数据的数据操作变更信息;在将所述指定数据从所述第一节点迁移至所述第二节点的过程中,根据所述数据操作变更信息对所述指定数据进行操作处理。

进一步地,所述方法还包括:在将所述指定数据从所述第一节点迁移至所述第二节点之后,根据所述数据操作变更信息在所述第二节点中再次对所述指定数据进行操作处理;停止对所述第一节点中的数据和所述第二节点中的数据进行操作变更处理。

进一步地,停止对所述第一节点中的数据和所述第二节点中的数据进行操作变更处 理之后包括:将所述指定数据对应的节点由所述第一节点更新为所述第二节点。

进一步地,将所述指定数据对应的节点由所述第一节点更新为所述第二节点之后包括:继续对所述第一节点中的数据和所述第二节点中的数据进行操作变更处理。

进一步地,所述方法还包括:在将所述指定数据从所述第一节点迁移至所述第二节点之后,将所述指定数据从所述第一节点中删除。

进一步地,所述数据操作变更信息包括以下至少之一的信息:更新所述指定数据的信息、修改所述指定数据的信息、删除所述指定数据的信息、增加数据。

根据本发明的另一个方面,还提供了一种数据迁移处理装置,所述装置包括:接收模块,用于接收将指定数据由第一节点迁移至第二节点的数据迁移请求消息;记录模块,用于记录当前对所述指定数据的数据操作变更信息;第一处理模块,用于在将所述指定数据从所述第一节点迁移至所述第二节点的过程中,根据所述数据操作变更信息对所述指定数据进行操作处理。

进一步地,所述装置还包括:第二处理模块,用于在将所述指定数据从所述第一节点迁移至所述第二节点之后,根据所述数据操作变更信息在所述第二节点中再次对所述指定数据进行操作处理;停止模块,用于停止对所述第一节点中的数据和所述第二节点中的数据进行操作变更处理。

进一步地,所述装置还包括:更新模块,用于将所述指定数据对应的节点由所述第一节点更新为所述第二节点。

进一步地,所述装置还包括:继续模块,用于继续对所述第一节点中的数据和所述第二节点中的数据进行操作变更处理。

进一步地,所述装置还包括:删除模块,用于在将所述指定数据从所述第一节点迁移至所述第二节点之后,将所述指定数据从所述第一节点中删除。

进一步地,所述数据操作变更信息包括以下至少之一的信息:更新所述指定数据的信息、修改所述指定数据的信息、删除所述指定数据的信息、增加数据。

通过本发明,采用接收将指定数据由第一节点迁移至第二节点的数据迁移请求消息;记录当前对指定数据的数据操作变更信息;在将指定数据从第一节点迁移至第二节点的过程中,根据数据操作变更信息对指定数据进行操作处理。解决了相关技术中在数据迁移和扩容的过程中需要停止数据库的读写操作的问题,降低了数据迁移过程中,数据库节点停止服务的时间窗口。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明 的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的数据迁移处理方法的流程图;

图2是根据本发明实施例的数据迁移处理装置的结构框图;

图3是根据本发明实施例的数据迁移处理装置的结构框图(一);

图4是根据本发明实施例的数据迁移处理装置的结构框图(二);

图5是根据本发明实施例的数据迁移处理装置的结构框图(三);

图6是根据本发明实施例的数据迁移处理装置的结构框图(四);

图7是根据本发明实施例的数据迁移的系统结构图;

图8是根据本发明实施例的数据迁移模块根据客户端提交的数据迁移请求的数据导出导入处理流程图;

图9是根据本发明实施例的监控模块DBMonitor在数据迁移过程中的监控处理的流程图;

图10是根据本发明实施例的路由模块在数据迁移过程中的监控处理的流程图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

在本实施例中提供了一种数据迁移处理方法,图1是根据本发明实施例的数据迁移处理方法的流程图,如图1所示,该流程包括如下步骤:

步骤S102,接收将指定数据由第一节点迁移至第二节点的数据迁移请求消息;

步骤S104,记录当前对指定数据的数据操作变更信息;

步骤S106,在将指定数据从第一节点迁移至第二节点的过程中,根据上述数据操作变更信息对指定数据进行操作处理。

通过上述步骤,记录第一节点中对指定数据进行操作的数据操作变更信息,在将指定数据从第一节点迁移至第二节点的过程中,依然根据上述数据操作变更信息对指定数据进行操作处理,相比于相关技术中,数据在迁移和扩容的过程中,系统需要停止数据库的读写操作,导致的一定时间的耗费,上述步骤解决了相关技术中在数据迁移和扩容的过程中需要停止数据库的读写操作的问题,降低了数据迁移过程中,数据库节点停止服务的时间窗口。

在将指定数据从第一节点迁移至第二节点之后,在一个可选实施例中,根据上述数 据操作变更信息在第二节点中再次对指定数据进行操作处理,在完成对指定数据的再次操作处理之后,停止对第一节点中的数据和第二节点中的数据进行操作变更处理。以便于在指定数据从第一节点迁移至第二节点之后,对元数据信息进行更新。

对元数据信息进行更新的过程中,在一个可选实施例中,在停止对第一节点中的数据和第二节点中的数据进行操作变更处理之后,将指定数据对应的节点由第一节点更新为第二节点。以便于按照新的元数据信息将数据库操作语句发送至对应的数据库节点执行。

在一个可选实施例中,将指定数据对应的节点由第一节点更新为第二节点之后,继续对第一节点中的数据和第二节点中的数据进行操作变更处理。

对元数据信息进行更新的过程中,在另一个可选实施例中,在将指定数据从第一节点迁移至第二节点之后,将指定数据从第一节点中删除。

上述数据操作变更信息可以包含多种信息,下面对此进行举例说明。在一个可选实施例中,上述数据操作变更信息可以包括:更新该指定数据的信息、修改该指定数据的信息、删除该指定数据的信息、增加数据。

在本实施例中还提供了一种数据迁移处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是根据本发明实施例的数据迁移处理装置的结构框图,如图2所示,该装置包括:接收模块22,用于接收将指定数据由第一节点迁移至第二节点的数据迁移请求消息;记录模块24,用于记录当前对指定数据的数据操作变更信息;第一处理模块26,用于在将指定数据从第一节点迁移至第二节点的过程中,根据该数据操作变更信息对指定数据进行操作处理。

图3是根据本发明实施例的数据迁移处理装置的结构框图(一),如图3所示,该装置还包括:第二处理模块32,用于在将指定数据从第一节点迁移至第二节点之后,根据该数据操作变更信息在第二节点中再次对指定数据进行操作处理;停止模块34,用于停止对第一节点中的数据和第二节点中的数据进行操作变更处理。

图4是根据本发明实施例的数据迁移处理装置的结构框图(二),如图4所示,该装置还包括:更新模块44,用于将指定数据对应的节点由第一节点更新为第二节点。

图5是根据本发明实施例的数据迁移处理装置的结构框图(三),如图5所示,该装置还包括:继续模块52,用于继续对第一节点中的数据和第二节点中的数据进行操作变更处理。

图6是根据本发明实施例的数据迁移处理装置的结构框图(四),如图6所示,该 装置还包括:删除模块62,用于在将指定数据从第一节点迁移至第二节点之后,将指定数据从第一节点中删除。

可选地,上述数据操作变更信息包括以下至少之一的信息:更新该指定数据的信息、修改该指定数据的信息、删除该指定数据的信息、增加数据。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述各个模块均位于同一处理器中;或者,上述各个模块分别位于第一处理器、第二处理器和第三处理器…中。

针对相关技术中存在的上述问题,下面结合具体的可选实施例进行说明。

本可选实施例提出了一种分布式数据库数据迁移、扩容和重分布的方法和系统。该方法在数据迁移和扩容的同时,监控在此节点的数据操作,并将按照数据分布更新后需要在新节点写入的数据也一同保存到导出的数据中,使得在数据导出的过程中,不需要停止对数据库的读写操作。在数据在新的节点导入后,这时停止数据库的读写,完成系统元数据信息的更新和原节点数据的清理。通过此系统和方法使得数据在从原节点导入到新节点的过程中,大大减少系统停止服务的时间,提升系统性能,改善可用性。

在本可选实施例中,数据迁移服务器接收到数据迁移请求后,通知原数据库节点的监控数据库监控工具(Data Base Monitor,简称为DBMonitor)开始监控所有在原数据库上的数据操作变更。同时数据迁移服务器开始将原数据库节点按照逻辑操作,将数据导出到迁移服务器上存储。数据库的监控DBMonitor监控会所有的数据操作,如果原数据库操作的数据按照迁移规则属于新的数据库节点,那么DBMonitor将数据操作记录到DBMonitor监控文件中。数据迁移服务器在数据导出完成后,开始将存储在迁移服务器上的数据导入到目的数据库节点。当迁移服务器上存储的数据全部导入完毕后,DBMonitor在新的数据库节点上回放监控文件中记录的数据操作。当DBMonitor回放完毕后,迁移服务器通知路由服务器停止原数据库相关表的读写操作,并更新原数据库节点上存储的数据分布元数据信息。元数据信息更新完毕后,迁移服务器通知路由服务器按照新的数据分布信息进行数据操作请求的路由,并回复原数据库节点的读写操作。迁移服务器开始清理原数据库节点的垃圾数据,当所有数据清理完毕后,此时数据在原数据库节点和新数据库节点迁移完毕,同时元数据服务器上的元数据信息更新完毕,至此完成数据迁移操作。

进一步地,数据迁移服务器的数据迁移处理的具体步骤为:

数据迁移模块接收到客户端的数据迁移请求。

数据迁移模块通知原数据库节点的监控DBMonitor开始监控原数据库节点的所有数据操作,包括数据的更新、修改、新增、删除等操作。

DBMonitor按照新的路由规则,如果操作的数据应该发生在新的数据库节点上,那 么DBMonitor将数据操作记录到DBMonitor的监控文件上。

当数据迁移模块将原数据库节点的数据导出完毕后,数据迁移模块停止原数据库节点的读取,开始将数据往新的数据库节点导入。此时DBMonitor继续监控原数据库节点的数据操作。

当数据迁移模块上所有数据导入完毕后,数据迁移模块通知DBMonitor在新的数据库节点上回放数据。所谓回放数据,也即将之前在原数据库上执行的数据变更操作再在新的数据库节点执行一次。

DBMonitor接收到回放请求后,开始将监控文件中记录的数据操作逐个在新的数据节点上操作,包括新的数据库节点的数据、修改、新增、删除操作。

DBMonitor在回放的过程中,仍然会监控原数据库节点的操作。当DBMoitor所有的数据回放完毕后,DBMonitor通知数据迁移模块数据回放完毕。

数据迁移接收到DBMonitor的回放完毕消息后,DBMonitor通知路由模块停止原数据库和新的数据库节点的相关数据表的读写操作。

数据迁移模块通知元数据库服务器按照新的数据分布信息更新元数据信息。

元数据信息更新完毕后,数据迁移模块通知路由服务器恢复原数据库的读写操作。

数据迁移模块开始清理原数据库节点的垃圾数据。

数据迁移模块完成数据库节点的垃圾数据清理后,通知客户端完成数据迁移操作。

下面结合附图对本发明“一种分布式数据库数据迁移和重分布方法和系统”进详细说明。

图7是根据本发明实施例的数据迁移的系统结构图,如图7所示,为本发明的系统结构图。系统结构主要包括:客户端101、路由模块102(执行了上述停止模块34的功能)、元数据缓存模块103、数据迁移模块104(执行了上述接收模块22、第一处理模块26和第二处理模块32的功能)、分布式数据库集群的单机数据库105、数据库操作监控模块106(执行了上述记录模块24的功能)。

客户端101:客户端模块,用户通过客户端101(包括电脑、手机、浏览器等)提交事务结构化查询语言(Structured Query Language,简称为SQL)语句等。

路由模块102:路由模块,是将执行模块下发的SQL语句,选择合适的数据库连接下发SQL语句去执行。路由模块针对分布式SQL语句会做SQL语句的处理,如在数据迁移阶段,路由模块需要将SQL语句处理成携带路由信息的SQL,如增删改查都会增加路由信息。

元数据缓存模块103:元数据缓存模块,用于元数据的缓存,包括表定义信息、分布 式数据库各节点分布信息。元数据缓存模块可以进行元数据的更新和查询操作。当系统元数据信息变更时,会同步更新元数据缓存模块保存的信息。同时,元数据缓存模块接收其他模块的查询操作,返回元数据信息。

数据迁移模块104:数据迁移模块,用于数据的迁移,包括数据的导入导出、系统扩容、数据重分布等数据迁移的相关工作。数据迁移模块会接收数据库节点导出的文件,并将导出的文件再导入到新的数据库节点。数据迁移模块会以文件形式存储导出的中间文件。

分布式数据库集群的单机数据库105:分布式数据库集群的单机数据库,会接收并执行分布式数据库集群的数据库语言。其中数据库语言包括数据定义语言、数据操作语言、数据查询语言、数据控制语言、事务控制语言等。

数据库操作监控模块106:数据库操作监控模块DBMonitor,用来监控分布式数据库集群各个数据库状态,他会将数据库所有修改数据库数据的语言以二进制的形式记录到日志文件中,如insert、update、delete等。DBMonitor会记录所有记录的变化,将每一行数据的修改记录都记录到日志文件中。日志文件中不包括数据库语言,对于查询语句等,因不涉及到数据的变更,也不会记录到日志文件中。

图8是根据本发明实施例的数据迁移模块根据客户端提交的数据迁移请求的数据导出导入处理流程图。数据迁移模块接收到数据迁移请求后,开始通知DBMonitor监控原数据库节点上的数据操作,之后开始将数据导出到文件中,再将导出的文件导入到新的数据库节点中。数据导入完毕后,再将DBMonitor监控的数据操作日志再在目的数据库节点执行。导入完毕之后通知路由模块停止元数据库的相关表的读写操作,并更新元数据信息。更新完毕之后,数据迁移模块通知路由模块恢复原数据库相关表的读写操作权限,并开始清理原数据库节点的垃圾数据。待垃圾数据清理完毕后,数据迁移模块通知客户数据迁移完毕,并将操作结果返回给客户端。如图8所示,该流程具体包括如下步骤:

步骤S801:数据迁移模块接收客户端下发的数据迁移请求。

步骤S802:数据迁移模块接收到客户端的数据迁移请求后,通知DBMonitor监控数据操作。其中DBMonitor监控数据库操作的详细信息见图9描述。

步骤S803:数据迁移模块开始将原数据库的数据导出到文件中。

步骤S804:判断原数据库节点的数据是否导出完毕,如果没有,则继续导出,重复步骤S803,否则进入步骤S805。

步骤S805:数据迁移模块将导出的文件导入到新的数据库节点。

步骤S806:数据迁移模块判断文件是否导入完毕,如果数据没有导入完毕,则重复步骤S805,否则进入步骤S807。

步骤S807:数据迁移模块通知DBMonitor将日志文件中的数据回放到目的数据库节点。所谓回放数据,也即将日志文件中记录的在原数据库上执行的数据变更操作再在新的数据库节点执行一次。需要注意的是,在回放的过程中,DBMonitor仍然需要监控原数据库的数据操作。

步骤S808:数据迁移模块判断DBMonitor日志文件是否回放完毕,如果没有回放完毕,则继续重复步骤S807,否则进入步骤S809。

步骤S809:数据迁移模块获取到数据文件导入完毕,同时DBMonitor监控日志文件也已回放完毕,那么数据迁移模块通知路由模块停止相关数据库表的读写操作。其中对原数据库节点的读写控制可以是在表、库的粒度上进行读写权限控制。如一个大的表,数据需要根据分发键进行切分并将一部分数据迁移到新的数据库上,那么此时路由模块就需要停止原数据库节点、新数据库节点相关表的读写操作。

步骤S810:数据迁移模块通知元数据缓存模块更新元数据信息。在做数据迁移后,数据的存储节点信息将发生变更,元数据信息需要更新表的分布信息。路由模块在接收到数据库操作请求时,会查询元数据缓存信息,如果涉及到原数据库相关表的操作时,那么就应该按照新的表的分布信息,将数据库操作请求路由到新的数据库节点操作。

步骤S811:数据迁移模块在完成元数据更新后,通知路由模块恢复相关数据库节点的操作权限。

步骤S812:数据迁移模块开始清理原数据库节点的垃圾数据,其中在清理原数据库节点的垃圾数据时,路由模块需要对发往原数据库节点的SQL语句做控制,具体流程见图10所示。

步骤S813:判断垃圾数据是否清理完毕,如果未清理完毕,则进入步骤S812继续清理垃圾数据;如果垃圾数据清理完毕,则进入步骤S814。

步骤S814:通知客户端垃圾数据清理完毕,完成数据迁移工作。数据迁移模块通知路由模块停止监控原数据库节点的相关表的操作语句。

图9是根据本发明实施例的监控模块DBMonitor在数据迁移过程中的监控处理的流程图。如图3所示,是监控模块DBMonitor在数据迁移过程中的监控处理的流程图,具体步骤如下所述:

步骤S901:监控模块DBMonitor开始监控原数据库节点的数据操作。他会将数据库所有修改数据库数据的语言以二进制的形式记录到日志文件中,如插入(insert)、更新(update)、删除(delete)等。DBMonitor会记录所有记录的变化,将每一行数据的修改记录都记录到日志文件中。日志文件中不包括数据库语言,对于查询语句等,因不涉及到数据的变更,也不会记录到日志文件中。

步骤S902,DBMonitor判断监控到的数据操作,判断数据库语言操作是否需要在新 的数据库节点执行。如果不需要则进入步骤S904,否则进入步骤S903。

步骤S903,将数据库语言操作的数据记录保存在日志文件中。记录到日志文件中的内容包含这条数据库操作的类型,以及这个操作的前后数据。如对于插入操作,记录操作类型为插入,并且将插入的数据记录下来;对于更新操作,记录操作类型为更新,并将更新前后的数据记录下来。类似地,涉及到数据变更的操作,都将操作类型记录下来,并且记录数据。对于不涉及到数据变更的操作,以及不涉及到新的数据库节点相关表的变更,都不需要记录到监控日志文件。

步骤S904,判断是否停止监控数据操作,如果不停止则继续监控,进入步骤S901;否则完成数据操作监控。

图10是根据本发明实施例的路由模块在数据迁移过程中的监控处理的流程图,如图10所示,路由模块在数据迁移过程中的监控处理的流程图。路由模块在数据元数据变更前,直接按照原有的元数据信息将数据库操作语句发往对应的数据库节点执行即可。元数据信息变更后,需要按照新的元数据信息将数据库操作语句发到对应数据库节点执行。为了提升迁移过程中数据库性能和可用性,在做数据迁移时,原有的数据库节点仍然需要接收读和写的操作。因此原有的数据库节点保留了新的数据库节点需要迁移的全部数据,以及在迁移过程中写的数据。数据迁移到新的数据库节点后,原有的数据库节点的数据就需要做清理工作,在迁移过程中需要对发往原有的数据库操作语言需要进行处理,图10流程图描述了具体过程,其步骤如下:

步骤S1001,路由模块接收数据库操作语言。

步骤S1002,路由模块根据数据库操作语言涉及到的表去读取其元数据信息。元数据信息包括表的分布情况,如根据主键的范围,确定数据是落在对应的数据库节点上。

步骤S1003,路由模块根据读取到的元数据信息,判断数据库操作是否涉及到迁移数据。如果没有涉及到迁移的数据,则进入步骤S1005;否则,进入步骤S1004。

步骤S1004,如果数据库操作数据涉及到新的迁移数据,那么就需要对其SQL语句进行处理,将数据库语句修改为只在原数据库的数据范围内执行。如一条更新语句,更新的数据范围包含了新旧两个数据库节点的数据。路由模块将对新数据库节点的操作路由到其数据库节点执行即可,对原有数据库节点路由到原数据库节点执行。但是由于原数据库节点包含了没有清理完毕的垃圾数据,路由到原数据库节点的操作可能会操作部分垃圾数据,因此需要将此操作的数据范围限制在数据迁移后原数据库节点应有的范围。

步骤S1005,路由模块将数据库操作语句下发到数据库上执行。

步骤S1006,路由模块判断数据清理是否完毕,如果未完毕,则进入步骤S1001继续监控,否则结束数据库操作语言的路由监控。

综上所述,通过本发明迁移服务器在进行数据迁移的过程中同时监控新的数据的读 取和写入操作,记录将在新的节点上进行的数据操作。等到数据操作完毕后,更新元数据信息时通知路由模块停止原数据库节点的读写操作。在数据导入导出的过程中不需要停止原数据库节点的读写操作,只在更新元数据库信息的时候停止读写操作。这样系统在进行数据迁移过程中不会影响系统的正常读写操作,从而实现分布式数据库系统的实时平滑线性扩容,提高系统性能,改善可用性。由于元数据信息的更新可以即时完成,因此数据库节点停止服务的时间窗口减到最小,降低数据迁移过程对系统服务的影响。本发明适用于分布式关系型数据库需要进行数据的逻辑迁移操作的场合,如数据迁移、数据备份、数据库扩容等操作。

在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。

在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

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

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1