CN108319596A - 一种数据库的扩容方法和装置 - Google Patents

一种数据库的扩容方法和装置 Download PDF

Info

Publication number
CN108319596A
CN108319596A CN201710029458.3A CN201710029458A CN108319596A CN 108319596 A CN108319596 A CN 108319596A CN 201710029458 A CN201710029458 A CN 201710029458A CN 108319596 A CN108319596 A CN 108319596A
Authority
CN
China
Prior art keywords
database instance
library
data
expanded
target
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.)
Pending
Application number
CN201710029458.3A
Other languages
English (en)
Inventor
姜超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710029458.3A priority Critical patent/CN108319596A/zh
Publication of CN108319596A publication Critical patent/CN108319596A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种数据库的扩容方法和装置,所述方法包括:确定待扩容的数据库实例对象;获取所述待扩容的数据库实例对象的备份数据;采用所述备份数据生成目标数据库实例对象;同步所述待扩容的数据库实例对象和所述目标数据库实例对象;清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象,本申请实施例能够在不影响用户业务的情况下,动态将用户数据从不同的存储节点扩容到更多的存储节点上,能够解决在用户数据增多时,少量存储节点无法容纳用户数据的问题。

Description

一种数据库的扩容方法和装置
技术领域
本申请涉及数据库技术领域,特别是涉及一种数据库的扩容方法和一种数据库的扩容装置。
背景技术
分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。
随着用户数据量的增多,分布式数据库中的数据无法被已有的数据库实例完全存储,此时需要对数据库进行扩容,将数据迁移至其他数据库实例上。在现有技术中,对分布式数据库进行扩容主要通过如下两种方式来实现,一是停掉原数据库实例的副本,并将待迁移的数据拷贝到目标数据实例上,然后在目标数据实例上恢复出来;二是将待迁移的数据导出来,然后复制到目标数据实例进行恢复。
但是,停掉数据库实例的副本,会严重影响数据库的可靠性,增大数据备份的风险;此外,采用将待迁移的数据导出来的方式,由于数据量过大,使得迁移的效率较低,消耗大量的系统资源,在迁移时,也会增大主库与副本之间的数据延迟。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据库的扩容方法和相应的一种数据库的扩容装置。
为了解决上述问题,本申请公开了一种数据库的扩容方法,包括:
确定待扩容的数据库实例对象;
获取所述待扩容的数据库实例对象的备份数据;
采用所述备份数据生成目标数据库实例对象;
同步所述待扩容的数据库实例对象和所述目标数据库实例对象;
清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象。
可选地,所述确定待扩容的数据库实例对象的步骤包括:
确定包括有至少三个数据分库的数据库实例对象为待扩容的数据库实例对象。
可选地,所述采用所述备份数据生成目标数据库实例对象的步骤包括:
创建目标数据库实例对象;
在所述目标数据库实例对象中对所述备份数据进行恢复。
可选地,所述备份数据具有关联的备份时间,所述同步所述待扩容的数据库实例对象和所述目标数据库实例对象的步骤包括:
同步所述备份时间之后的所述待扩容的数据库实例对象中的数据至所述目标数据库实例对象。
可选地,所述待扩容的数据库实例对象包括数据库实例对象主库,所述目标数据库实例对象包括目标数据库实例对象主库,所述同步所述备份时间之后的所述待扩容的数据库实例对象中的数据至所述目标数据库实例对象的步骤包括:
建立所述数据库实例对象主库与所述目标数据库实例对象主库之间的数据通道;
采用所述数据通道,获取所述备份时间之后的所述数据库实例对象主库中的日志文件;
储存所述日志文件至所述目标数据库实例对象主库。
可选地,所述待扩容的数据库实例对象还包括数据库实例对象备库,在所述建立所述数据库实例对象主库与所述目标数据库实例对象主库之间的数据通道的步骤前,还包括:
删除待扩容的数据库实例对象主库与备库之间的数据通道。
可选地,所述清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象的步骤包括:
分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库;
删除所述待扩容的数据库实例对象的目标数据分库中的数据;
删除所述目标数据库实例对象的非目标数据分库中的数据。
可选地,所述分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库的步骤包括:
分别获取待扩容的数据库实例对象和目标数据库实例对象中的一个或多个数据分库的磁盘大小;
按照所述磁盘大小,对所述一个或多个数据分库进行升序排序;
确定所述待扩容的数据库实例对象中的前N/2个数据分库为目标数据分库;
确定所述目标数据库实例对象中的后N/2个数据分库为非目标数据分库,其中,N为数据分库的个数。
可选地,在所述分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库的步骤后,还包括:
切换所述待扩容的数据库实例对象的目标数据分库的流量至目标数据库实例对象。
可选地,所述切换所述待扩容的数据库实例对象的目标数据分库的流量至目标数据库实例对象的步骤包括:
当所述待扩容的数据库实例对象与目标数据库实例对象的数据间距小于预设阈值时,锁定用户针对所述待扩容的数据库实例对象的操作请求,所述操作请求具有相应的请求路径;
更新所述请求路径至所述目标数据库实例对象;
释放锁定的所述用户的操作请求。
为了解决上述问题,本申请公开了一种数据库的扩容装置,包括:
确定模块,用于确定待扩容的数据库实例对象;
获取模块,用于获取所述待扩容的数据库实例对象的备份数据;
生成模块,用于采用所述备份数据生成目标数据库实例对象;
同步模块,用于同步所述待扩容的数据库实例对象和所述目标数据库实例对象;
清理模块,用于清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象。
可选地,所述确定模块包括:
第一确定子模块,用于确定包括有至少三个数据分库的数据库实例对象为待扩容的数据库实例对象。
可选地,所述生成模块包括:
创建子模块,用于创建目标数据库实例对象;
恢复子模块,用于在所述目标数据库实例对象中对所述备份数据进行恢复。
可选地,所述备份数据具有关联的备份时间,所述同步模块包括:
同步子模块,用于同步所述备份时间之后的所述待扩容的数据库实例对象中的数据至所述目标数据库实例对象。
可选地,所述待扩容的数据库实例对象包括数据库实例对象主库,所述目标数据库实例对象包括目标数据库实例对象主库,所述同步子模块包括:
建立单元,用于建立所述数据库实例对象主库与所述目标数据库实例对象主库之间的数据通道;
第一获取单元,用于采用所述数据通道,获取所述备份时间之后的所述数据库实例对象主库中的日志文件;
储存单元,用于储存所述日志文件至所述目标数据库实例对象主库。
可选地,所述待扩容的数据库实例对象还包括数据库实例对象备库,所述同步子模块还包括:
删除单元,用于删除待扩容的数据库实例对象主库与备库之间的数据通道。
可选地,所述清理模块包括:
第二确定子模块,用于分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库;
第一删除子模块,用于删除所述待扩容的数据库实例对象的目标数据分库中的数据;
第二删除子模块,用于删除所述目标数据库实例对象的非目标数据分库中的数据。
可选地,所述第二确定子模块包括:
第二获取单元,用于分别获取待扩容的数据库实例对象和目标数据库实例对象中的一个或多个数据分库的磁盘大小;
排序单元,用于按照所述磁盘大小,对所述一个或多个数据分库进行升序排序;
第一确定单元,用于确定所述待扩容的数据库实例对象中的前N/2个数据分库为目标数据分库;
第二确定单元,用于确定所述目标数据库实例对象中的后N/2个数据分库为非目标数据分库,其中,N为数据分库的个数。
可选地,所述清理模块还包括:
切换子模块,用于切换所述待扩容的数据库实例对象的目标数据分库的流量至目标数据库实例对象。
可选地,所述切换子模块包括:
锁定单元,用于在所述待扩容的数据库实例对象与目标数据库实例对象的数据间距小于预设阈值时,锁定用户针对所述待扩容的数据库实例对象的操作请求,所述操作请求具有相应的请求路径;
更新单元,用于更新所述请求路径至所述目标数据库实例对象;
释放单元,用于释放锁定的所述用户的操作请求。
与背景技术相比,本申请实施例包括以下优点:
本申请实施例,通过确定待扩容的数据库实例对象,获取所述待扩容的数据库实例对象的备份数据,然后采用所述备份数据生成目标数据库实例对象,同步所述待扩容的数据库实例对象和所述目标数据库实例对象后,并清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象,能够在不影响用户业务的情况下,动态将用户数据从不同的存储节点(分布式数据)扩容到更多的存储节点上,能够解决在用户数据增多时,少量存储节点无法容纳用户数据的问题。
第二,本申请实施例在整个数据库的扩容过程中,无需停掉任何一个数据库实例对象的副本,不会牺牲任一存储节点副本的可用性,能够在机器异常或其他异常导致主库不可用的情况下,及时切换到备库,保证了系统的稳定性。
附图说明
图1是本申请的一种数据库的扩容方法实施例的步骤流程图;
图2是本申请的一种分布式数据库的结构示意图;
图3是本申请的数据库的扩容方法的原理图;
图4是本申请的一种数据库的扩容装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请的一种数据库的扩容方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,确定待扩容的数据库实例对象;
具体地,所述数据库可以是分布式数据库。分布式数据库通常使用较小的计算机系统,每台计算机可以单独存放在一个地方,每台计算机中都可能有DBMS(DatabaseManagement System,数据库管理系统)的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库。通过将位于不同地点的许多计算机通过网络互相连接,能够共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
通常,在分布式数据库中,存储用户数据的数据节点可以是MySQL数据库,MySQL是一个关联型数据库管理系统,关联数据库可以将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,从而提高了数据库的速度,并增强了数据库存储的灵活性。
通常,分布式数据库可以包括有多个数据库实例对象,每个数据库实例对象上又可以存在多个数据分库,每个数据分库在逻辑层面上又可以被分割为多份。例如,对于规格为32dbs-128bu的分布式数据库,每个数据库实例对象上的数据可以被存储在32个数据分库(db)上,同时数据分库的数据又被分成了128个bucket(桶,bu),因此,每个数据分库存在128/32=4个bu,每个bu用于存放用户的一部分数据。用户数据的存储规则可以根据分区字段进行哈希(HASH)计算,决定数据应该被放入哪个bu。
如图2所示,是本申请的一种分布式数据库的结构示意图。在图2中,每个schema对应于一个db,对于32dbs-128bu规格的数据库,可以包括有32个db,每个db上的数据可以被存储在4个bu中,每个bu又包括有主库M,每个主库M具有相应的备库S。需要说明的是,在图2中,仅仅示出了schema1和schema2两个db,并未将每个db以及对应的主库和备库全部示出,本领域技术人员可以理解图2仅仅是本申请的分布式数据库的结构示意图的一部分,而非完整的结构示意图。
但是,随着用户数据量的增多,已有的数据库实例对象可能无法继续存储新增的用户数据,因此,需要对数据库进行扩容,将用户数据迁移至其他的数据库实例对象上。
在本申请实施例中,在对数据库进行扩容时,首先需要确定出待扩容的数据库实例对象是哪一个。
通常,用户数据可以存储在不同的数据分库中,每个数据库实例对象可以包括有多个数据分库。例如,一个数据库实例对象可以仅仅包括metadb和dbname1两个数据分库,也可以包括metadb、dbname1、dbname2、dbname3等多个数据分库,其中metadb分库为存储用户表定义的数据库,任何一个数据库实例对象均包括一个metadb分库,而dbname1、dbname2、dbname3等则是用于存储用户数据的分库。
在本申请实施例中,在确定待扩容的数据库实例对象时可以选择除metadb分库外,数据分库的个数大于1个的数据库实例对象为待扩容的数据库实例对象。由于任何一个数据库实例对象均包括一个metadb分库,因此,可以确定包括有至少三个数据分库的数据库实例对象为待扩容的数据库实例对象。当然,本领域技术人员还可以根据实际需要,按照其他方式确定待扩容的数据库实例对象,本申请实施例对此不作限定。
步骤102,获取所述待扩容的数据库实例对象的备份数据;
在本申请实施例中,在确定出待扩容的数据库实例对象后,可以进一步获取所述待扩容的数据库实例对象的备份数据,所述备份数据可以是待扩容的数据库实例对象的有效备份集,即能够成功恢复到数据库某个指定时间点的数据副本,从而在整个扩容方案中能够起到恢复数据的作用。
在具体实现中,获取的有效备份集可以是可恢复且已经成功上传至OSS(ObjectStorage Service,对象存储)的备份集。OSS是一种对外提供海量、安全和高可靠的云存储服务,在OSS中,用户的每个文件都是一个Object(对象),其文件大小可以根据上传数据方式的不同而不同。
同时,本申请实施例中的备份数据还可以具有关联的备份时间,每个有效备份集在截至备份时间到当前时刻的日志文件Binlog应该在主机Host或OSS端存在,从而可以采用该部分Binlog供后续源实例和克隆实例之间的数据同步之用。Binlog是MySQL数据库的二进制日志文件,可以用于副本间数据同步之用,通过采用数据库备份集+Binlog的方式可以恢复出用户指定时间点数据。
步骤103,采用所述备份数据生成目标数据库实例对象;
在本申请实施例中,获取到待扩容的数据库实例对象的备份数据后,可以采用所述备份数据生成目标数据库实例对象。具体地,可以首先创建一个目标数据库实例对象,然后在所述目标数据库实例对象中对所述备份数据进行恢复。
例如,可以在获得待扩容的数据库实例对象的有效备份集后,在与待扩容的数据库实例对象不同的机器上,创建一个MySQL实例,然后使用xtrabackup等数据备份工具将有效备份集在创建的MySQL实例中恢复出来。
在将有效备份集在创建的目标数据库实例对象中恢复出来后,所述目标数据库实例对象中所包括的数据便与待扩容的数据库实例对象在备份时间之前的数据是完全相同的了。
步骤104,同步所述待扩容的数据库实例对象和所述目标数据库实例对象;
在本申请实施例中,由于备份数据具有关联的备份时间,因此在将备份数据在目标数据库实例对象中恢复出来后,还需要将备份时间之后到当前时刻在待扩容的数据库实例对象中所存储或产生的用户数据同步至目标数据库实例对象,即同步所述备份时间之后的所述待扩容的数据库实例对象中的数据至所述目标数据库实例对象。
通常,为了保证数据库的高可用性,一个数据库实例对象可以包括有一个主库以及一个或多个备库,备库用于备份主库的数据,从而在主库不可用时,可以启用备库向用户提供服务。
在本申请实施例中,待扩容的数据库实例对象可以包括有待扩容的数据库实例对象主库与备库,主备和备库之间具有一数据通道,在数据库运行过程中,通过该数据通道,备库可以获取主库的数据,用以备份。
在具体实现中,可以首先删除待扩容的数据库实例对象主库与备库之间的数据通道,然后建立所述数据库实例对象主库与所述目标数据库实例对象主库之间的数据通道,采用所述数据通道,获取所述备份时间之后的所述数据库实例对象主库中的日志文件;并储存所述日志文件至所述目标数据库实例对象主库,从而可以将备份时间之后至当前时刻在待扩容的数据库实例对象中产生的数据同步至目标数据库实例对象。
步骤105,清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象。
在本申请实施例中,在完成待扩容的数据库实例对象与目标数据库实例对象之间的数据同步后,可以进一步对同步后的待扩容的数据库实例对象和目标数据库实例对象中的数据进行清理,即清理掉待扩容的数据库实例对象和目标数据库实例对象中的无效数据,以完成数据库的扩容。
在本申请实施例中,可以首先分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库。
在完成待扩容的数据库实例对象与目标数据库实例对象之间的数据同步后,所述待扩容的数据库实例对象与目标数据库实例对象中所包括的数据分库均是相同的,因此,可以进一步确定出需要迁移的数据分库,即待扩容的数据库实例对象中的目标数据分库,以及需要保留在原有的待扩容数据库实例对象上的数据分库,即非目标数据分库。同样的,对于目标数据库实例对象上的数据分库,则是需要保留目标数据分库,而无需保留非目标数据分库。
在本申请的一种优选示例中,可以分别获取待扩容的数据库实例对象和目标数据库实例对象中的一个或多个数据分库的磁盘大小,然后按照所述磁盘大小,对所述一个或多个数据分库进行升序排序,并确定所述待扩容的数据库实例对象中的前N/2个数据分库为目标数据分库,确定所述目标数据库实例对象中的后N/2个数据分库为非目标数据分库,其中,N为数据分库的个数。
当然,本领域技术人员也可以选择其他方式,例如对多个数据分库按照降序排序,从而确定目标数据分库和非目标数据分库;在确定目标数据分库和非目标数据分库时,还可以根据实际需要,选择其他个数的数据分库作为目标数据分库,例如,在按照磁盘大小升序排序时,可以确定待扩容的数据库实例对象中的前N/3个数据分库为目标数据分库,而将目标数据库实例对象中的后2N/3个数据分库为非目标数据分库,本申请实施例对此均不作限定。
在本申请实施例中,在分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库的步骤后,还可以切换所述待扩容的数据库实例对象的目标数据分库的流量至目标数据库实例对象。切换数据库流量可以将用户存储数据的路径更新到目标数据库实例。
在具体实现中,可以再次对待扩容的数据库实例对象和目标数据库实例对象中的数据进行同步,当所述待扩容的数据库实例对象与目标数据库实例对象的数据间距小于预设阈值时,锁定用户针对所述待扩容的数据库实例对象的操作请求。所述数据间距可以是目标数据实例对象与待扩容的数据实例对象之间的数据差距,当然,本领域技术人员可以根据实际需要具体确定预设阈值的大小,本申请实施例对此不作限定。
进一步地,用户操作请求可以具有相应的请求路径,本申请实施例在将待扩容的数据库实例对象中的部分数据分库迁移至目标数据库实例对象后,还需要更新所述请求路径至所述目标数据库实例对象,使用户在存储数据时,可以指向迁移后的目标数据库实例。在完成用户的请求路径更新后,可以释放锁定的所述用户的操作请求。
当完成数据库的流量切换后,便可以在确定出待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库的基础上,删除所述待扩容的数据库实例对象的目标数据分库中的数据,以及,删除所述目标数据库实例对象的非目标数据分库中的数据,完成数据库的扩容过程。
本申请实施例,通过确定待扩容的数据库实例对象,获取所述待扩容的数据库实例对象的备份数据,然后采用所述备份数据生成目标数据库实例对象,同步所述待扩容的数据库实例对象和所述目标数据库实例对象后,并清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象,能够在不影响用户业务的情况下,动态将用户数据在不同的存储节点(分布式数据)扩容到更多的存储节点上,能够解决在用户数据增多时,少量存储节点无法容纳用户数据的问题。
第二,本申请实施例在整个数据库的扩容过程中,无需停掉任何一个数据库实例对象的副本,不会牺牲任一存储节点副本的可用性,能够在机器异常或其他异常导致主库不可用的情况下,及时切换到备库,保证了系统的稳定性。
参照图3,是本申请的数据库的扩容方法的原理图。为了便于理解,下面以一个完整的示例对本申请的数据库的扩容方法作一详细介绍。
1、当分布式数据库中某个数据库实例对象存储的数据较多,存储空间占用率较高时,可以考虑对该数据库实例对象进行扩容,将其中一部分数据分库的数据迁移到其他的数据库实例对象上。
2、在确定出待扩容的数据库实例对象后,可以首先获取该数据库实例对象的有效备份集。具体地,可以判断待扩容的数据库实例对象是否具有有效备份集,如果存在有效备份集,则可以直接获取已备份的有效备份集;如果不存在有效备份集,则需要对待扩容的数据库实例对象进行数据备份。
3、在获取有效备份集后,可以创建一目标数据库实例对象,并将获得的有效备份集克隆至所述目标数据库实例对象中。由于有效备份集通常具有关联的备份时间,因此,在克隆完成后,还需要对待扩容的数据库实例对象和目标数据库实例对象进行数据同步,以将备份时间之后至当前时刻在待扩容的数据库实例对象中产生的数据同步至目标数据库实例对象。
4、数据同步完成后,可以开始计算数据清理计划,即计算出待扩容的数据库实例对象中需要迁移的数据分库的个数。具体地,可以分别将待扩容的数据库实例对象和目标数据库实例对象中的数据分库按磁盘大小进行升序排序,以待扩容的数据库实例对象中的前N/2个数据分库为需要迁移的目标数据分库,其中N为数据分库的个数。
5、对待扩容的数据库实例对象和目标数据库实例对象进行第二次数据同步,当二者之间的数据间距小于某一预设阈值时,可以进行流量切换,即待扩容的数据库实例对象中的前N/2个数据分库的数据请求路径更新至目标数据库实例对象。
6、完成流量切换后,便可以执行上述步骤4中计算的清理计划,回收待扩容的数据库实例对象中的前N/2个数据分库的数据,和目标数据库实例对象中的后N/2个数据分库的数据,从而完成整个数据库的扩容过程。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图4,示出了本申请的一种数据库的扩容装置实施例的结构框图,具体可以包括如下模块:
确定模块401,用于确定待扩容的数据库实例对象;
获取模块402,用于获取所述待扩容的数据库实例对象的备份数据;
生成模块403,用于采用所述备份数据生成目标数据库实例对象;
同步模块404,用于同步所述待扩容的数据库实例对象和所述目标数据库实例对象;
清理模块405,用于清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象。
在本申请实施例中,所述确定模块401具体可以包括如下子模块:
第一确定子模块,用于确定包括有至少三个数据分库的数据库实例对象为待扩容的数据库实例对象。
在本申请实施例中,所述生成模块403具体可以包括如下子模块:
创建子模块,用于创建目标数据库实例对象;
恢复子模块,用于在所述目标数据库实例对象中对所述备份数据进行恢复。
在本申请实施例中,所述备份数据可以具有关联的备份时间,所述同步模块404具体可以包括如下子模块:
同步子模块,用于同步所述备份时间之后的所述待扩容的数据库实例对象中的数据至所述目标数据库实例对象。
在本申请实施例中,所述待扩容的数据库实例对象包括数据库实例对象主库,所述目标数据库实例对象包括目标数据库实例对象主库,所述同步子模块具体可以包括如下单元:
建立单元,用于建立所述数据库实例对象主库与所述目标数据库实例对象主库之间的数据通道;
第一获取单元,用于采用所述数据通道,获取所述备份时间之后的所述数据库实例对象主库中的日志文件;
储存单元,用于储存所述日志文件至所述目标数据库实例对象主库。
在本申请实施例中,所述待扩容的数据库实例对象还可以包括数据库实例对象备库,所述同步子模块还可以包括如下单元:
删除单元,用于删除待扩容的数据库实例对象主库与备库之间的数据通道。
在本申请实施例中,所述清理模块405具体可以包括如下子模块:
第二确定子模块,用于分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库;
第一删除子模块,用于删除所述待扩容的数据库实例对象的目标数据分库中的数据;
第二删除子模块,用于删除所述目标数据库实例对象的非目标数据分库中的数据。
在本申请实施例中,所述第二确定子模块具体可以包括如下单元:
第二获取单元,用于分别获取待扩容的数据库实例对象和目标数据库实例对象中的一个或多个数据分库的磁盘大小;
排序单元,用于按照所述磁盘大小,对所述一个或多个数据分库进行升序排序;
第一确定单元,用于确定所述待扩容的数据库实例对象中的前N/2个数据分库为目标数据分库;
第二确定单元,用于确定所述目标数据库实例对象中的后N/2个数据分库为非目标数据分库,其中,N为数据分库的个数。
在本申请实施例中,所述清理模块405还可以包括如下子模块:
切换子模块,用于切换所述待扩容的数据库实例对象的目标数据分库的流量至目标数据库实例对象。
在本申请实施例中,所述切换子模块具体可以包括如下单元:
锁定单元,用于在所述待扩容的数据库实例对象与目标数据库实例对象的数据间距小于预设阈值时,锁定用户针对所述待扩容的数据库实例对象的操作请求,所述操作请求具有相应的请求路径;
更新单元,用于更新所述请求路径至所述目标数据库实例对象;
释放单元,用于释放锁定的所述用户的操作请求。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据库的扩容方法和一种数据库的扩容装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (20)

