CN104765794A - 一种数据库分区方法及装置 - Google Patents
一种数据库分区方法及装置 Download PDFInfo
- Publication number
- CN104765794A CN104765794A CN201510134427.5A CN201510134427A CN104765794A CN 104765794 A CN104765794 A CN 104765794A CN 201510134427 A CN201510134427 A CN 201510134427A CN 104765794 A CN104765794 A CN 104765794A
- Authority
- CN
- China
- Prior art keywords
- subregion
- data
- time point
- target data
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明实施例公开了一种数据库分区方法及装置,其中的方法可包括:在数据库中创建针对数据库中第一分区的第二分区;在第一时间点将第一分区中的目标数据复制至第二分区,其中目标数据包括第一分区中存储的第一时间点之前的静态目标数据以及第一时间点到第二时间点之间的动态目标数据,第二时间点为将第一分区中的静态目标数据全部复制至第二分区时的时间点;在第二时间点开始查找第一分区的日志文件中从第一时间点到第二时间点之间对应目标数据的数据变化记录;根据目标数据的数据变化记录,在第二分区中修改目标数据。采用本发明,在不停止数据库服务的情况下,实现了数据库的在线分区扩容。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种数据库分区方法及装置。
背景技术
随着互联网技术的发展,互联网中的业务类型越来越多,互联网用户的数量也越来越大。对互联网中的业务通常需要配备相应的数据库集群,存储所需的业务数据,保证业务的正常运行。
根据业务的不同,所配备的数据库集群的规模也不同。目前在这方面一般采用如下方式处理:在初始时就确定所搭建的数据库集群的规模,如按一亿级用户来规划,设置较多数量的数据库节点,或者,按小用户量来规划,仅设置一个数据库节点。然后,按所选定的分配机制将不同用户的数据分配到不同的数据库中,并根据所搭建的数据库集群设置访问各个数据库节点的访问规则。
上述现有的数据库集群的实现方法至少存在如下缺陷:
对于一个新兴的业务,往往对于业务的用户量及用户行为难于评估,随着业务的发展,业务数据的数量会越来越庞大,如需要对数据库的容量进行扩充时,需要暂停数据库服务,当对数据库的容量进行扩展之后,才能恢复对数据库的使用,从而导致数据库在进行扩容期间不能正常使用。
发明内容
本发明实施例所要解决的技术问题在于,提供一种数据库分区方法及装置,实现了在不停数据库服务的前提下,对数据库进行在线的分区扩容,且在进行分区时,可以较好的保证数据的一致性及完整性。
第一方面,本发明实施例提供了一种数据库分区方法,包括:
在数据库中创建针对所述数据库中第一分区的第二分区;
在第一时间点将所述第一分区中的目标数据复制至所述第二分区,其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据,所述第二时间点为将所述第一分区中的静态目标数据全部复制至所述第二分区时的时间点;
在所述第二时间点开始查找所述第一分区的日志文件中从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录;
根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据。
结合第一方面,在第一种可能的实现方式中,所述在第一时间点将所述第一分区中的目标数据复制至所述第二分区具体包括:
若在所述第一时间点与所述第二时间点之间所述第一分区中新增了处于所述第二分区的区域段的动态目标数据,则在将所述第一分区中存储的第一时间点之前的静态目标数据复制至所述第二分区的同时,将新增的处于所述第二分区的区域段的动态目标数据复制至所述第二分区。
结合第一方面,在第二种可能的实现方式中,所述在所述第二时间点开始查找所述第一分区的日志文件中从所述第一时间点到当前时间点之间对应所述目标数据的数据变化记录之后,根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据之前,还包括:
判断所述目标数据是在被复制之前还是被复制之后发生了数据变化;
若所述目标数据在被复制之前发生了数据变化,则在所述第二分区中对所述目标数据不进行修改;
若所述目标数据在被复制之后发生了数据变化,则执行所述根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据的步骤。
结合第一方面,在第三种可能的实现方式中,所述在所述第二分区中修改所述目标数据之后,还包括:
在所述第二时间点开始查找所述第一分区的日志文件中所述第二时间点到第三时间点之间的数据变化记录;
根据所述数据变化记录将所述第一分区中从所述第二时间点到所述第三时间点之间增加的处于所述第二分区的区域段的动态目标数据复制至所述第二分区,以及在所述第二分区中修改目标数据,其中,所述第三时间点为所述第一分区与所述第二分区中处于相同区域段的数据全部一致的时间点。
结合第一方面,在第四种可能的实现方式中,所述根据所述数据变化记录将所述第一分区中从所述第二时间点到所述第三之间点之间增加的处于所述第二分区的区域段的动态目标数据复制至所述第二分区,以及在所述第二分区中修改目标数据之后,还包括:
修改所述第一分区的分区名;
在将所述第一分区的分区名修改之后,删除所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段;
在将所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段删除之后,设置所述第二分区的分区名,以使所述第二分区在所述数据库中进行生效。
第二方面,本发明实施例提供了一种数据库分区装置,包括:
创建单元,用于在数据库中创建针对所述数据库中第一分区的第二分区;
第一复制单元,用于在第一时间点将所述第一分区中的目标数据复制至所述第二分区,其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据,所述第二时间点为将所述第一分区中的静态目标数据全部复制至所述第二分区时的时间点;
第一查找单元,用于在所述第二时间点开始查找所述第一分区的日志文件中从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录;
第一修改单元,用于根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据。
结合第二方面,在第一种可能的实现方式中,所述第一复制单元具体用于若在所述第一时间点与所述第二时间点之间所述第一分区中新增了处于所述第二分区的区域段的动态目标数据,则在将所述第一分区中存储的第一时间点之前的静态目标数据复制至所述第二分区的同时,将新增的处于所述第二分区的区域段的动态目标数据复制至所述第二分区。
结合第二方面,在第二种可能的实现方式中,还包括:
判断单元,用于判断所述目标数据是在被复制之前还是被复制之后发生了数据变化;
所述第一修改单元具体用于若所述目标数据在被复制之前发生了数据变化,则在所述第二分区中对所述目标数据不进行修改;若所述目标数据在被复制之后发生了数据变化,则所述根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据。
结合第二方面,在第三种可能的实现方式中,还包括:
第二查找单元,用于在所述第二时间点开始查找所述第一分区的日志文件中所述第二时间点到第三时间点之间的数据变化记录;
第二复制单元,用于根据所述数据变化记录将所述第一分区中从所述第二时间点到所述第三时间点之间增加的处于所述第二分区的区域段的动态目标数据复制至所述第二分区,以及在所述第二分区中修改目标数据,其中,所述第三时间点为所述第一分区与所述第二分区中处于相同区域段的数据全部一致的时间点。
结合第二方面,在第四种可能的实现方式中,还包括:
第二修改单元,用于修改所述第一分区的分区名;
删除单元,用于在将所述第一分区的分区名修改之后,删除所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段;
设置单元,用于在将所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段删除之后,设置所述第二分区的分区名,以使所述第二分区在所述数据库中进行生效。
通过实施本发明实施例,当数据库集群容量不足时,可以在不停数据库服务的情况下,对数据库进行在线分区,从而对数据库的容量进行扩展,并根据数据库的操作日志文件,对迁移数据进行修复,从而保证迁移数据的一致性及完整性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的数据库管理系统的系统架构图;
图2是本发明实施例提供的数据库分区方法的第一实施例的流程示意图;
图2a是本发明实施例提供的数据库分区方法的时间轴的示意图;
图3是本发明实施例提供的数据库分区方法的第二实施例的流程示意图;
图4是本发明实施例提供的数据库分区装置的第一实施例的结构示意图;
图5是本发明实施例提供的数据库分区装置的第二实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
本发明实施例提供了一种数据库分区方法及装置,实现了在不停数据库服务的前提下,对数据库进行在线的分区扩容,且在进行分区时,可以较好的保证数据的一致性及完整性。为了便于理解本发明实施例,下面先对本发明实施例的数据库分区方法进行描述。
参见图1,是本发明实施例提供的数据库管理系统的系统架构图,在图1中,网关接收用户的应用请求,并且将后端的分区表抽象为一张表(和关系型数据库管理系统MySQL的分区概念一样,对数据使用者来说都是透明的,也不需要关注),使用者只需要像操作单表一样来访问自己的数据。后端的MySQL实例,划分为不同的逻辑集合或分区(Set),例如图1中的分区A或分区C,用户的数据,按照集群的分区规则,存储在不同的逻辑集合或分区内。当用户的数量过大时,需要将逻辑集合或分区(Set)进行进一步地分区,从而扩大数据库中的存储容量。
参见图2,是本发明实施例提供的数据库分区方法的第一实施例的流程示意图,该方法包括:
步骤S201:在数据库中创建针对所述数据库中第一分区的第二分区,以对所述数据库的数据容量进行扩展;
具体地,当用户需要存储的数据量过大导致数据库的存储容量不足时,或者用户需要对数据库进行分区时,数据库服务器在数据库中创建针对所述数据库中的第一分区的第二分区,将所述第一分区中的部分区域段的数据迁移到所述第二分区中,以对所述数据库的容量进行扩展。
例如,在所述数据库中的第一分区中存储的数据的区域段为0-9999,当位于该区域段的数据量过大时,需要将所述第一分区中的数据进行划分,从而将其中的部分区域段的数据迁移到另外一个新区中,以保障数据库中不断加入的新数据能够进行正常存储,为了保证每个分区的数据大小基本一致,我们可以将所述第一分区中的5000-9999区域段对应的数据迁移至新创建的所述第二分区中,并在所述第一分区中保留0-4999区域段的数据,其中在进行数据迁移的过程中,所述第一分区中仍然存在5000-9999的区域段以及该区域段中的数据,并在迁移完成之后,对所述第一分区中的5000-9999的区域段以及该区域段中对应的数据进行删除。
步骤S203:在第一时间点将所述第一分区中的目标数据复制至所述第二分区,其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据,所述第二时间点为将所述第一分区中的静态目标数据全部复制至所述第二分区时的时间点;
具体地,为了在不停止数据库服务的前提下,保证迁移数据的完整性,可以通过数据库中的MySQLdump(MySQL中用于转存储数据库的实用程序)工具做目标数据的全量镜像,即进行数据的复制操作。其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据。当确定了在所述第一分区中需要进行迁移的数据区域段后,在第一时间点开始进行数据复制,即将所述第一分区中需要进行迁移的数据区域段对应的静态目标数据复制至所述第二分区中,在第二时间点完成了对第一时间点之前所述第一分区中的静态目标数据的全部复制。并在进行复制数据的过程中,即在第一时间点与第二时间点之间,所述第一分区还是可以进行正常的数据存储或数据修改等操作,且此时所述第二分区还未进行正常应用,因此对应所述第二分区的5000-9999区域段的新数据还是存储到所述第一分区中的5000-9999区域段内,并在存入所述第一分区之后,将所述新数据中处于5000-9999区域段的数据复制至所述第二分区中,从而保证迁移数据的一致性,其中第一时间点为开始进行数据复制的时间点。
进一步地,若在所述第一时间点与所述第二时间点之间所述第一分区中新增了处于所述第二分区的区域段的动态目标数据,则将所述第一分区中存储的第一时间点之前的静态目标数据复制至所述第二分区,并将新增的处于所述第二分区的区域段的动态目标数据复制至所述第二分区。
例如,可参见图2a,为本发明实施例提供的数据库分区方法的时间轴的示意图,若需要将第一分区的0-9999区域段中的5000-9999区域段划分到所述第二分区,同时将所述第一分区中5000-9999区域段对应的数据迁移至所述第二分区中,若在时间点T0开始进行数据复制,则将时间点T0之前所述第一分区中存储的位于区域段5000-9999的全部数据复制至所述第二分区,在时间点T1刚好将所述第一分区中位于5000-9999区域段的全部数据复制至了所述第二分区。并在进行复制的过程中,即T0时间点到T1时间点期间,如果有新的位于5000-9999区域段的用户数据存入所述第一分区时,需要同步将新数据复制至所述第二分区中,从而保证了迁移数据的一致性。
步骤S205:在所述第二时间点开始查找所述第一分区的日志文件中从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录;
具体地,当在第二时间点完成了对第一时间点之前所述第一分区中的静态目标数据的全部复制后,第二分区需要查看所述第一分区的操作事务日志文件,第二分区向所述第一分区发出读取日志文件的请求,所述第一分区接收请求,读取所述数据库中的本地操作事务日志文件,然后发送至所述第二分区,所述第二分区选取所述操作事务日志文件中的row格式记录日志,row格式记录日志记录的是每条数据的变化细节,即包括每个数据变化的详细记录,包括数据变化前的值、变化后的值以及变化发生的数据条件、变化时间等信息,所述第二分区根据所述第一分区的操作变化记录,查找从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录,其中包括所述第一分区中第一时间点到所述第二时间点之间的静态目标数据的数据变化记录以及所述第一时间点到所述第二时间点之间的动态目标数据的数据变化记录,根据所述数据变化记录对复制至所述第二分区的数据进行修复,从而保证数据的一致性及完整性。
例如,在进行复制的过程中,即在所述第一时间点与所述第二时间点期间,在所述第一分区的操作事务日志文件中会记录0-9999区域段内的所有数据的变化情况,则将其中的5000-9999区域段中的数据复制至所述第二分区后,所述第二分区需要根据所述第一分区中对应5000-9999区域段的数据变化日志对复制的数据进行修复,所述第二分区在所述第一分区的数据变化日志中查找所述第一时间点之前的处于5000-9999区域段的静态目标数据的数据变化记录,以及在所述第一时间点与所述第二时间点之间处于5000-9999区域段的动态目标数据的数据变化记录,根据所述静态目标数据的数据变化记录以及所述动态目标数据的数据变化记录对所述第二分区的数据进行完善,以保证数据迁移的一致性。
步骤S207:根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据。
具体地,所述第二分区根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据,当所述目标数据在被复制之前发生了数据变化,即所述目标数据在被复制之前,所述第一分区接收到了用户对所述目标数据的数据操作请求,在所述第一分区中存储的所述第一数据执行了所述数据操作,且所述第二分区中也存储了所述目标数据的变化记录,则所述第二分区根据所述第一分区中对应所述目标数据的数据操作记录,可以查找到所述目标数据已经执行了所述数据操作,因此在所述第二分区中不需要对所述第一数据重复执行所述数据操作,以保证数据迁移的一致性;当所述目标数据在被复制之后发生了数据变化,即所述目标数据在被复制之后,所述第一分区接收到了用户对所述目标数据的数据操作请求,所述第一分区接收到了用户对所述目标数据的数据操作请求,但已经迁移至所述第二分区的所述第一数据未执行所述数据操作,则如果不对所述数据进行修改,会导致迁移数据不一致,因此所述第二分区根据所述第一分区的数据变化记录,查看到所述第一数据执行了所述数据操作,则在所述第二分区中对所述第一数据执行所述数据操作,以保证数据一致性。
例如,所述目标数据中包括一个静态目标数据a=1,则在对所述目标数据进行复制时,若所述静态目标数据a在被复制之前,所述数据库中的第一分区接收到用户输入的对数据a执行加1的操作,则在所述第一分区中执行对数据a的加1操作,且在所述第一分区(分区A)的数据日志文件中会记录“update ASet a=2,where A Set a=1”,则在将数据a复制至所述了第二分区(分区B)中后,此时所述第二分区中的数据a已经执行了所述操作,则在所述第二分区中对应所述a的操作记录会包括“update B Set a=2,where B Set a=1”记录,则通过查看第一分区的日志文件以及第二分区的日志文件,可以知晓所述数据a在进行复制之前已经执行了所述操作,则对第二分区中的数据a不需要重复执行所述操作,以使第二分区的数据与第一分区中同一区域段的数据保证一致。若数据a在被复制之后,所述数据库服务器接收到对数据a执行加1的操作请求,此时第一分区中存在的数据a会正常执行加1操作,变为2,且在所述第一分区的数据日志文件中会记录“update A Set a=2,where A Set a=1”,但已复制至所述第二分区的数据a接收不到该操作请求,因此在第二分区中的数据a仍为1,则在所述第二时间点开始查看所述第一分区的日志文件,找到对应数据a的数据变化记录,即所述“update A Set a=2,where A Set a=1”,则可以知晓数据a在第一分区中进行了更新,但未在第二分区中进行更新,则在所述第二分区中对数据a执行加1操作,此时第二分区的数据与第一分区中同一区域段的数据才能保证一致。
进一步地,如图3示出的是本发明实施例提供的数据库分区方法的第二实施例的流程示意图,该方法包括:
步骤S301:在数据库中创建针对所述数据库中第一分区的第二分区;
具体地,当用户需要存储的数据量过大导致数据库的存储容量不足时,或者用户需要对数据库进行分区时,数据库服务器在数据库中创建针对所述数据库中的第一分区的第二分区,将所述第一分区中的部分区域段的数据迁移到所述第二分区中,以对所述数据库的容量进行扩展。
例如,在所述数据库中的第一分区中存储的数据的区域段为0-9999,当位于该区域段的数据量过大时,需要将所述第一分区中的数据进行划分,从而将其中的部分区域段的数据迁移到另外一个新区中,以保障数据库中不断加入的新数据能够进行正常存储,为了保证每个分区的数据大小基本一致,我们可以将所述第一分区中的5000-9999区域段对应的数据迁移至新创建的所述第二分区中,并在所述第一分区中保留0-4999区域段的数据,其中在进行数据迁移的过程中,所述第一分区中仍然存在5000-9999的区域段以及该区域段中的数据,并在迁移完成之后,对所述第一分区中的5000-9999的区域段以及该区域段中对应的数据进行删除。
步骤S303:在第一时间点将所述第一分区中的目标数据复制至所述第二分区,其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据,所述第二时间点为将所述第一分区中的静态目标数据全部复制至所述第二分区时的时间点;
具体地,为了在不停止数据库服务的前提下,保证迁移数据的完整性,可以通过数据库中的MySQLdump(MySQL中用于转存储数据库的实用程序)工具做目标数据的全量镜像,即进行数据的复制操作。其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据。当确定了在所述第一分区中需要进行迁移的数据区域段后,在第一时间点开始进行数据复制,即将所述第一分区中需要进行迁移的数据区域段对应的静态目标数据复制至所述第二分区中,在第二时间点完成了对第一时间点之前所述第一分区中的静态目标数据的全部复制。并在进行复制数据的过程中,即在第一时间点与第二时间点之间,所述第一分区还是可以进行正常的数据存储或数据修改等操作,且此时所述第二分区还未进行正常应用,因此对应所述第二分区的5000-9999区域段的新数据还是存储到所述第一分区中的5000-9999区域段内,并在存入所述第一分区之后,将所述新数据中处于5000-9999区域段的数据复制至所述第二分区中,从而保证迁移数据的一致性,其中第一时间点为开始进行数据复制的时间点。
进一步地,若在所述第一时间点与所述第二时间点之间所述第一分区中新增了处于所述第二分区的区域段的动态目标数据,则将所述第一分区中存储的第一时间点之前的静态目标数据复制至所述第二分区,并将新增的处于所述第二分区的区域段的动态目标数据复制至所述第二分区。
例如,可参见图2a,为本发明实施例提供的数据库分区方法的时间轴的示意图,若需要将第一分区的0-9999区域段中的5000-9999区域段划分到所述第二分区,同时将所述第一分区中5000-9999区域段对应的数据迁移至所述第二分区中,若在时间点T0开始进行数据复制,则将时间点T0之前所述第一分区中存储的位于区域段5000-9999的全部数据复制至所述第二分区,在时间点T1刚好将所述第一分区中位于5000-9999区域段的全部数据复制至了所述第二分区。并在进行复制的过程中,即T0时间点到T1时间点期间,如果有新的位于5000-9999区域段的用户数据存入所述第一分区时,需要同步将新数据复制至所述第二分区中,从而保证了迁移数据的一致性。
步骤S305:在所述第二时间点开始查找所述第一分区的日志文件中从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录;
具体地,当在第二时间点完成了对第一时间点之前所述第一分区中的静态目标数据的全部复制后,第二分区需要查看所述第一分区的操作事务日志文件,第二分区向所述第一分区发出读取日志文件的请求,所述第一分区接收请求,读取所述数据库中的本地操作事务日志文件,然后发送至所述第二分区,所述第二分区选取所述操作事务日志文件中的row格式记录日志,row格式记录日志记录的是每条数据的变化细节,即包括每个数据变化的详细记录,包括数据变化前的值、变化后的值以及变化发生的数据条件、变化时间等信息,所述第二分区根据所述第一分区的操作变化记录,查找从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录,其中包括所述第一分区中第一时间点到所述第二时间点之间的静态目标数据的数据变化记录以及所述第一时间点到所述第二时间点之间的动态目标数据的数据变化记录,根据所述数据变化记录对复制至所述第二分区的数据进行修复,从而保证数据的一致性及完整性。
例如,在进行复制的过程中,即在所述第一时间点与所述第二时间点期间,在所述第一分区的操作事务日志文件中会记录0-9999区域段内的所有数据的变化情况,则将其中的5000-9999区域段中的数据复制至所述第二分区后,所述第二分区需要根据所述第一分区中对应5000-9999区域段的数据变化日志对复制的数据进行修复,所述第二分区在所述第一分区的数据变化日志中查找所述第一时间点之前的处于5000-9999区域段的静态目标数据的数据变化记录,以及在所述第一时间点与所述第二时间点之间处于5000-9999区域段的动态目标数据的数据变化记录,根据所述静态目标数据的数据变化记录以及所述动态目标数据的数据变化记录对所述第二分区的数据进行完善,以保证数据迁移的一致性。
步骤S307:判断所述目标数据是在被复制之前还是被复制之后发生了数据变化;
具体地,当将所述第一分区中的目标数据复制至所述第二分区后,判断所述目标数据是在被复制之前发生了数据变化,还是在被复制之后发生了数据变化。如果所述目标数据是在被复制之前发生了数据变化,进入步骤S309,如果所述目标数据是在被复制之后发生了数据变化,进入步骤S311。
步骤S309:在所述第二分区中对所述目标数据不进行修改;
具体地,所述第二分区根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据,当所述目标数据在被复制之前发生了数据变化,即所述目标数据在被复制之前,所述第一分区接收到了用户对所述目标数据的数据操作请求,在所述第一分区中存储的所述第一数据执行了所述数据操作,且所述第二分区中也存储了所述目标数据的变化记录,则所述第二分区根据所述第一分区中对应所述目标数据的数据操作记录,可以查找到所述目标数据已经执行了所述数据操作,因此在所述第二分区中不需要对所述第一数据重复执行所述数据操作,以保证数据迁移的一致性。
例如,所述目标数据中包括一个静态目标数据a=1,则在对所述目标数据进行复制时,若所述静态目标数据a在被复制之前,所述数据库中的第一分区接收到用户输入的对数据a执行加1的操作,则在所述第一分区中执行对数据a的加1操作,且在所述第一分区(分区A)的数据日志文件中会记录“update ASet a=2,where A Set a=1”,则在将数据a复制至所述了第二分区(分区B)中后,此时所述第二分区中的数据a已经执行了所述操作,则在所述第二分区中对应所述a的操作记录会包括“update B Set a=2,where B Set a=1”记录,则通过查看第一分区的日志文件以及第二分区的日志文件,可以知晓所述数据a在进行复制之前已经执行了所述操作,则对第二分区中的数据a不需要重复执行所述操作,以使第二分区的数据与第一分区中同一区域段的数据保证一致。
步骤S311:根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据;
具体地,当所述目标数据在被复制之后发生了数据变化,即所述目标数据在被复制之后,所述第一分区接收到了用户对所述目标数据的数据操作请求,所述第一分区接收到了用户对所述目标数据的数据操作请求,但已经迁移至所述第二分区的所述第一数据未执行所述数据操作,则如果不对所述数据进行修改,会导致迁移数据不一致,因此所述第二分区根据所述第一分区的数据变化记录,查看到所述第一数据执行了所述数据操作,则在所述第二分区中对所述第一数据执行所述数据操作,以保证数据一致性。
例如,若数据a在被复制之后,所述数据库服务器接收到对数据a执行加1的操作请求,此时第一分区中存在的数据a会正常执行加1操作,变为2,且在所述第一分区的数据日志文件中会记录“update A Set a=2,where A Set a=1”,但已复制至所述第二分区的数据a接收不到该操作请求,因此在第二分区中的数据a仍为1,则在所述第二时间点开始查看所述第一分区的日志文件,找到对应数据a的数据变化记录,即所述“update A Set a=2,where A Set a=1”,则可以知晓数据a在第一分区中进行了更新,但未在第二分区中进行更新,则在所述第二分区中对数据a执行加1操作,此时第二分区的数据与第一分区中同一区域段的数据才能保证一致。
步骤S313:在所述第二时间点开始查找所述第一分区的日志文件中所述第二时间点到第三时间点之间的数据变化记录;
具体地,若从所述第二时间点到所述第三时间点之间,所述第一分区中增加的处于所述第二分区的区域段的动态目标数据,或者所述第一分区中对应所述第二分区区域段中的数据进行了变化,则需要查找所述第一分区的日志文件中的数据变化记录,并根据所述第一分区的日志文件将新增加的动态目标数据复制到所述第二分区中,并将进行的数据变化更新到所述第二分区的数据中,所述第三时间点为所述第一分区与所述第二分区中处于相同区域段的数据全部一致的时间点,即所述第二分区与所述第一分区在同一区域段内的数据刚好完全同步的时间点。
步骤S315:根据所述数据变化记录将所述第一分区中从所述第二时间点到所述第三时间点之间增加的处于所述第二分区的区域段的动态目标数据复制至所述第二分区,以及在所述第二分区中修改目标数据,其中,所述第三时间点为所述第一分区与所述第二分区中处于相同区域段的数据全部一致的时间点;
具体地,根据所述第一分区中的数据记录日志,将所述第一分区中从第二时间点到第三时间点之间新增的数据添加到所述第二分区,并将在第二时间点到第三时间点之间所述第一分区的日志文件中对应所述第二分区区域段内数据的数据变化记录更新到所述第二分区,以使所述第二分区的数据与所述第一分区中的数据在同一区域段内保持一致。
例如,可参见图2a,在T0时间点开始做第一分区中目标数据的数据镜像,在时间点T1完成了对第一分区中第一时间点T0以前的全部静态目标数据的数据镜像以及时间点T0到时间点T1之间处于所述第二分区中的区域段的部分数据,在时间点T1可能未将全部处于时间点T0到时间点T1之间的新增的处于第二分区区域段的数据进行镜像,因此在时间点T1之后,还需要通过第一分区的日志文件查看所述第一分区中时间点T0到时间点T1期间新增的动态目标数据,从而在所述第二分区中进行数据修复,并且在进行数据修复的期间,即时间点T1到时间点T2期间,还可能会有新的数据存入第一分区,同样需要查看所述第一分区的日志文件,从而对所述第二分区中的数据进行修复,在时间点T2,所述第二分区中的数据与所述第一分区中的数据在同一区域段内的数据基本保持一致。
步骤S317:修改所述第一分区的分区名;
具体地,当所述第一分区中的数据复制至所述第二分区,并且对复制数据进行修复之后,数据库服务器修改所述第一分区的分区名,例如将所述第一分区的分区名Set A修改为Set D,在修改分区名的短暂时间内,所有发送到所述第一分区的请求都会返回失败,从而保证在切换过程中,所述第一分区中不会有数据发生变化,且在对所述第一分区的分区名修改成功后,将所述第一分区的信息添加到所述数据库服务器中,以保证所述第一分区可以在所述数据库中进行正常应用。
步骤S319:在将所述第一分区的分区名修改之后,删除所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段;
具体地,当修改了所述第一分区的分区名后,将所述第一分区中对应所述第二分区的区域段以及该区域段内的数据全部删除,以将所述第一分区中的存储空间进行部分释放。
步骤S321:设置所述第二分区的分区名,以使所述第二分区在所述数据库中进行生效。
具体地,在将所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段删除之后,当在所述第一分区中删除了所述是第二分区对应的区域段以及目标数据后,设置所述第二分区的分区名,例如将所述第二分区的分区名设置为Set B,并将所述第二分区的信息上报到所述数据库服务器,以使所述第二分区可以在所述数据库中进行正常应用。
上述详细阐述了本发明实施例的方法,下面为了便于更好地实施本发明实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关装置。
如图4示出的本发明实施例提供的数据库分区装置的第一实施例的结构示意图,数据库分区装置40包括:创建单元401、第一复制单元403、第一查找单元405和第一修改单元407,其中
创建单元401,用于在数据库中创建针对所述数据库中第一分区的第二分区;
具体地,当用户需要存储的数据量过大导致数据库的存储容量不足时,或者用户需要对数据库进行分区时,创建单元401在数据库中创建针对所述数据库中的第一分区的第二分区,将所述第一分区中的部分区域段的数据迁移到所述第二分区中,以对所述数据库的容量进行扩展。
例如,在所述数据库中的第一分区中存储的数据的区域段为0-9999,当位于该区域段的数据量过大时,需要将所述第一分区中的数据进行划分,从而将其中的部分区域段的数据迁移到另外一个新区中,以保障数据库中不断加入的新数据能够进行正常存储,为了保证每个分区的数据大小基本一致,我们可以将所述第一分区中的5000-9999区域段对应的数据迁移至新创建的所述第二分区中,并在所述第一分区中保留0-4999区域段的数据,其中在进行数据迁移的过程中,所述第一分区中仍然存在5000-9999的区域段以及该区域段中的数据,并在迁移完成之后,对所述第一分区中的5000-9999的区域段以及该区域段中对应的数据进行删除。
第一复制单元403,用于在第一时间点将所述第一分区中的目标数据复制至所述第二分区,其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据,所述第二时间点为将所述第一分区中的静态目标数据全部复制至所述第二分区时的时间点;
具体地,为了在不停止数据库服务的前提下,保证迁移数据的完整性,可以通过数据库中的MySQLdump(MySQL中用于转存储数据库的实用程序)工具做目标数据的全量镜像,即进行数据的复制操作。其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据。当确定了在所述第一分区中需要进行迁移的数据区域段后,第一复制单元403在第一时间点开始进行数据复制,即将所述第一分区中需要进行迁移的数据区域段对应的静态目标数据复制至所述第二分区中,在第二时间点完成了对第一时间点之前所述第一分区中的静态目标数据的全部复制。并在进行复制数据的过程中,即在第一时间点与第二时间点之间,所述第一分区还是可以进行正常的数据存储或数据修改等操作,且此时所述第二分区还未进行正常应用,因此对应所述第二分区的5000-9999区域段的新数据还是存储到所述第一分区中的5000-9999区域段内,并在存入所述第一分区之后,将所述新数据中处于5000-9999区域段的数据复制至所述第二分区中,从而保证迁移数据的一致性,其中第一时间点为开始进行数据复制的时间点。
进一步地,若在所述第一时间点与所述第二时间点之间所述第一分区中新增了处于所述第二分区的区域段的动态目标数据,则第一复制单元403将所述第一分区中存储的第一时间点之前的静态目标数据复制至所述第二分区,并将新增的处于所述第二分区的区域段的动态目标数据复制至所述第二分区。
例如,可参见图2a,为本发明实施例提供的数据库分区方法的时间轴的示意图,若需要将第一分区的0-9999区域段中的5000-9999区域段划分到所述第二分区,同时将所述第一分区中5000-9999区域段对应的数据迁移至所述第二分区中,若在时间点T0开始进行数据复制,则将时间点T0之前所述第一分区中存储的位于区域段5000-9999的全部数据复制至所述第二分区,在时间点T1刚好将所述第一分区中位于5000-9999区域段的全部数据复制至了所述第二分区。并在进行复制的过程中,即T0时间点到T1时间点期间,如果有新的位于5000-9999区域段的用户数据存入所述第一分区时,需要同步将新数据复制至所述第二分区中,从而保证了迁移数据的一致性。
第一查找单元405,用于在所述第二时间点开始查找所述第一分区的日志文件中从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录;
具体地,当第一复制单元403在第二时间点完成了对第一时间点之前所述第一分区中的静态目标数据的全部复制后,第一查找单元405需要查看所述第一分区的操作事务日志文件,第二分区向所述第一分区发出读取日志文件的请求,所述第一分区接收请求,读取所述数据库中的本地操作事务日志文件,然后发送至所述第二分区,所述第二分区选取所述操作事务日志文件中的row格式记录日志,row格式记录日志记录的是每条数据的变化细节,即包括每个数据变化的详细记录,包括数据变化前的值、变化后的值以及变化发生的数据条件、变化时间等信息,所述第二分区根据所述第一分区的操作变化记录,查找从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录,其中包括所述第一分区中第一时间点到所述第二时间点之间的静态目标数据的数据变化记录以及所述第一时间点到所述第二时间点之间的动态目标数据的数据变化记录,根据所述数据变化记录对复制至所述第二分区的数据进行修复,从而保证数据的一致性及完整性。
例如,在进行复制的过程中,即在所述第一时间点与所述第二时间点期间,在所述第一分区的操作事务日志文件中会记录0-9999区域段内的所有数据的变化情况,则将其中的5000-9999区域段中的数据复制至所述第二分区后,所述第二分区需要根据所述第一分区中对应5000-9999区域段的数据变化日志对复制的数据进行修复,所述第二分区在所述第一分区的数据变化日志中查找所述第一时间点之前的处于5000-9999区域段的静态目标数据的数据变化记录,以及在所述第一时间点与所述第二时间点之间处于5000-9999区域段的动态目标数据的数据变化记录,根据所述静态目标数据的数据变化记录以及所述动态目标数据的数据变化记录对所述第二分区的数据进行完善,以保证数据迁移的一致性。
第一修改单元407,用于根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据。
具体地,所述第二分区根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据,当所述目标数据在被复制之前发生了数据变化,即所述目标数据在被复制之前,所述第一分区接收到了用户对所述目标数据的数据操作请求,在所述第一分区中存储的所述第一数据执行了所述数据操作,且所述第二分区中也存储了所述目标数据的变化记录,则所述第二分区根据所述第一分区中对应所述目标数据的数据操作记录,可以查找到所述目标数据已经执行了所述数据操作,因此在所述第二分区中不需要对所述第一数据重复执行所述数据操作,以保证数据迁移的一致性;当所述目标数据在被复制之后发生了数据变化,即所述目标数据在被复制之后,所述第一分区接收到了用户对所述目标数据的数据操作请求,所述第一分区接收到了用户对所述目标数据的数据操作请求,但已经迁移至所述第二分区的所述第一数据未执行所述数据操作,则如果不对所述数据进行修改,会导致迁移数据不一致,因此所述第二分区根据所述第一分区的数据变化记录,查看到所述第一数据执行了所述数据操作,则第一修改单元407在所述第二分区中对所述第一数据执行所述数据操作,以保证数据一致性。
例如,所述目标数据中包括一个静态目标数据a=1,则在对所述目标数据进行复制时,若所述静态目标数据a在被复制之前,所述数据库中的第一分区接收到用户输入的对数据a执行加1的操作,则在所述第一分区中执行对数据a的加1操作,且在所述第一分区(分区A)的数据日志文件中会记录“update ASet a=2,where A Set a=1”,则在将数据a复制至所述了第二分区(分区B)中后,此时所述第二分区中的数据a已经执行了所述操作,则在所述第二分区中对应所述a的操作记录会包括“update B Set a=2,where B Set a=1”记录,则通过查看第一分区的日志文件以及第二分区的日志文件,可以知晓所述数据a在进行复制之前已经执行了所述操作,则对第二分区中的数据a不需要重复执行所述操作,以使第二分区的数据与第一分区中同一区域段的数据保证一致。若数据a在被复制之后,所述数据库服务器接收到对数据a执行加1的操作请求,此时第一分区中存在的数据a会正常执行加1操作,变为2,且在所述第一分区的数据日志文件中会记录“update A Set a=2,where A Set a=1”,但已复制至所述第二分区的数据a接收不到该操作请求,因此在第二分区中的数据a仍为1,则在所述第二时间点开始查看所述第一分区的日志文件,找到对应数据a的数据变化记录,即所述“update A Set a=2,where A Set a=1”,则可以知晓数据a在第一分区中进行了更新,但未在第二分区中进行更新,则在所述第二分区中对数据a执行加1操作,此时第二分区的数据与第一分区中同一区域段的数据才能保证一致。
可理解的是,本实施例的数据库分区装置40的各功能单元的功能可根据上述图2方法实施例的方法具体实现,此处不再赘述。
进一步地,如图5示出的本发明实施例提供的数据库分区装置的第二实施例的结构示意图,数据库分区装置40包括:创建单元401、第一复制单元403、第一查找单元405和第一修改单元407外,还包括判断单元409、第二查找单元411、第二复制单元413、第二修改单元415、删除单元417和设置单元419,其中
判断单元409,用于判断所述目标数据是在被复制之前还是被复制之后发生了数据变化;
具体地,当第一复制单元403将所述第一分区中的目标数据复制至所述第二分区后,判断单元409判断所述目标数据是在被复制之前发生了数据变化,还是在被复制之后发生了数据变化。
第二查找单元411,在所述第二时间点开始查找所述第一分区的日志文件中所述第二时间点到第三时间点之间的数据变化记录;
具体地,若从所述第二时间点到所述第三时间点之间,所述第一分区中增加的处于所述第二分区的区域段的动态目标数据,或者所述第一分区中对应所述第二分区区域段中的数据进行了变化,则第二查找单元411需要查找所述第一分区的日志文件中的数据变化记录,并需要根据所述第一分区的日志文件将新增加的动态目标数据复制到所述第二分区中,并将进行的数据变化更新到所述第二分区的数据中,所述第三时间点为所述第一分区与所述第二分区中处于相同区域段的数据全部一致的时间点,即所述第二分区与所述第一分区在同一区域段内的数据刚好完全同步的时间点。
第二复制单元413,用于根据所述数据变化记录将所述第一分区中从所述第二时间点到所述第三时间点之间增加的处于所述第二分区的区域段的动态目标数据复制至所述第二分区,以及在所述第二分区中修改目标数据,其中,所述第三时间点为所述第一分区与所述第二分区中处于相同区域段的数据全部一致的时间点;
具体地,第二复制单元413根据所述第一分区中的数据记录日志,将所述第一分区中从第二时间点到第三时间点之间新增的数据添加到所述第二分区,并将在第二时间点到第三时间点之间所述第一分区的日志文件中对应所述第二分区区域段内数据的数据变化记录更新到所述第二分区,以使所述第二分区的数据与所述第一分区中的数据在同一区域段内保持一致。
例如,可参见图2a,在T0时间点开始做第一分区中目标数据的数据镜像,在时间点T1完成了对第一分区中第一时间点T0以前的全部静态目标数据的数据镜像以及时间点T0到时间点T1之间处于所述第二分区中的区域段的部分数据,在时间点T1可能未将全部处于时间点T0到时间点T1之间的新增的处于第二分区区域段的数据进行镜像,因此在时间点T1之后,还需要通过第一分区的日志文件查看所述第一分区中时间点T0到时间点T1期间新增的动态目标数据,从而在所述第二分区中进行数据修复,并且在进行数据修复的期间,即时间点T1到时间点T2期间,还可能会有新的数据存入第一分区,同样需要查看所述第一分区的日志文件,从而对所述第二分区中的数据进行修复,在时间点T2,所述第二分区中的数据与所述第一分区中的数据在同一区域段内的数据基本保持一致。
第二修改单元415,用于修改所述第一分区的分区名;
具体地,当所述第一分区中的数据复制至所述第二分区,并且对复制数据进行修复之后,第二修改单元415修改所述第一分区的分区名,例如将所述第一分区的分区名Set A修改为Set D,在修改分区名的短暂时间内,所有发送到所述第一分区的请求都会返回失败,从而保证在切换过程中,所述第一分区中不会有数据发生变化,且在对所述第一分区的分区名修改成功后,将所述第一分区的信息添加到所述数据库服务器中,以保证所述第一分区可以在所述数据库中进行正常应用。
删除单元417,用于在将所述第一分区的分区名修改之后,删除所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段;
具体地,当第二修改单元415修改了所述第一分区的分区名后,删除单元417将所述第一分区中对应所述第二分区的区域段以及该区域段内的数据全部删除,以将所述第一分区中的存储空间进行部分释放。
设置单元419,用于在将所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段删除之后,设置所述第二分区的分区名,以使所述第二分区在所述数据库中进行生效。
具体地,当在所述第一分区中删除了所述是第二分区对应的区域段以及目标数据后,设置单元419设置所述第二分区的分区名,例如将所述第二分区的分区名设置为Set B,并将所述第二分区的信息上报到所述数据库服务器,以使所述第二分区可以在所述数据库中进行正常应用。
可理解的是,本实施例的数据库分区装置40的各功能单元的功能可根据上述图3方法实施例的方法具体实现,此处不再赘述。
综上所述,通过实施本发明实施例,当数据库集群容量不足时,可以在不停数据库服务的情况下,对数据库进行在线分区,从而对数据库的容量进行扩展,并根据数据库的操作日志文件,对迁移数据进行修复,从而保证迁移数据的一致性及完整性。
本发明所有实施例中的单元或子单元,可以通过通用集成电路,例如CPU(Central Processing Unit,中央处理器),或通过ASIC(Application SpecificIntegrated Circuit,专用集成电路)来实现。
本发明实施例的方法的步骤顺序可以根据实际需要进行调整、合并或删减。本发明实施例的终端的单元可以根据实际需要进行整合、进一步划分或删减。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (10)
1.一种数据库分区方法,其特征在于,包括:
在数据库中创建针对所述数据库中第一分区的第二分区;
在第一时间点将所述第一分区中的目标数据复制至所述第二分区,其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据,所述第二时间点为将所述第一分区中的静态目标数据全部复制至所述第二分区时的时间点;
在所述第二时间点开始查找所述第一分区的日志文件中从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录;
根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据。
2.如权利要求1所述的方法,其特征在于,所述在第一时间点将所述第一分区中的目标数据复制至所述第二分区具体包括:
若在所述第一时间点与所述第二时间点之间所述第一分区中新增了处于所述第二分区的区域段的动态目标数据,则在将所述第一分区中存储的第一时间点之前的静态目标数据复制至所述第二分区的同时,将新增的处于所述第二分区的区域段的动态目标数据复制至所述第二分区。
3.如权利要求1所述的方法,其特征在于,所述在所述第二时间点开始查找所述第一分区的日志文件中从所述第一时间点到当前时间点之间对应所述目标数据的数据变化记录之后,根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据之前,还包括:
判断所述目标数据是在被复制之前还是被复制之后发生了数据变化;
若所述目标数据在被复制之前发生了数据变化,则在所述第二分区中对所述目标数据不进行修改;
若所述目标数据在被复制之后发生了数据变化,则执行所述根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据的步骤。
4.如权利要求1所述的方法,其特征在于,所述在所述第二分区中修改所述目标数据之后,还包括:
在所述第二时间点开始查找所述第一分区的日志文件中所述第二时间点到第三时间点之间的数据变化记录;
根据所述数据变化记录将所述第一分区中从所述第二时间点到所述第三时间点之间增加的处于所述第二分区的区域段的动态目标数据复制至所述第二分区,以及在所述第二分区中修改目标数据,其中,所述第三时间点为所述第一分区与所述第二分区中处于相同区域段的数据全部一致的时间点。
5.如权利要求4所述的方法,其特征在于,所述根据所述数据变化记录将所述第一分区中从所述第二时间点到所述第三之间点之间增加的处于所述第二分区的区域段的动态目标数据复制至所述第二分区,以及在所述第二分区中修改目标数据之后,还包括:
修改所述第一分区的分区名;
在将所述第一分区的分区名修改之后,删除所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段;
在将所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段删除之后,设置所述第二分区的分区名,以使所述第二分区在所述数据库中进行生效。
6.一种数据库分区装置,其特征在于,包括:
创建单元,用于在数据库中创建针对所述数据库中第一分区的第二分区;
第一复制单元,用于在第一时间点将所述第一分区中的目标数据复制至所述第二分区,其中所述目标数据包括所述第一分区中存储的第一时间点之前的静态目标数据以及所述第一时间点到第二时间点之间的动态目标数据,所述第二时间点为将所述第一分区中的静态目标数据全部复制至所述第二分区时的时间点;
第一查找单元,用于在所述第二时间点开始查找所述第一分区的日志文件中从所述第一时间点到所述第二时间点之间对应所述目标数据的数据变化记录;
第一修改单元,用于根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据。
7.如权利要求6所述的装置,其特征在于,所述第一复制单元具体用于若在所述第一时间点与所述第二时间点之间所述第一分区中新增了处于所述第二分区的区域段的动态目标数据,则在将所述第一分区中存储的第一时间点之前的静态目标数据复制至所述第二分区的同时,将新增的处于所述第二分区的区域段的动态目标数据复制至所述第二分区。
8.如权利要求6所述的装置,其特征在于,还包括:
判断单元,用于判断所述目标数据是在被复制之前还是被复制之后发生了数据变化;
所述第一修改单元具体用于若所述目标数据在被复制之前发生了数据变化,则在所述第二分区中对所述目标数据不进行修改;若所述目标数据在被复制之后发生了数据变化,则所述根据所述目标数据的数据变化记录,在所述第二分区中修改所述目标数据。
9.如权利要求6所述的装置,其特征在于,还包括:
第二查找单元,用于在所述第二时间点开始查找所述第一分区的日志文件中所述第二时间点到第三时间点之间的数据变化记录;
第二复制单元,用于根据所述数据变化记录将所述第一分区中从所述第二时间点到所述第三时间点之间增加的处于所述第二分区的区域段的动态目标数据复制至所述第二分区,以及在所述第二分区中修改目标数据,其中,所述第三时间点为所述第一分区与所述第二分区中处于相同区域段的数据全部一致的时间点。
10.如权利要求9所述的装置,其特征在于,还包括:
第二修改单元,用于修改所述第一分区的分区名;
删除单元,用于在将所述第一分区的分区名修改之后,删除所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段;
设置单元,用于在将所述第一分区中存储的所述目标数据以及所述目标数据对应的区域段删除之后,设置所述第二分区的分区名,以使所述第二分区在所述数据库中进行生效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510134427.5A CN104765794B (zh) | 2015-03-25 | 2015-03-25 | 一种数据库分区方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510134427.5A CN104765794B (zh) | 2015-03-25 | 2015-03-25 | 一种数据库分区方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104765794A true CN104765794A (zh) | 2015-07-08 |
CN104765794B CN104765794B (zh) | 2018-10-09 |
Family
ID=53647625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510134427.5A Active CN104765794B (zh) | 2015-03-25 | 2015-03-25 | 一种数据库分区方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104765794B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294828A (zh) * | 2016-08-17 | 2017-01-04 | 华云科技有限公司 | 分区分片高qps数据持久化方案 |
CN106815318A (zh) * | 2016-12-24 | 2017-06-09 | 上海七牛信息技术有限公司 | 一种时序数据库的集群化方法及系统 |
CN107391755A (zh) * | 2017-08-21 | 2017-11-24 | 中国银联股份有限公司 | 一种数据分布调节、查询的方法和装置 |
CN107679200A (zh) * | 2017-10-11 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种在线数据迁移方法及装置 |
CN110019148A (zh) * | 2018-09-07 | 2019-07-16 | 网联清算有限公司 | 数据库容量管理方法、装置、存储介质及计算机设备 |
WO2019174608A1 (zh) * | 2018-03-15 | 2019-09-19 | 华为技术有限公司 | 一种数据处理方法及其相关设备 |
CN110825794A (zh) * | 2018-08-14 | 2020-02-21 | 华为技术有限公司 | 分区合并方法和数据库服务器 |
CN114064682A (zh) * | 2022-01-17 | 2022-02-18 | 睿至科技集团有限公司 | 一种基于大数据的信息处理方法及系统 |
CN114491197A (zh) * | 2022-04-18 | 2022-05-13 | 孔智科技(徐州)有限公司 | 一种基于大数据的数据库扩展方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010039550A1 (en) * | 1998-12-28 | 2001-11-08 | Gianfranco Putzolu | Partitioning ownership of a databse among different database servers to control access to the database |
CN102567428A (zh) * | 2010-12-30 | 2012-07-11 | 中国移动通信集团浙江有限公司 | 一种在线数据生命周期管理方法和装置 |
CN102982085A (zh) * | 2012-10-31 | 2013-03-20 | 北京奇虎科技有限公司 | 数据迁移系统和方法 |
-
2015
- 2015-03-25 CN CN201510134427.5A patent/CN104765794B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010039550A1 (en) * | 1998-12-28 | 2001-11-08 | Gianfranco Putzolu | Partitioning ownership of a databse among different database servers to control access to the database |
CN102567428A (zh) * | 2010-12-30 | 2012-07-11 | 中国移动通信集团浙江有限公司 | 一种在线数据生命周期管理方法和装置 |
CN102982085A (zh) * | 2012-10-31 | 2013-03-20 | 北京奇虎科技有限公司 | 数据迁移系统和方法 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294828B (zh) * | 2016-08-17 | 2019-05-21 | 华云科技有限公司 | 一种分区分片高qps数据持久化方法 |
CN106294828A (zh) * | 2016-08-17 | 2017-01-04 | 华云科技有限公司 | 分区分片高qps数据持久化方案 |
CN106815318B (zh) * | 2016-12-24 | 2020-08-04 | 上海七牛信息技术有限公司 | 一种时序数据库的集群化方法及系统 |
CN106815318A (zh) * | 2016-12-24 | 2017-06-09 | 上海七牛信息技术有限公司 | 一种时序数据库的集群化方法及系统 |
CN107391755A (zh) * | 2017-08-21 | 2017-11-24 | 中国银联股份有限公司 | 一种数据分布调节、查询的方法和装置 |
CN107679200A (zh) * | 2017-10-11 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种在线数据迁移方法及装置 |
CN110275772B (zh) * | 2018-03-15 | 2022-12-13 | 华为云计算技术有限公司 | 一种数据处理方法及其相关设备 |
WO2019174608A1 (zh) * | 2018-03-15 | 2019-09-19 | 华为技术有限公司 | 一种数据处理方法及其相关设备 |
CN110275772A (zh) * | 2018-03-15 | 2019-09-24 | 华为技术有限公司 | 一种数据处理方法及其相关设备 |
CN110825794A (zh) * | 2018-08-14 | 2020-02-21 | 华为技术有限公司 | 分区合并方法和数据库服务器 |
CN110825794B (zh) * | 2018-08-14 | 2022-03-29 | 华为云计算技术有限公司 | 分区合并方法和数据库服务器 |
US11762881B2 (en) | 2018-08-14 | 2023-09-19 | Huawei Cloud Computing Technologies Co., Ltd. | Partition merging method and database server |
CN110019148B (zh) * | 2018-09-07 | 2021-05-25 | 网联清算有限公司 | 数据库容量管理方法、装置、存储介质及计算机设备 |
CN110019148A (zh) * | 2018-09-07 | 2019-07-16 | 网联清算有限公司 | 数据库容量管理方法、装置、存储介质及计算机设备 |
CN114064682A (zh) * | 2022-01-17 | 2022-02-18 | 睿至科技集团有限公司 | 一种基于大数据的信息处理方法及系统 |
CN114064682B (zh) * | 2022-01-17 | 2022-04-08 | 睿至科技集团有限公司 | 一种基于大数据的信息处理方法及系统 |
CN114491197A (zh) * | 2022-04-18 | 2022-05-13 | 孔智科技(徐州)有限公司 | 一种基于大数据的数据库扩展方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104765794B (zh) | 2018-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104765794A (zh) | 一种数据库分区方法及装置 | |
CN102929884B (zh) | 一种收缩虚拟磁盘镜像文件的方法及装置 | |
US7904426B2 (en) | System and method for identifying a removable storage device | |
CN101458632B (zh) | 数据对象复制/粘贴转移方法及装置 | |
US5893119A (en) | Computer apparatus and method for merging system deltas | |
US7552150B2 (en) | Reason-based database changes | |
JP2011086241A (ja) | データベースの複製を生成する装置及び方法 | |
GB2390708A (en) | Folder and document access rights management system | |
CN101981550A (zh) | 数据库系统、数据库更新方法、数据库以及数据库更新程序 | |
KR20160100216A (ko) | 대량 오디오 지문 데이터베이스의 온라인 실시간 업데이트를 구축하는 방법과 장치 | |
JPH10207754A (ja) | 更新系データベースの複製方式 | |
CN112000426B (zh) | 一种数据处理方法及装置 | |
CN103339615A (zh) | 存储系统 | |
US6625607B1 (en) | Method of comparing parts | |
CN100403269C (zh) | 用于管理关于目标卷与源卷之间关系的信息的方法和系统 | |
CN107357691B (zh) | 镜像文件的处理方法及装置 | |
CN115658391A (zh) | 基于QianBase MPP数据库的WAL机制的备份恢复方法 | |
JP2005316708A (ja) | 階層記憶装置、その復旧方法、及び復旧プログラム | |
CN103180848B (zh) | 一种用于复制数据的系统和方法 | |
CN104407932B (zh) | 一种数据备份方法及装置 | |
JP5240086B2 (ja) | データ管理プログラム | |
CN112860486B (zh) | 创建数据副本的方法及装置 | |
CN114356232B (zh) | 数据读写方法和装置 | |
CN114442942B (zh) | 一种数据迁移方法、系统、设备及存储介质 | |
CN115203488B (zh) | 一种图数据库管理方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |