对关系型数据库进行扩容的方法及系统与流程

文档序号:26587750发布日期:2021-09-10 19:51阅读:112来源:国知局
对关系型数据库进行扩容的方法及系统与流程

1.本发明涉及数据库技术领域,具体而言,涉及一种对关系型数据库 进行扩容的方法及系统。


背景技术:

2.对于绝大部分应用而言,关系型数据库所承担的职责是整个数据管 理系统中最为核心基础的,不光直接影响到终端用户的服务体验,同时 也是业务数据的最后一道保险。
3.在业务发展的初期和中期,关系型数据库将要存储的数据量并不庞 大,出于成本考虑,此时用户会采用单机关系型数据库存储数据,单机 关系型数据库的存储容量相对有限,当业务发展到后期,数据库存储容 量不足的问题便会暴露出来,此时需要对关系型数据库进行扩容。然而, 对数据库进行扩容会影响到正常的业务处理。
4.因此,如何高效地进行关系型数据库的扩容且降低对正常的业务处 理的影响,值得思考。


技术实现要素:

5.本发明的目的是提供一种对关系型数据库进行扩容的方法及系统, 在高效地完成关系型数据库扩容的情况下,降低对正常的业务处理的影 响。
6.为了达到这个目的,根据本发明的第一方面,本发明实施例提供一 种对关系型数据库进行扩容的方法,包括:
7.采用物理备份方式对所述关系型数据库的第一数据库实例进行备份, 以获得备份文件,所述第一数据库实例管理多个第一数据库;
8.建立并启用第二数据库实例;
9.根据所述备份文件,基于所述第二数据库实例进行数据恢复,以得 到由所述第二数据库实例管理的多个第二数据库;
10.实施禁写操作,以禁止所述应用服务向所述多个第一数据库写入数 据;
11.将所述应用服务对至少一个第一数据库的访问切换为对至少一个第 二数据库的访问;
12.解除禁写操作,以允许所述应用服务向多个所述第一数据库写入数 据。
13.可选地,所述方法还包括:将禁写和解除禁写操作期间被禁止写入 的数据写入相应的第一数据库。
14.可选地,所述方法还包括:将所述第一数库实例的所述备份文件之 后的增量数据同步到所述第二数据库实例的相应第二数据库。
15.可选地,所述方法还包括:删除所述至少一个第一数据库,以及删 除所述第二数据库实例管理的所述至少一个第二数据库之外的其他第二 数据库。
16.可选地,通过修改数据库路由规则实现实施禁写操作、访问切换和 解除禁写操作
的步骤。
17.可选地,其中,所述关系型数据库为mysql数据库,利用mysql数 据库提供的物理备份工具进行物理备份和数据恢复,并利用mysql的binlog日志将禁写和解除禁写操作期间所述应用服务被禁止写入的数 据写入相应的第一数据库。
18.可选地,利用数据库备份服务获得所述备份文件,所述数据库备份 服务定期对所述关系型数据库的第一数据库实例进行物理备份。
19.可选地,所述第一数据库实例和所述第二数据库实例部署在不同服 务器上。
20.第二方面,本发明实施例提供一种对关系型数据库进行扩容的方法, 包括:
21.采用物理备份方式对所述关系型数据库的第一数据库实例进行备份, 以获得备份文件,所述第一数据库实例管理第一数据库,所述第一数据 库包括多个第一数据库表;
22.建立并启用第二数据库实例;
23.根据所述备份文件,基于所述第二数据库实例进行数据恢复,以得 到由所述第二数据库实例管理的第二数据库,所述第二数据库包括多个 第二数据库表;
24.实施禁写操作,以禁止应用服务向所述第一数据库写入数据;
25.将所述应用服务对至少一个第一数据库表的访问切换为对至少一个 的第二数据库表的访问;
26.解除禁写操作,以允许所述应用服务向所述第一数据库写入数据。
27.可选地,所述方法还包括:将实施禁写和解除禁写操作期间应用服 务被禁止写入的数据写入相应的第一数据库表和第二数据库表中。
28.可选地,所述方法还包括:将所述第一数库实例的所述备份文件之 后的增量数据同步到所述第二数据库实例的第二数据库中。
29.可选地,所述方法还包括:删除所述至少一个第一数据库表;以及 删除所述第二数据库的所述至少一个第二数据库表之外的其余第二数据 库表。
30.可选地,通过修改数据库路由规则实现实施禁写操作、访问切换和 解除禁写操作的步骤。
31.可选地,根据权利要求10所述的方法,其中,所述关系型数据库为mysql数据库,利用mysql数据库提供的物理备份工具进行物理备份和 数据恢复,并利用mysql的binlog日志将禁写和解除禁写操作期间所述 应用服务被禁止写入的数据写入相应的第一数据库表和/或第二数据库 表中。
32.第三方面,本发明实施例提供一种对关系型数据库进行扩容的系统, 包括:
33.物理备份模块,用于采用物理备份方式对所述关系型数据库的第一 数据库实例进行备份,以获得备份文件,所述第一数据库实例管理多个 第一数据库;
34.实例创建模块,用于建立并启用第二数据库实例,根据所述备份文 件,基于所述第二数据库实例进行数据恢复,以得到由所述第二数据库 实例管理的多个第二数据库;
35.访问切换模块,用于实施禁写操作,以禁止应用服务向多个所述第 一数据库写入数据,然后将所述应用服务对至少一个所述第一数据库的 访问切换为对至少一个所述第二数据库的访问,再对所述应用服务解除 禁写操作;
36.数据同步模块,用于将实施禁写和解除禁写操作期间所述应用服务 被禁止写入的数据写入相应的第一数据库,并将所述第一数库实例的所 述备份文件之后的增量数据
同步到所述第二数据库实例的相应第二数据 库。
37.第四方面,本发明实施例提供一种对关系型数据库进行扩容的系统, 包括:
38.物理备份模块,用于采用物理备份方式对所述关系型数据库的第一 数据库实例进行备份,以获得备份文件,所述第一数据库实例管理第一 数据库,所述第一数据库包括多个第一数据库表;
39.实例创建模块,用于建立并启用第二数据库实例,并根据所述备份 文件,基于所述第二数据库实例进行数据恢复,以得到由所述第二数据 库实例管理的第二数据库,所述第二数据库包括多个第二数据库表;
40.访问切换模块,用于实施禁写操作,以禁止应用服务向所述第一数 据库写入数据,然后将所述应用服务对至少一个所述第一数据库表的访 问切换为对至少一个所述第二数据库表的访问,再解除禁写操作,以允 许所述应用服务向所述第一数据库写入数据;
41.数据同步模块,用于将实施禁写和解除禁写操作期间所述应用服务 被禁止写入的数据写入相应的所述第一数据库表,以及将所述第一数库 实例的所述备份文件之后的增量数据同步到所述第二数据库实例的第二 数据库。
42.第五方面,本发明实施例提供一种电子设备,包括存储器和处理器, 所述存储器还存储有可由所述处理器执行的计算机指令,所述计算机指 令被执行时,实现上述任一项所述的对关系型数据库进行扩容的方法。
43.第六方面,本发明实施例提供一种计算机可读介质,所述计算机可 读介质存储有可由电子设备执行的计算机指令,所述计算机指令被执行 时,实现上述任一项所述的对关系型数据库进行扩容的方法。
44.本发明实施例提供的方法和系统,通过物理备份方式得到第一数据 库实例的备份文件,然后在第二数据库实例下进行数据恢复,物理备份 方式在操作系统的文件层面进行,因此物理备份和数据恢复的操作都非 常方便,可在非常短的时间内将第一数据库实例下的所有数据库都复制 到第二数据库实例下,而且,物理备份不会对第一数据库实例和第一数 据库产生任何影响,也就不会影响到应用服务的正常业务处理。
附图说明
45.通过参考以下附图对本发明实施例的描述,本发明的上述以及其它 目的、特征和优点将更为清楚,在附图中:
46.图1a是示例性的垂直(纵向)切分模式的示意图;
47.图1b是示例性的水平(横向)切分模式的示意图;
48.图2是基于代理服务进行数据库访问的软件部署示意图;
49.图3是基于代理服务进行数据库访问的硬件部署示意图;
50.图4是示例性的数据库路由规则的示意图;
51.图5是本发明第一实施例的对关系型数据库进行扩容的方法的流程 图;
52.图6是基于图5所示的方法产生的变化示意图;
53.图7是本发明第二实施例的对关系型数据库进行扩容的方法的流程 图;
54.图8是基于图7所示的方法产生的变化示意图;
55.图9是本发明实施例的对关系型数据库进行扩容的系统的结构示意 图;
56.图10是用于实施本发明实施例的对关系型数据库进行扩容的方法 及系统的电子设备的结构示意图。
具体实施方式
57.以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些 实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部 分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本 发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细 叙述。另外附图不一定是按比例绘制的。
58.下面,在基于附图对本发明实施例进行详细描述之前,首先对数据 库扩容技术的一些方面进行介绍。
59.数据库分表(sharding)技术依据其切分规则的类型,能够分为两 种模式。一种模式是将多个数据库表切分到不同的数据库上,称为垂直 (纵向)切分模式。另外一种模式是依据数据库表中的数据的逻辑关系, 将同一个表中的数据依照某种规则拆分到多个数据库上,称为水平(横 向)切分模式。其中,多个数据库可以部署在相同或不同服务器上。
60.图1a是示例性的垂直(纵向)切分模式的示意图。如图1a所示, 在未进行垂直切分之前,应用服务server访问单一数据库db,以访问 单一数据库db内的表1至表4。然后基于垂直切分模式将表1和表2转 移到数据库1中,将表3和表4转移在数据库2中。其中,数据库1和 数据库2其中之一可以为数据库db,也即,在数据库db之外,创建一 个新的数据库,以承接从数据库db中分出的表。这里将表转移到数据库 中包括将表的数据结构以及数据都转移到数据库中。应该理解,垂直切 分需要根据功能模块判断数据库表之间的耦合度,同一功能模块的数据 库表尽量放在同一个数据库中,反之,则可以放在不同的数据库中。
61.图1b是示例性的水平(横向)切分模式的示意图。如图1b所示, 对于单一数据库db,根据切分规则rule1和rule2將其水平切分,形成 数据库1和数据库2,数据库1包含了表1-4所有符合切分规则rule1 的数据,数据库2中包含了表1-4中所有符合切分规则rule2的数据。 在图1b的示例中,将切分规则rule1设定为:userid%3=0或useid%3 =1,将rule2设定为:userid%3=2。由于ruleid包含在表1-4中,因 此通过上述规则能够表1-4中的数据分布到数据库1和数据库2。
62.在图1a-1b中,分库分表成功之后,应用服务server可以修改数据 库的连接信息,来实现对数据库1和数据库2的访问。这种方式对于简 单架构的应用服务是可行的,但是当应用服务变得庞大时,每次的分库 分表操作之后,都需要修改大量的连接信息。
63.为此,本发明提出了基于代理服务进行数据访问的技术方案。图2 是基于代理服务进行数据库访问的软件部署示意图。图3是基于代理服 务进行数据库访问的硬件部署示意图。参考图2所示,代理服务proxy 包含数据库路由规则cnf,数据库路由规则cnf包含了所有可用的数据 库的连接信息,代理服务proxy根据数据库路由规则cnf进行路由计算, 以将来自应用服务server的多个数据库请求路由到其中的一个数据库 上,从而实现了对所有数据源的统一管理。继续参考图3所示,代理服 务proxy可以部署在代理服务器102,应用服务server部署在应用服务 器101,而数据库服务器103用于部署数据库。通过将多个数据库部署 在多台数据库服务器上,从而分散每个数据库的性能压力,进而提高整 体上的数据库性能。
64.图4是示例性的数据库路由规则的示意图。如图4所示,数据库路 由规则40包括数据库的连接信息400和规则信息410,连接信息400的 数据结构包括ip地址401、数据库实例名称402、端口号403、驱动程 序名称404、数据库名称405和表名称406。规则信息410包括sql类别 411和规则名称412。代理服务proxy对于来自应用服务的每一个数据库 请求进行分析,以判别sql类型,然后找到对应的规则名称,在对应的 规则里指明了针对sql类型如何检索并获得该sql对应的连接信息,例 如,如果sql中指定了一个数据库名称,则可以基于该数据库名称检索 连接信息,以得到该数据库所在的服务器的ip地址、对应的数据库实例、 驱动程序等信息,如果该sql只指定了一个数据库表的名称,则可以基 于该数据库表的名称检索连接信息,以确定该数据库表所在的服务器的 ip地址、对应的数据库实例、驱动程序等信息。图4的数据结构仅用于 帮助理解本发明实施例,并不能作为对本发明实施例的限制。本领域的 技术人员完全可以在领会本发明的实质内容的情况下,构建其他形式的 数据结构实现本发明。
65.应该指出的是,在上述示例中,为方便描述,均省略了对数据库实 例的描述。数据库实例是处于运行状态下的程序,是位于应用服务和数 据库之间的一层数据管理软件,数据库是物理文件的集合,也是依照某 种数据模型组织起来并存放于存储器中的数据的集合。数据库实例管理 各种数据库对象,包括数据库、数据库表、索引、视图等等。应用服务 只有通过数据库实例才能和数据库打交道。应用服务对数据库做任何的 操作,包括数据定义、数据查询、数据维护、数据库运行控制等等都是 需要经由数据库实例实现。数据库实例在创建之时或创建之后指定一个 或多个空的物理文件。之后,在数据库实例下创建一个或多个数据库、 在数据库下创建多个数据库表、操作数据库表内的数据等一系列的操作 都会存储到该一个或多个物理文件中。应用服务基于数据库的连接信息 与数据库实例之间建立连接关系,再将应用请求发送给数据库实例,然 后数据库实例解析数据库请求,并根据解析结果执行应用请求,包括创 建数据库、创建数据库表、对数据库表内的数据进行增删改查等操作。
66.下面,基于附图对本发明各个实施例进行详细描述。
67.图5是本发明第一实施例的对关系型数据库进行扩容的方法的流程 图。该方法包括以下步骤。
68.在步骤s511中,采用物理备份方式对第一数据库实例进行备份。物 理备份和逻辑备份是数据库备份的两种形式。如前所述,数据库实例创 建之时或创建之后,需要指定一个或多个物理文件,一旦数据库发生故 障,可以利用这些物理文件进行还原。对第一数据库实例的物理备份方 式即拷贝这些物理文件中的一个或多个。物理备份方式不关注物理文件 中的逻辑内容。而逻辑备份是将符合指定逻辑的数据库对象导入到一个 物理文件中,例如可以指定一个数据库的名称,将与该名称匹配的数据 库(包括数据库表结构、索引结构、存储过程、库表数据、索引数据等 等)导入到一个物理文件中,再例如,可以指定一个数据库表的名称, 将与该名称匹配的数据库表以及该表内的数据都导入到一个物理文件中。 本步骤是采用物理备份方式,实现对第一数据库实例下的多个数据库的 备份,并得到备份文件。此外,需要明白的是,数据库实例对应的物理 文件可能有多个,例如oracle系统的物理文件包括控制文件、数据文件、 日志文件、参数文件等等,而在本步骤中,物理备份的目的是为了在后 续步骤中根据备份文件恢复第一数据库实例下的多个第一数据库,因
此, 可以只备份恢复多个第一数据库所需的物理文件,例如对于oracle系统 可以只复制数据文件。
69.再者,成熟的关系型数据库系统一般会提供物理备份工具和逻辑备 份工具。例如,mysql为逻辑备份提供mysqldump工具,为物理备份提 供ibbackup、xtrabackup、innobacupex等工具。因此可以基于这些备 份工具实施本步骤以及后续的恢复步骤。
70.此外,对于系统的维护人员来说,日常运维工作包括对数据库的备 份、恢复、监控、迁移等内容,因此利用日常运维工作中的定期进行的 数据库备份服务获得本步骤的备份文件。
71.在步骤s512中,建立并启用第二数据库实例。对于数据库系统来说, 第二数据库实例和第一数据库实例并无实质上的区别。但是一些数据库 系统允许在同一个服务器上运行两个或以上数据库实例,一些数据库系 统则只允许一台服务器允许一个数据库实例。因此,本步骤中的两个数 据库实例是否可以建立在同一个服务器上,取决于所使用的数据库系统。 但将两个数据库实例建立在两个服务器上更有利于数据库存储容量的后 续扩展。
72.在步骤s513中,根据备份文件,基于第二数据库实例进行数据恢复, 以得到由第二数据库实例管理的多个第二数据库。本步骤利用数据库系 统提供的工具进行数据恢复。恢复成功之后,得到由第二数据库实例管 理的与多个第一数据库对应的多个第二数据库。第二数据库和第一数据 库具有相同的结构并存储相同的数据。
73.在步骤s514中,实施禁写操作,以禁止应用服务向多个第一数据库 写入数据。
74.在步骤s515中,将应用服务对至少一个第一数据库的访问切换为对 至少一个第二数据库的访问。
75.在步骤s516中,解除禁写操作,以允许应用服务向多个第一数据库 写入数据。
76.可以参考图2理解步骤s514-s516。参考图2-4所示,应用服务对 于第一数据库的访问需要经过代理服务proxy,由代理服务决定将该访 问传送给相应第一数据库实例下的第一数据库。代理服务proxy包含的 数据库路由规则cnf中设置有多个数据库实例管理的各个数据库的连接 信息,当将该连接信息的状态设置为不可写入后,应用服务将无法向第 一数据库实例的第一数据库内无法写入数据,然后将第一数据库实例管 理的至少一个第一数据库的连接信息从数据库路由规则cnf删除(或者 将其状态设置为不可用),并在数据库路由规则cnf中增加第二数据库 实例管理的相应的至少一个第二数据库的连接信息。上述修改结束之后, 解除禁写操作,使得应用服务可以根据数据库路由规则向第一数据库和 第二数据库写入数据。
77.在本实施例中,通过物理备份方式得到第一数据库实例的备份文件, 然后在第二数据库实例下进行数据恢复,物理备份方式在操作系统的文 件层面进行,因此物理备份和数据恢复的操作都非常方便,并可在非常短 的时间内将第一数据库实例下的所有数据库都复制到第二数据库实例下, 而且,物理备份不会对第一数据库实例和第一数据库产生任何影响,也 就不会影响到应用服务的正常业务处理。
78.在优选的实施例中,上述方法还包括步骤s517-s519(图上未示出)。 s517-s519在解除禁写操作之后执行。
79.步骤s517中将实施禁写和解除禁写操作期间所述应用服务被禁止 写入的数据写
入相应的第一数据库和/或第二数据库中。
80.实施禁写和解除禁写操作期间,数据库系统会向日志文件中写入操 作日志,在解除禁写之后,可以基于日志文件找回应用服务在此期间被 禁止写入的数据。例如mysql系统会将数据库操作写入到binlog文件中, binlog文件通过参数binlog_format支持三种binlog数据格式, binlog_format的可选值分别为row、statement、mixed,默认值为mixed, 其中,选择row时,每个增删改的sql,都会在binlog里记录该sql所 影响的行在变更前和变更后的值。因此,对于采用mysql系统来说,在 实施禁写操作之前,将binlog_format调整为binlog_format,解除禁 写操作之后,根据binlog文件将应用服务被禁止写入的数据写入到第一 数据库。实施禁写和解除禁写操作的间隔时长一般在秒级左右,因此应 用系统被禁止写入的数据的数量将非常有限,从而将应用系统被禁止写 入的数据写入到第一数据库所需的时间也非常有限。
81.步骤s518将第一数库实例的备份文件之后的增量数据同步到第二 数据库实例的相应第二数据库中。具体地,将备份开始时间作为起始时 间点,将解除禁写操作作为终止时间点,将第一数据库实例下的这段时 间段内的数据从第一数据库实例的第一数据库中复制到第二数据库实例 的第二数据库中。更具体地,可以采用逻辑备份方式进行复制,例如对 于mysql系统,使用mysqldump工具先将满足上述时间要求的增量数据 导入到一个物理文件中,然后基于物理文件将数据导入到第二数据库实 例下。
82.步骤s519用于删除冗余数据库,具体地,在第一数据库实例下,删 除已将应用服务对其的访问切换到第二数据库实例下的相应第二数据库 的第一数据库,以及在第二数据库实例下,删除相应第二数据库之外的 第二数据库。
83.图6是上述方法产生的变化示意图。如图6所示,数据库实例1下 包括数据库d11-d14。通过物理备份方式的数据恢复,在数据库实例2 下得到了与数据库d11-d14分别对应的数据库d21-d24。将对数据库 d13-d14的访问切换到对数据库d23-d24的访问,然后删除数据库 d13-d14和数据库d21-d22。
84.在本示例中,由初始的只有一个数据库实例处理四个数据库的数据 库请求,变为由两个数据库实例处理各自处理两个数据库的访问请求, 从而整体上提高了数据库请求的处理效率。作为优选的实施方式,数据 库实例1和数据库实例2部署在两台服务器上,以获得更多的性能提升。
85.图7是本发明第二实施例的对关系型数据库进行扩容的方法的流程 图。在第二实施例中,将对第一数据库中的至少一个第一数据库表的访 问切换为对第二数据库中的相应的至少一个第二数据库表的访问。第二 实施例具体包括以下步骤。
86.在步骤s711中,采用物理备份方式对多个第一数据库进行备份。
87.在步骤s712中,建立并启用第二数据库实例
88.在步骤s713中,根据备份文件,基于第二数据库实例进行数据恢复, 以得到由第二数据库实例管理的第二数据库。
89.在步骤s714中,实施禁写操作,以禁止应用服务向所述第一数据库 写入数据。
90.在步骤s715中,将应用服务对至少一个第一数据库表的访问切换为 对至少一个的第二数据库表的访问。
91.在步骤s716中,解除禁写操作,以允许应用服务向第一数据库写入 数据。
92.在步骤s717中,将实施禁写和解除禁写操作期间应用服务被禁止写 入的数据写入相应的第一数据库表。
93.在步骤s718中,将第一数库实例的备份文件之后的增量数据同步到 第二数据库实例的第二数据库中。
94.在步骤s719中,在第一数据库中,删除步骤s715指定的至少一个 第一数据库表,以及在第一数据库中,删除步骤s715指定的相应的至 少一个第二数据库表之外的第二数据库表。
95.第二实施例和第一实施例的数据库扩容方法都采用物理备份方式对 第一数据库进行数据库备份和恢复,因此第二实施例同样具有实施速度 快和不会影响应用服务的业务处理等优点,且第二实施例通过增量数据 导入实现第一数据库实例和第二数据库实例下的数据同步。
96.图8是用于基于图7所示的方法产生的变化示意图。下面以图8的 变化示意图为例,对图7所示的方法进行详细描述。
97.如图8所示,数据库实例1下包括数据库d31。通过物理备份的备 份文件进行数据恢复,在数据库实例2下得到了与数据库d31对应的数 据库d41。数据库d31包括分别数据库表t11-t14,数据库d41包括与数 据库表t11-t14对应的数据库表t21-t24。通过修改数据库路由规则, 将对表t13-t14的访问切换到对数据库表t23-t24上,然后删除数据库 表t13-t14和数据库t21-t22。
98.在本示例中,由初始的只有一个数据库实例处理四个数据库表的数 据库请求,变为由两个数据库实例各自处理两个数据库表的访问请求, 从而整体上提高了数据库请求的处理效率。
99.需要明白的是,虽然上述实施例均采用修改数据库路由规则以达到 实施禁写操作、访问切换和解除禁写操作的步骤,但本发明对此并不加 以限制,例如通过数据库系统的权限设置禁止应用服务对数据库实例或 数据库的访问。
100.与上述实施例对应,本发明还提供一种对关系型数据库进行扩容的 系统。如图9所示,包括物理备份模块111、实例创建模块112、访问切 换模块113和数据同步模块114。
101.作为第一种实施例方式,物理备份模块111、实例创建模块112、访 问切换模块113和数据同步模块114分别完成以下功能:
102.物理备份模块111用于采用物理备份方式对关系型数据库的第一数 据库实例进行备份,以获得备份文件,所述第一数据库实例管理第一数 据库,所述第一数据库包括多个第一数据库表;
103.实例创建模块112用于建立并启用第二数据库实例,并根据所述备 份文件,基于所述第二数据库实例进行数据恢复,以得到由所述第二数 据库实例管理的第二数据库,所述第二数据库包括多个第二数据库表;
104.访问切换模块113用于实施禁写操作,以禁止应用服务向所述第一 数据库写入数据,然后将所述应用服务对至少一个第一数据库表的访问 切换为对至少一个的第二数据库表的访问,再对应用服务解除禁写操作;
105.数据同步模块114用于将实施禁写和解除禁写操作期间所述应用服 务被禁止写入的数据写入相应的第一数据库和/或第二数据库中,并将所 述第一数库实例的所述备份
文件之后的增量数据同步到所述第二数据库 实例的相应第二数据库中。
106.作为更优选的实施例,上述实施例还包括删除模块(图上未示出), 用于删除访问切换模块113指定的至少一个第一数据库,以及删除第二 数据库实例的相应的至少一个第二数据库之外的第二数据库。
107.作为第二种实施例方式,物理备份模块111、实例创建模块112、访 问切换模块113和数据同步模块114分别完成以下功能:
108.物理备份模块111用于采用物理备份方式对所述关系型数据库的第 一数据库实例进行备份,以获得备份文件,所述第一数据库实例管理第 一数据库,所述第一数据库包括多个第一数据库表;
109.实例创建模块112用于建立并启用第二数据库实例,并根据所述备 份文件,基于所述第二数据库实例进行数据恢复,以得到由所述第二数 据库实例管理的第二数据库,所述第二数据库包括多个第二数据库表;
110.访问切换模块113用于实施禁写操作,以禁止应用服务向第一数据 库写入数据,然后将应用服务对至少一个第一数据库表的访问切换为对 至少一个的第二数据库表的访问,再对应用服务解除禁写操作;
111.数据同步模块114将实施禁写和解除禁写操作期间应用服务被禁止 写入的数据写入相应的第一数据库表和/或第二数据库表中,以及将第一
112.作为更优选的实施例,上述实施例还包括删除模块(图上未示出), 用于删除访问切换模块113指定的至少一个第一数据库表,以及删除第 二数据库实例的相应的至少一个第二数据库表之外的第二数据库表。
113.应理解,上述实施例提供的数据库扩容系统和本发明提供的数据库 扩容方法对应,因此,在上文中以相对简单的方式进行描述。
114.与上述实施例对应,本发明还提供一种电子设备,如图10所示,在 硬件层面,电子设备12包括存储器123和处理器122,除此之外,一些 情况下还包括输入输出设备124和其他硬件121。存储器123例如为高 速随机存取存储器(random-access memory,ram),也可能是非易失性存 储器(non-volatile memory),例如为至少1个磁盘存储器等。输入输出 设备124例如为显示器、键盘、鼠标、网络控制器等设备。处理器122 可以基于目前市场上各种型号的处理器构建。处理器122、存储器123、 输入输出设备124和其他硬件121通过总线相互连接,该总线可以是 isa(ind ustry standard architecture,工业标准体系结构)总线、pci (peripheral component interconnect,外设部件互连标准)总线或 eisa(extended industry standard architecture,扩展工业标准结构) 总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于 表示,图10中仅用一个线条表示,但并不表示仅有一根总线或一种类型 的总线。
115.存储器123用于存放程序。具体地,程序可以包括程序代码,程序 代码包括计算机指令。存储器可以包括内存和非易失性存储器,并向处 理器122提供计算机指令和数据。处理器122从存储器123中读取对应 的计算机程序到内存中然后运行,在逻辑层面上形成对关系型数据库进 行扩容的方法,并具体用于以下步骤:采用物理备份方式对所述关系型 数据库的第一数据库实例进行备份,以获得备份文件,所述第一数据库 实例管理多个第一数据库;建立并启用第二数据库实例;根据所述备份 文件,基于所述第二数据库实例进行
数据恢复,以得到由所述第二数据 库实例管理的多个第二数据库;实施禁写操作,以禁止应用服务向所述 多个第一数据库写入数据;将所述应用服务对至少一个第一数据库的访 问切换为对至少一个的第二数据库的访问;解除禁写操作,以允许所述 应用服务向多个第一数据库写入数据。
116.本领域的技术人员能够理解,本发明可以实现为系统、方法和计算 机程序产品。因此,本发明可以具体实现为以下形式,即完全的硬件、 完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬 件结合的形式。此外,在一些实施例中,本发明还可以实现为一个或多 个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包 含计算机可读的程序代码。
117.可以采用一个或多个计算机可读介质的任意组合。计算机可读介质 可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储 介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置 或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子 包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机 存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom 或者闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器、 磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质 可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置 或者器件使用,或者与其结合使用。
118.计算机可读信号介质可以包括在基带中或者作为截波一部分传播的 数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可 以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的 组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何 计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指 令系统、装置或器件使用或者与其结合使用的程序。
119.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包 括但不限于无线、电线、光缆、rf等等,以及上述任意合适的组合。
120.可以以一种或者多种程序设计语言或者组合来编写用于执行本发明 实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计 语言,例如java、c++,还可以包括常规的过程式程序设计语言,例如c。 程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、 作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上 执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情 形中,远程计算机可以通过任意种类的网络包括局域网(lan)或广域 网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用 因特网服务提供商来通过因特网连接)。
121.以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本 领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神 和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1