1.一种数据库的扩容方法,其特征在于,包括:
确定待扩容的数据库实例对象;
获取所述待扩容的数据库实例对象的备份数据;
采用所述备份数据生成目标数据库实例对象;
同步所述待扩容的数据库实例对象和所述目标数据库实例对象;
清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象。
2.根据权利要求1所述的方法,其特征在于,所述确定待扩容的数据库实例对象的步骤包括:
确定包括有至少三个数据分库的数据库实例对象为待扩容的数据库实例对象。
3.根据权利要求1所述的方法,其特征在于,所述采用所述备份数据生成目标数据库实例对象的步骤包括:
创建目标数据库实例对象;
在所述目标数据库实例对象中对所述备份数据进行恢复。
4.根据权利要求1所述的方法,其特征在于,所述备份数据具有关联的备份时间,所述同步所述待扩容的数据库实例对象和所述目标数据库实例对象的步骤包括:
同步所述备份时间之后的所述待扩容的数据库实例对象中的数据至所述目标数据库实例对象。
5.根据权利要求4所述的方法,其特征在于,所述待扩容的数据库实例对象包括数据库实例对象主库,所述目标数据库实例对象包括目标数据库实例对象主库,所述同步所述备份时间之后的所述待扩容的数据库实例对象中的数据至所述目标数据库实例对象的步骤包括:
建立所述数据库实例对象主库与所述目标数据库实例对象主库之间的数据通道;
采用所述数据通道,获取所述备份时间之后的所述数据库实例对象主库中的日志文件;
储存所述日志文件至所述目标数据库实例对象主库。
6.根据权利要求5所述的方法,其特征在于,所述待扩容的数据库实例对象还包括数据库实例对象备库,在所述建立所述数据库实例对象主库与所述目标数据库实例对象主库之间的数据通道的步骤前,还包括:
删除待扩容的数据库实例对象主库与备库之间的数据通道。
7.根据权利要求1所述的方法,其特征在于,所述清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象的步骤包括:
分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库;
删除所述待扩容的数据库实例对象的目标数据分库中的数据;
删除所述目标数据库实例对象的非目标数据分库中的数据。
8.根据权利要求7所述的方法,其特征在于,所述分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库的步骤包括:
分别获取待扩容的数据库实例对象和目标数据库实例对象中的一个或多个数据分库的磁盘大小;
按照所述磁盘大小,对所述一个或多个数据分库进行升序排序;
确定所述待扩容的数据库实例对象中的前N/2个数据分库为目标数据分库;
确定所述目标数据库实例对象中的后N/2个数据分库为非目标数据分库,其中,N为数据分库的个数。
9.根据权利要求7或8所述的方法,其特征在于,在所述分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库的步骤后,还包括:
切换所述待扩容的数据库实例对象的目标数据分库的流量至目标数据库实例对象。
10.根据权利要求9所述的方法,其特征在于,所述切换所述待扩容的数据库实例对象的目标数据分库的流量至目标数据库实例对象的步骤包括:
当所述待扩容的数据库实例对象与目标数据库实例对象的数据间距小于预设阈值时,锁定用户针对所述待扩容的数据库实例对象的操作请求,所述操作请求具有相应的请求路径;
更新所述请求路径至所述目标数据库实例对象;
释放锁定的所述用户的操作请求。
11.一种数据库的扩容装置,其特征在于,包括:
确定模块,用于确定待扩容的数据库实例对象;
获取模块,用于获取所述待扩容的数据库实例对象的备份数据;
生成模块,用于采用所述备份数据生成目标数据库实例对象;
同步模块,用于同步所述待扩容的数据库实例对象和所述目标数据库实例对象;
清理模块,用于清理同步后的所述待扩容的数据库实例对象和所述目标数据库实例对象。
12.根据权利要求11所述的装置,其特征在于,所述确定模块包括:
第一确定子模块,用于确定包括有至少三个数据分库的数据库实例对象为待扩容的数据库实例对象。
13.根据权利要求11所述的装置,其特征在于,所述生成模块包括:
创建子模块,用于创建目标数据库实例对象;
恢复子模块,用于在所述目标数据库实例对象中对所述备份数据进行恢复。
14.根据权利要求11所述的装置,其特征在于,所述备份数据具有关联的备份时间,所述同步模块包括:
同步子模块,用于同步所述备份时间之后的所述待扩容的数据库实例对象中的数据至所述目标数据库实例对象。
15.根据权利要求14所述的装置,其特征在于,所述待扩容的数据库实例对象包括数据库实例对象主库,所述目标数据库实例对象包括目标数据库实例对象主库,所述同步子模块包括:
建立单元,用于建立所述数据库实例对象主库与所述目标数据库实例对象主库之间的数据通道;
第一获取单元,用于采用所述数据通道,获取所述备份时间之后的所述数据库实例对象主库中的日志文件;
储存单元,用于储存所述日志文件至所述目标数据库实例对象主库。
16.根据权利要求15所述的装置,其特征在于,所述待扩容的数据库实例对象还包括数据库实例对象备库,所述同步子模块还包括:
删除单元,用于删除待扩容的数据库实例对象主库与备库之间的数据通道。
17.根据权利要求11所述的装置,其特征在于,所述清理模块包括:
第二确定子模块,用于分别确定待扩容的数据库实例对象中的目标数据分库和目标数据库实例对象中的非目标数据分库;
第一删除子模块,用于删除所述待扩容的数据库实例对象的目标数据分库中的数据;
第二删除子模块,用于删除所述目标数据库实例对象的非目标数据分库中的数据。
18.根据权利要求17所述的装置,其特征在于,所述第二确定子模块包括:
第二获取单元,用于分别获取待扩容的数据库实例对象和目标数据库实例对象中的一个或多个数据分库的磁盘大小;
排序单元,用于按照所述磁盘大小,对所述一个或多个数据分库进行升序排序;
第一确定单元,用于确定所述待扩容的数据库实例对象中的前N/2个数据分库为目标数据分库;
第二确定单元,用于确定所述目标数据库实例对象中的后N/2个数据分库为非目标数据分库,其中,N为数据分库的个数。
19.根据权利要求17或18所述的装置,其特征在于,所述清理模块还包括:
切换子模块,用于切换所述待扩容的数据库实例对象的目标数据分库的流量至目标数据库实例对象。
20.根据权利要求19所述的装置,其特征在于,所述切换子模块包括:
锁定单元,用于在所述待扩容的数据库实例对象与目标数据库实例对象的数据间距小于预设阈值时,锁定用户针对所述待扩容的数据库实例对象的操作请求,所述操作请求具有相应的请求路径;
更新单元,用于更新所述请求路径至所述目标数据库实例对象;
释放单元,用于释放锁定的所述用户的操作请求。
CN201710029458.3A 2017-01-16 2017-01-16 一种数据库的扩容方法和装置 Pending CN108319596A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710029458.3A CN108319596A (zh) 2017-01-16 2017-01-16 一种数据库的扩容方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710029458.3A CN108319596A (zh) 2017-01-16 2017-01-16 一种数据库的扩容方法和装置

