谢宾铭,王晓东
(南瑞集团有限公司,江苏 南京 211100)
近年来,信息化发展迅猛,信息是企业的生命之源,如何提高数据安全性及可用性,是当前企业信息化管理迫切需要解决的问题。电力行业是与人们生活、工作息息相关的重要行业[1-2],如果电力企业数据出现大规模损坏或丢失,造成电力中断,引起的损失将非常大,所以电力企业需保证在出现灾难性危害的情况下,区域网络中信息系统数据不会出现丢失和损坏现象,以便电力业务迅速恢复,最大程度降低损失[3-4]。电力企业通常通过建立集中式灾备中心提高数据安全性。然而在信息化发展的同时,存储复制方面出现了很大的问题,为此,需研究一种有效的区域网络中异构数据库存储复制技术。
传统异构数据库存储复制技术注重数据安全性[5],在信息系统出现故障或出现灾害的情况下,仅需保证数据不出现损坏或不出现丢失现象即可。但灾备中心更注重业务的时效性与可靠性[6],在电力信息系统出现大的故障或遭遇灾害时,应保持电力业务的可用性,在最短时间内恢复正常业务。所以针对存储的数据,通过数据库备份技术,利用网络把信息数据实时同步传输至灾备中心非常必要[7]。而且,为了提高恢复速度,灾备中心需设计一种高效的恢复技术,使得异地灾备中心可快速恢复电力数据。
本文构建面向区域网络中异构数据库(即电力企业灾备中心)的存储框架,其可提供多种服务,包括电力数据存储及管理、查询异构数据库中的数据等,存储框架如图1所示。
图1 区域网络中异构数据库存储框架
区域网络中异构数据库[8-9]包括内存数据库、传统数据库与异构存储单元,提供数据存储、查询与处理服务。
内存数据库是一种高效的数据处理层,采用I/O处理方式[8],较传统数据库处理速度快。传统数据库提供异构数据库存储服务,还能够提高系统的对外能力。异构存储单元能够为灾备中心提供性能高的数据存储与查询能力。
异构数据库存储技术即通过区域网络提供的不同存储空间对数据进行存储,本节描述通过定向随机游走方法对电力企业灾备中心环境下异构数据进行存储。
按照定向随机游走规则[9],在电力企业信息系统源数据包到达灾备中心节点v后,从v的全部邻居节点中任意选择某节点u继续访问。
假设N(o)为电力企业信息系统下一个节点o的邻居节点集合,用d(o)=|N(o)|描述节点o的邻居节点量,用c(o)描述定向随机游走当前访问节点o的次数,则邻居节点u通过下述步骤实现选择:
1)在电力信息系统正在访问节点v的邻居节点集合N(v)中任意选择2个备选节点,由其组成的集合用N′表示。
2)利用公式(1)选择备选节点,继续对其进行访问。
(1)
在上述分析的基础上,通过下述过程实现灾备中心环境下电力数据异构数据库存储:
在存储前,所有节点都存储一个初始值是0的数据包Yi,并且全部数据节点只有一个源数据包Xj。在存储的过程中,针对某数据节点,进行步数是cn ln n的定向随机游走,完成相应数据节点源数据包的传输;源数据包到达新节点后,新节点将以某种概率对源数据包进行接收,同时把获取的源数据包保存至内置存储数据包中;新节点依据定向随机游走规则继续对源数据包进行传输。在源数据传输次数达到cn ln n后,也就是N>cn ln n,源数据将被滤除。k个源数据全部被滤除后,即完成了灾备中心环境下区域网络中异构数据库存储。
本节依据多叉索引树[10]对灾备中心环境下区域网络中异构数据库中的数据进行查询处理,基本思想为:求出不同代表数据点与查询点间的间隔,利用若干节点完成并行处理,通过主节点将获取结果集合在一起,利用子树完成对其的递归处理,直到获取查询结果。其中节点个数共p+1个,p用于描述从节点个数。
通过多叉索引树完成对异构数据库中数据的查询时,关键是主节点处理过程[11],下面进行具体分析:
输入:查询数据库中的数据点d,相似范围t。
输出:查询结果。
1)把p个代表节点与查询点d发送至从节点,完成二者的间隔计算。
2)对从节点间隔计算结果进行接收。
3)如果接收的节点中还有未完成计算的代表点,则把代表点发送至从节点计算,并且重新执行步骤1;否则执行步骤4。
4)取能够满足式(2)的代表点ck所处子树指针childpoint。
q(dc,ck)=min (d(dc,ci))
(2)
式(2)中,dc代表待查询数据,d(dc,ci)代表查询点dc与内部节点中i个代表点间的间隔,q(dc,ck)代表查询点d与代表点ck间的相似性。
若childpoint指向节点是内部节点,那么重复本步骤;反之,执行步骤5。
5)把叶子节点中p个电力信息系统中数据点发送到从节点机完成间隔计算。
6)针对得到的间隔计算结果,如果该值比相似范围t低,则将其置于查询结果集中;如果相应叶子节点中还有数据点未实现间隔计算,则将其发送到从节点机完成计算,并重复步骤5;否则,查询结束,输出查询结果。
灾备中心环境下,电力企业异构数据库存储系统主要包括3层结构:数据库层、中间件层以及数据访问接口层,如图2所示。
图2 电力企业异构数据库存储系统总体方案
图2中,数据库层提供全内存模式;中间件层为存储方案的关键,主要由传统数据库引擎、异构数据库引擎以及数据调度单元构成。传统数据库引擎用于实现数据的存储与处理,异构数据库引擎用于实现异构数据库存储与处理,数据调度是在数据处理接口的基础上实现的,在异构数据库间实现数据输入与提取,为数据查询提供依据[12];数据访问接口层负责为上层应用提供不同的数据库接口。
在异构灾备中心被复制的电力企业业务数据主要包括结构化数据与非结构化数据[13],结构化数据即数据库数据,主要由电力企业数据库数据文件、在线日志等构成。非结构化数据是非数据库数据,主要是业务数据文件及domino数据等。
电力企业灾难备份中心是依据不同层级和技术实现的,其架构如图3所示。
图3 灾备中心架构
电力企业日常业务数据文件在生产中心运行,不同单位本地灾备中心与异地灾备中心均时刻处于备份状态。生产数据被存储后同步至本地灾备中心,被异步复制至异地灾备中心的生产数据与本地灾备中心的数据一致。
在生产中心发生灾难后,本地灾备中心会对数据进行恢复,并且本地灾备中心的数据会自主复制至异地灾备中心。
本节通过异构数据复制模型实现电力企业本地灾备中心至异地灾备中心数据的复制处理,复制模型主要包括日志提取、数据预处理、数据订阅以及数据装载,详细流程如图4所示。
图4 异构数据复制流程
有关数据备份的技术很多,重点在于保证备份与主数据不在相同节点上。本节采用基于一致性树分布的备份技术[14],将其称作异步顺序备份技术。
在一个含m个存储节点的一致性树分布系统中,针对任意id数据形成nb个备份,nb需符合公式(3)所示的条件:
nbmin (DP(node1),DP(node2),…,DP(noden))-1
(3)
式(3)中,DP(nodei)用于描述某节点的度积。
获取最高备份量后,把数据备份至Z(id+1,tree),Z(id+2,tree),…,Z(id+n,tree)相应节点中,其中Z(id+i,tree)代表依据灾备中心节点建立的一致性树。
通过以上对nb的约束能够保证备份数据和源数据不处于同一节点。
除此之外,通过异步顺序备份技术对本地灾备中心数据进行备份,能够保证备份数据的分布均匀性,避免某节点保存大规模备份数据,而剩余节点保存少量备份数据的现象出现。
完成本地灾备中心数据恢复时,把待恢复数据分割成若干部分,依次通过若干差异远程备份服务器实现数据恢复。在进行恢复的过程中,按照不同服务器数据恢复状态,对恢复任务进行调整分配,有效利用备份资源。最后把备份服务器恢复数据在本地灾备中心整合,获取完整的电力数据,实现数据恢复。详细过程为:
1)本地灾备中心服务器通过式(4)对待恢复数据进行分割,完成恢复任务的分配。
(4)
式(4)中,L为待恢复数据;Mi=loadi(ti),loadi(ti)用于描述备份服务器的负载;Li用于描述分配至备份服务器的任务。
2)本地灾备中心服务器对数据块摘要值进行计算,把不同备份服务器所需恢复的任务记录R传输至相应备份服务器,任务记录格式如下:
R={〈tid,offset,len,LTHi〉}
(5)
其中,tid用于描述灾备中心数据恢复任务标识符,该标识符是唯一的;offset用于描述远程备份服务器所需恢复数据的偏移地址;len用于描述待恢复数据块的长度;LTHi=H(Li),H用于描述求出的摘要值函数。
3)不同远程备份服务器接收本地灾备中心传输的任务记录,同时按照既定偏移量与数据块长度,对相应数据块Si进行读取。
4)不同远程备份服务器利用同一摘要值[15]求解法对数据块摘要值STHi=H(Si)进行计算,与本地灾备中心服务器传输的摘要值LTHi相比,如果二者存在差异,则认为该数据块两端数据不同,需完成对其的恢复,反之,直接执行步骤7。
5)不同远程备份服务器把对应数据块用恢复记录保存,传输至本地灾备中心。其恢复记录格式如下:
Rrecover={〈tid,offset,len,data〉}
(6)
6)本地灾备中心接收远程备份服务器传输的记录后,按照偏移量把数据写入磁盘对应位置,实现数据块恢复。
7)对是否还存在恢复任务进行判断,如果没有,则直接执行步骤9。
8)将所需时间最长的备份服务器任务配备给已完成恢复任务的服务器,并重新对任务进行分配,执行步骤2。
9)本地灾备中心接收恢复数据后,获得完整的电力数据,实现恢复。
以某电力企业为例,将本文提出的区域网络中异构数据库存储复制技术应用于该电力企业灾备中心,验证本文方法的有效性。
搭建电力企业灾备中心验证区,为本文方法的验证提供依据,图5是灾备中心验证流程。
图5 灾备中心验证流程
将某存储节点上运行灾备数据库划分成3个数据集进行实验,从数据导入、存储空间与数据查询3方面,对本文方法、Oracle方法和DELTA方法的存储性能进行比较测试,结果如表1所示。
表1 3种方法存储性能测试
项目数据库本文方法Oracle方法DELTA方法数据导入时间/sD155422269D275110251359D3210642353612存储空间/MBD121.2265.3540.39D242.6792.36108.69D3161.23359.36412.57平均查询时间/msD1105139208D2109156162D3112175169
分析表1可知,本文方法针对不同数据集,数据导入时间、所需存储空间及平均查询时间均远远低于Oracle方法和DELTA方法,验证了本文方法在存储方面的性能。
为了验证本文方法复制性能,给出本文方法、Oracle方法和DELTA方法复制数据在测试环境下4个月内数据的不一致故障情况比较结果,见表2。
表2 3种方法复制性能测试
方法中断时间中断原因本文方法2018/03/05 22:15出现不支持的数据类型Oracle方法2018/01/05 4:22数据不一致,没有找到删除数据2018/02/09 21:32数据不一致,重复插入数据2018/02/25 10:58出现不支持的数据类型2018/03/16 18:26数据不一致,重复插入数据DELTA方法2018/01/22 12:15数据不一致,没有找到删除数据2018/02/09 16:38出现不支持的数据类型2018/04/05 23:08数据不一致,重复插入数据
分析表2可知,本文方法复制模型能够支持大部分数据库对象及相应操作,能够保证数据的一致性与完整性,防止因数据结构变化导致复制中断,性能明显优于其它2种方法。
本地灾备数据备份包括1台本地服务器与5台备份服务器,在实验过程中,向本地灾备中心写入数据,采用本文方法、Oracle方法和DELTA方法完成数据的备份与恢复,对备份流量和恢复速度进行监测,结果如表3和表4所示。
表3 3种方法备份性能测试
方法备份服务器流量/(MB·s-1)备份服务器1备份服务器2备份服务器3备份服务器4备份服务器5本文方法5.065.0255.055.03Oracle方法4.353.622.194.064.95DELTA方法4.163.752.564.932.68
表4 3种方法恢复性能测试
方法恢复数据大小/GB246810本文方法/(MB·s-1)58.2252.3155.6559.2660.15Oracle方法/(MB·s-1)40.3232.1541.5632.6830.39DELTA方法/(MB·s-1)12.6915.2213.8112.0811.56
分析表3可知,本文方法备份流量都稳定在5 MB·s-1左右,而Oracle方法和DELTA方法备份流量不稳定,时高时低。完成备份后,通过摘要值计算,发现备份结果完全一致,说明本文方法备份效率高,性能稳定,且备份结果可靠。
分析表4可以看出,与Oracle方法和DELTA方法相比,本文方法恢复速度最快,均超过50 MB·s-1,而且在恢复数据量很大的情况下仍可保证高恢复速度,验证了本文方法的有效性。
本文研究了区域网络中异构数据库复制问题,提出一种新的区域网络中异构数据库存储复制技术,介绍了存储复制关键技术,将其应用于实际电力企业灾备中心,结果表明,所提技术整体性能高。