一种数据库的容灾方法转让专利

申请号 : CN201611109684.4

文献号 : CN108153787B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘斌吴方才楚涌泉

申请人 : 中科星图股份有限公司

摘要 :

本发明涉及一种数据库的容灾方法,该方法包括:步骤1:在数据库系统由多个基础库组成的条件下,设置基础库的容灾度t;步骤2:将所有基础库按照容灾度排序;步骤3:选择t个容灾度最小的基础库分配存储一个基础库,如果所有基础库都分配完毕则方法结束,否则返回步骤2。

权利要求 :

1.一种数据库的容灾方法,其特征在于,该方法包括以下步骤:步骤1:在数据库系统由多个基础库组成的条件下,设置基础库的容灾数t;

步骤2:将所有基础库按照容灾度排序;

步骤3:选择t个容灾数最小的基础库分配存储一个基础库,如果所有基础库都分配完毕则方法结束,否则返回步骤2;

每台容灾服务器都处于不同地区;

同一地区的容灾服务器的数量不超过预定义的上限数量;

(1)将整个数据库切分成多个基础库;

具体的切分方式取决于数据库内所存储的数据,以及数据库的组织形式;(2)设置同一个基础库的容灾数t;

所述容灾数,指的是存储同一个基础库的容灾服务器的数量;设有n台容灾服务器,则每一个基础库都同时存储于其中的t台容灾服务器中;

(3)在n台容灾服务器中任取t台,组成一个服务器组S,通过排列组合,一共得到 个服务器组,记这些服务器组为S1,S2,……,SK, 则获得由这些服务器组所构成的一个集合S={Si,1≤i≤K};

(4)计算每一台容灾服务器当前的容灾代价,

所述容灾代价实际上是容灾服务器存储数据基础库所要耗费的代价,其反应了该容灾服务器存储数据的效率;

所述每一台容灾服务器当前的容灾代价的计算方法如下:(4.1)设n台容灾服务器为A1,A2,……,An;首先计算Ai(1≤i≤n)的数据代价Di,即Di=Ti/Li;其中,Ti是容灾服务器Ai到调度服务器的传输延迟时间,单位为秒;Li是容灾服务器Ai本身的数据吞吐率,单位为MB/秒;

如果各台容灾服务器在同一个局域网中,则所述传输延迟时间应该是相同的;

(4.2)计算容灾服务器Ai的容灾代价Ci,

其中,Fi是Ai在已经获取的容灾组中出现的次数;

(5)对于集合S中的每个服务器组,计算服务器组的容灾代价,所述服务器组的容灾代价是该服务器组中所有容灾服务器的容灾代价之和;

所述容灾代价之和反映了一个基础库要存储到该服务器所要花费的总的容灾代价,通过该容灾代价和,以衡量不同服务器组的优劣;

(6)对集合S中的服务器组,按照服务器组的容灾代价进行排序,将容灾代价最小的服务器组作为一个容灾组,并从集合S中删除;

(7)重复步骤4-6,一直到获取了m个容灾组;

通过步骤4-6,选出了将m个基础库在冗余度t下存储于n台容灾服务器的最优解;

(8)每个容灾组分别存储一个基础库,即将容灾组中的每一台容灾服务器都存储相应基础库的一个复制;

m个容灾组与m个基础库一一对应,因此步骤7将m个基础库分别存储在m个容灾代价最小的服务器组中,并且每个基础库都有t个冗余;

(9)对于不在任何一个容灾组中的容灾服务器,使用该容灾服务器存储所有的基础库。

2.根据权利要求1所述的数据库的容灾方法,其特征在于,对每个容灾服务器建立唯一的读写端口,所述读写端口会在容灾服务器下线、故障、数据迁移情况发生时自动关闭。

3.根据权利要求1或2任意一项所述的数据库的容灾方法,其特征在于,各个容灾服务器之间的数据传输是加密传输。

说明书 :

一种数据库的容灾方法

【技术领域】

[0001] 本发明属于计算机和数据库容灾领域,尤其涉及一种数据库的容灾方法。【背景技术】
[0002] 容灾就是通过系统的存储备份,确保在各种不可预料的灾难来临之时,使得存储的数据信息仍然能够得以保全。数据库容灾就是为了防止本地数据库系统因各种灾难事件而崩溃从而导致数据服务中断,在异地建立一套与本地数据库系统相当的系统,当灾难出现后,远程系统可迅速承接本地数据库系统而提供数据服务,保证服务基本不中断。数据容灾的目的不仅要保护数据,更重要的是要能及时回复系统运行,保证数据服务的连续性。
[0003] 现有技术中,一些数据存储厂家和软件开发商都推出了自己的容灾方案,但是这些容灾方案通常对系统硬件要求苛刻,多数厂家的方案都只支持自己的硬件设备,因而受其限制,不但投资巨大,而且这些设备基本上都要求各个节点都采用完全相同的硬件系统和软件系统,则对软件内部设计缺陷带来的灾难缺乏足够的抵御能力。
[0004] 对于现有技术的上述缺点,还没有一种完善的解决方案。【发明内容】
[0005] 为了解决现有技术中的上述问题,本发明提出了一种数据库的容灾方法。
[0006] 本发明采用的技术方案如下:
[0007] 一种数据库的容灾方法,该方法包括以下步骤:
[0008] 步骤1:在数据库系统由多个基础库组成的条件下,设置基础库的容灾度t;
[0009] 步骤2:将所有基础库按照容灾度排序,
[0010] 步骤3:选择t个容灾度最小的基础库分配存储一个基础库,如果所有基础库都分配完毕则方法结束,否则返回步骤2。
[0011] 进一步地,每台容灾服务器都处于不同地区。
[0012] 进一步地,同一地区的容灾服务器的数量不超过预定义的上限数量。
[0013] 进一步地,对每个容灾服务器建立唯一的读写端口,所述读写端口会在容灾服务器下线、故障、数据迁移等情况发生时自动关闭。
[0014] 进一步地,其特征在于,各个容灾服务器之间的数据传输是加密传输。
[0015] 本发明的有益效果包括:通过分布式的容灾服务器,实现了数据库系统的容灾,并且对各个容灾服务器的硬件和软件不做限制,可以实现异构的容灾数据库。【附图说明】
[0016] 此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:
[0017] 图1是本发明方法所应用的系统结构图。
[0018] 图2是本发明方法的流程图。【具体实施方式】
[0019] 下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。
[0020] 参见附图1,其示出了本发明数据库容灾方法所适用的系统结构,该系统包括多台容灾服务器,用于分布式存储一个数据库系统。所有的容灾服务器都通过网络互相连接,相互之间可以互相传输数据,同时各容灾服务器接受调度服务器的管理和调度,并通过调度服务器向外部提供数据库服务。为了保证容灾,优选情况下,每一台容灾服务器都应当处于不同的地区,如果考虑到成本,不能使每台容灾服务器处于不同地区,在同一地区的容灾服务器也应当限制在某个上限数量之内。调度服务器本身不存储数据,数据是存储于各个容灾服务器中,因而调度服务器如果损坏并不会影响数据安全,只需要另外启动一台调度服务器就可以恢复数据库服务。为了保证安全,各个服务器之间可以使用加密的数据传输。
[0021] 参见附图2,其示出了本发明数据库容灾方法的基本步骤:
[0022] 步骤1:在数据库系统由多个基础库组成的条件下,设置基础库的容灾度t;
[0023] 步骤2:将所有基础库按照容灾度排序,
[0024] 步骤3:选择t个容灾度最小的基础库分配存储一个基础库,如果所有基础库都分配完毕则方法结束,否则返回步骤2。
[0025] 基于上述基本步骤,下面详细说明本发明的数据库容灾方法:
[0026] (1)将整个数据库切分成多个基础库。
[0027] 具体的切分方式取决于数据库内所存储的数据,以及数据库的组织形式。例如,可以基于数据表进行切分,即将多个数据表构成一个基础库;也可以根据存储的数据量进去切分,使得每个基础库所存储的数据量基本相同。考虑到分布式存储,基础库的数量可以根据具体情况所确定,但是一般不少于3个。
[0028] (2)设置同一个基础库的容灾数t。
[0029] 所述容灾数,指的是存储同一个基础库的容灾服务器的数量,假设共有n台容灾服务器,则每一个基础库都同时存储于其中的t台容灾服务器中,这意味着即使其中有t-1台容灾服务器故障,凭借剩余的1台容灾服务器,该基础库也能够得到恢复。为了保证容灾度,一般要求t≥3。另外,优选的,为了使得分布式存储的优势更好地发挥,数据分布平均,应当满足n≥mt/2,其中m是基础库的数量。
[0030] (3)在n台容灾服务器中任取t台,组成一个服务器组,通过排列组合,一共可以得到 个服务器组,记这些服务器组为 那么可以获得由这些服务器组所构成的一个集合S={Si,1≤i≤K}。
[0031] 例如,如果t=3,一共有5台容灾服务器,则通过排列组合,服务器组一共有个,即|S|=10。这一步骤实际上给出了存储同一基础库的t个服务器的所有可能的组合。
[0032] (4)计算每一台容灾服务器当前的容灾代价,具体的计算方法在后面说明。
[0033] 所述容灾代价实际上是容灾服务器存储数据基础库所要耗费的代价,其反应了该容灾服务器存储数据的效率。
[0034] (5)对于集合S中的每个服务器组,计算服务器组的容灾代价,所述服务器组的容灾代价是该服务器组中所有容灾服务器的容灾代价之和。
[0035] 所述容灾代价之和反映了一个基础库要存储到该服务器所要花费的总的容灾代价,通过该容灾代价和,可以衡量不同服务器组的优劣。
[0036] (6)对集合S中的服务器组,按照服务器组的容灾代价进行排序,将容灾代价最小的服务器组作为一个容灾组,并从集合S中删除。
[0037] (7)重复步骤4-6,一直到获取了m个容灾组。
[0038] 通过步骤4-6,选出了一个相对最优解,即将m个基础库在冗余度t下存储于n台容灾服务器的相对最优解,通过这一相对最优解,整个数据库的分布式存储效率得到了保证。
[0039] (8)每个容灾组分别存储一个基础库,即将容灾组中的每一台容灾服务器都存储相应基础库的一个复制。
[0040] m个容灾组与m个基础库一一对应,因此上述步骤实质上将m个基础库分别存储在m个容灾代价最小的服务器组中,并且每个基础库都有t个冗余,即使其中的t-1台服务器故障,也能够继续提供服务,并在故障修复后提供恢复数据。一方面达到了分布式存储的目的,另一方面也达到了冗余备份的目的。
[0041] (9)对于不在任何一个容灾组中的容灾服务器,使用该容灾服务器存储所有的基础库。
[0042] 可能由于某些容灾服务器容灾代价过大,或者由于容灾服务器数量很大,导致有一些容灾服务器没有在前面的步骤中被选择存储基础库,为了不浪费其存储能力,本发明使用这些服务器存储所有的基础库,作为进一步的分布式存储的备份。
[0043] 前述步骤(4)中,需要针对每一台容灾服务器计算当前的容灾代价,容灾代价可以有多种计算方式,下面是依据本发明的一个实施例的计算方式,但是本领域技术人员可以采用任意一种可行的其他计算方式,本发明对此不作限制。
[0044] (4.1)设n台容灾服务器为A1,A2,……,An;首先计算Ai(1≤i≤n)的数据代价Di,即Di=Ti/Li。其中,Ti是容灾服务器Ai到调度服务器的传输延迟时间(单位为秒),Li是容灾服务器Ai本身的数据吞吐率(单位为MB/秒)。
[0045] 如果各台容灾服务器在同一个局域网中,则所述传输延迟时间应该是相同的,这种情况下可以省略该时间的计算,直接用一个固定数值代替。
[0046] (4.2)计算容灾服务器Ai的容灾代价Ci,即
[0047]
[0048] 其中,Fi是Ai在已经获取的容灾组中出现的次数。例如,已经获取的容灾组为S1={A1,A2,A3}和S2={A1,A3,A4},那么当前的F1=2,即A1在已获取的两个容灾组中出现2次,同理有F2=1,F3=2。
[0049] 所述Fi反映了容灾服务器Ai中已有的基础库数量,每个基础库都会占用存储空间和数据传输带宽,导致容灾服务器负载增加,因而导致了容灾代价的增加。
[0050] 基于上述数据库的容灾方法,在数据库的管理上,同一个基础库在不同容灾服务器上都是同步的,因此如果n台容灾服务器中有一台丢失了数据,可以使用其他的容灾服务器为其恢复数据,例如,如果丢失数据的服务器上本来有k个基础库,那么就可以同时使用另外的相应于k个基础库的k台容灾服务器为其恢复数据。
[0051] 对每个容灾服务器建立唯一的读写端口,端口会在容灾服务器下线、故障、数据迁移等情况发生时自动关闭,从而保障了数据的正确读取。
[0052] 以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。