Publications (1)

Publication Number Publication Date
CN108319596A true CN108319596A (zh) 2018-07-24

Family

ID=62890854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710029458.3A Pending CN108319596A (zh) 2017-01-16 2017-01-16 一种数据库的扩容方法和装置

Country Status (1)

Country Link
CN (1) CN108319596A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109120678A (zh) * 2018-07-26 2019-01-01 北京百度网讯科技有限公司 用于分布式存储系统的服务托管的方法和装置
CN109271376A (zh) * 2018-11-30 2019-01-25 北京锐安科技有限公司 数据库升级方法、装置、设备及存储介质
CN110019148A (zh) * 2018-09-07 2019-07-16 网联清算有限公司 数据库容量管理方法、装置、存储介质及计算机设备
CN110489494A (zh) * 2019-08-27 2019-11-22 中国工商银行股份有限公司 分布式数据库在线扩容方法及装置
CN110851427A (zh) * 2019-11-19 2020-02-28 泰康保险集团股份有限公司 数据库容量变更方法和装置
CN111400273A (zh) * 2019-11-19 2020-07-10 杭州海康威视系统技术有限公司 数据库扩容方法、装置、电子设备及机器可读存储介质
CN111459913A (zh) * 2020-03-31 2020-07-28 北京金山云网络技术有限公司 分布式数据库的容量扩展方法、装置及电子设备
CN111930714A (zh) * 2019-05-13 2020-11-13 中国移动通信集团湖北有限公司 基于TimesTen内存库的订阅数据库伸缩方法、装置及计算设备
CN112083885A (zh) * 2020-09-08 2020-12-15 北京嘀嘀无限科技发展有限公司 一种数据迁移方法、装置、电子设备及存储介质
CN113377736A (zh) * 2020-03-10 2021-09-10 阿里巴巴集团控股有限公司 对关系型数据库进行扩容的方法及系统
CN113420006A (zh) * 2020-07-24 2021-09-21 阿里巴巴集团控股有限公司 数据迁移方法、装置、电子设备及计算机可读介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544045A (zh) * 2013-10-16 2014-01-29 南京大学镇江高新技术研究院 一种基于hdfs的虚拟机镜像存储系统及其构建方法
CN104252502A (zh) * 2013-06-29 2014-12-31 北京新媒传信科技有限公司 一种数据库管理平台中数据迁移方法和装置
CN105069109A (zh) * 2015-08-07 2015-11-18 北京思特奇信息技术股份有限公司 一种分布式数据库扩容的方法和系统
CN105190611A (zh) * 2012-12-06 2015-12-23 微软技术许可有限责任公司 数据库横向扩展
CN105528368A (zh) * 2014-09-30 2016-04-27 北京金山云网络技术有限公司 一种数据库迁移方法及装置
CN105760552A (zh) * 2016-03-25 2016-07-13 北京奇虎科技有限公司 数据管理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105190611A (zh) * 2012-12-06 2015-12-23 微软技术许可有限责任公司 数据库横向扩展
CN104252502A (zh) * 2013-06-29 2014-12-31 北京新媒传信科技有限公司 一种数据库管理平台中数据迁移方法和装置
CN103544045A (zh) * 2013-10-16 2014-01-29 南京大学镇江高新技术研究院 一种基于hdfs的虚拟机镜像存储系统及其构建方法
CN105528368A (zh) * 2014-09-30 2016-04-27 北京金山云网络技术有限公司 一种数据库迁移方法及装置
CN105069109A (zh) * 2015-08-07 2015-11-18 北京思特奇信息技术股份有限公司 一种分布式数据库扩容的方法和系统
CN105760552A (zh) * 2016-03-25 2016-07-13 北京奇虎科技有限公司 数据管理方法和装置

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109120678A (zh) * 2018-07-26 2019-01-01 北京百度网讯科技有限公司 用于分布式存储系统的服务托管的方法和装置
US11057469B2 (en) 2018-07-26 2021-07-06 Beijing Baidu Netcom Science And Technology Co, Ltd. Method and apparatus for service hosting of distributed storage system
CN109120678B (zh) * 2018-07-26 2021-05-14 北京百度网讯科技有限公司 用于分布式存储系统的服务托管的方法和装置
CN110019148A (zh) * 2018-09-07 2019-07-16 网联清算有限公司 数据库容量管理方法、装置、存储介质及计算机设备
CN109271376A (zh) * 2018-11-30 2019-01-25 北京锐安科技有限公司 数据库升级方法、装置、设备及存储介质
CN111930714A (zh) * 2019-05-13 2020-11-13 中国移动通信集团湖北有限公司 基于TimesTen内存库的订阅数据库伸缩方法、装置及计算设备
CN110489494A (zh) * 2019-08-27 2019-11-22 中国工商银行股份有限公司 分布式数据库在线扩容方法及装置
CN110489494B (zh) * 2019-08-27 2023-02-24 中国工商银行股份有限公司 分布式数据库在线扩容方法及装置
CN111400273B (zh) * 2019-11-19 2024-02-02 杭州海康威视系统技术有限公司 数据库扩容方法、装置、电子设备及机器可读存储介质
CN111400273A (zh) * 2019-11-19 2020-07-10 杭州海康威视系统技术有限公司 数据库扩容方法、装置、电子设备及机器可读存储介质
CN110851427A (zh) * 2019-11-19 2020-02-28 泰康保险集团股份有限公司 数据库容量变更方法和装置
CN113377736A (zh) * 2020-03-10 2021-09-10 阿里巴巴集团控股有限公司 对关系型数据库进行扩容的方法及系统
CN111459913A (zh) * 2020-03-31 2020-07-28 北京金山云网络技术有限公司 分布式数据库的容量扩展方法、装置及电子设备
CN111459913B (zh) * 2020-03-31 2023-06-23 北京金山云网络技术有限公司 分布式数据库的容量扩展方法、装置及电子设备
CN113420006A (zh) * 2020-07-24 2021-09-21 阿里巴巴集团控股有限公司 数据迁移方法、装置、电子设备及计算机可读介质
CN112083885B (zh) * 2020-09-08 2021-10-15 北京嘀嘀无限科技发展有限公司 一种数据迁移方法、装置、电子设备及存储介质
CN112083885A (zh) * 2020-09-08 2020-12-15 北京嘀嘀无限科技发展有限公司 一种数据迁移方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN108319596A (zh) 一种数据库的扩容方法和装置
US10747618B2 (en) Checkpointing of metadata into user data area of a content addressable storage system
US10496627B2 (en) Consistent ring namespaces facilitating data storage and organization in network infrastructures
CN108121782B (zh) 查询请求的分配方法、数据库中间件系统以及电子设备
CN104615606B (zh) 一种Hadoop分布式文件系统及其管理方法
US12093282B2 (en) Database system, computer program product, and data processing method
CN103186554A (zh) 分布式数据镜像方法及存储数据节点
CN102158540A (zh) 分布式数据库实现系统及方法
CN103970585A (zh) 创建虚拟机的方法及装置
CN104239511B (zh) 一种面向MongoDB的用户空间文件系统实现方法
CN108196787B (zh) 集群存储系统的配额管理方法以及集群存储系统
CN106201771A (zh) 数据存储系统和数据读写方法
CN103902410A (zh) 云存储系统的数据备份加速方法
CN109271376A (zh) 数据库升级方法、装置、设备及存储介质
EP3707614B1 (en) Redistributing table data in database cluster
CN107357522A (zh) 数据处理方法和装置
CN111930716A (zh) 一种数据库扩容方法、装置及系统
US20180336224A1 (en) Hash-based synchronization of geospatial vector features
CN112231291A (zh) 一种云端文件多分支版本管理的方法和装置
CN114721594A (zh) 一种分布式存储方法、装置、设备及机器可读存储介质
US11347694B2 (en) Efficient change block tracking in a distributed generation-id (GID) based log structured file system (LSFS)
CN115756955A (zh) 一种数据备份、数据恢复的方法、装置及计算机设备
CN110532243A (zh) 数据处理方法、装置和电子设备
CN107818113A (zh) 文件访问位置的确定方法及装置
CN112965859A (zh) 一种基于ipfs集群的数据灾备方法与设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination