APP下载

面向异地双活系统的数据库改造方法

2020-05-11朱克马永波徐景龙王雷

微型电脑应用 2020年1期
关键词:视图实例客户端

朱克 马永波 徐景龙 王雷

摘 要: 国网95598客服中心是国家电网公司供电服务的重要窗口,数据库分区分域的异地双活模式可以有效提高95598系统的可靠性。为保障双活系统的数据安全,95598核心业务系统容灾建设方案采用数据库分区分域的异地双活技术路线,通过数据库拆分和重新存储实现数据库的改造,并通过奇偶序列及自动生成主键的方式实现数据库的区分及快速存储,提高数据保护能力,保障其在正常情况及灾备状态下的数据一致性及可靠性。

关键词: 95598系统; 异地双活模式; 数据库改造

中圖分类号: TP311      文献标志码: A

Database Transformaton Method for Dstrbuted Dual-actve System

ZHU Ke, MA Yongbo, XU Jnglong, WANG Le*

(Servce Center, State Grd Corporaton Customer, Tanjn 300000)

Abstract: The 95598 Customer Servce Center s an mportant wndow for the State Grd Corporaton n provdng power. The relablty of the 95598 system can be effectvely mproved by the dual-actve mode of dstrbuted database. n order to ensure the data securty, the dsaster recovery constructon scheme of the 95598 core busness system adopts the dual-actve techncal route of dstrbuted database. The database s reconstructed by splttng and re-storng, and dstngushed and stored quckly by party sequence and auto-generatng prmary key. Through ths method, the data protecton ablty, the data consstency and relablty under normal and dsaster-preparedness condtons can be guaranteed.

Key words: 95598 system; Dstrbuted dual-actve mode; Database reconstructon

0 引言

国家电网公司客户服务中心负责承担各省95598服务工作质量的监督、检查与评价,为27家省(市)电力公司、4.4亿用电客户、11亿人口,提供全国统一标准的95598业务。其数据生产中心为单中心,但由于没有备用系统能够支持短时间的切换运行,若各数据库发生硬件故障,必然将导致较长时间业务的中断及数据丢失。

为了保障数据的安全性,使得在发生灾难的情况下数据库仍能为客服中心提供稳定可靠的数据来源,95598中心提出异地双活系统,即在两地分别设立数据生产中心,27个省公司的业务按照均衡分配至两个数据生产中心,在业务层面实现负荷分担;在数据层面上,两端数据中心更新本地数据库并向对端进行复制,当任意一方发生灾害事件时,另一方可接管所有的业务服务,保障系统业务的连续性。

在异地双活系统中,原有的单数据库将数据迁移新设立的对端数据库中,构建双活数据库体系。对于分布式数据库而言,数据库之间的数据主要面对弱一致性及数据冲突两大难题。为了解决数据冲突的问题,两数据库按照数据来源进行数据库的用户分区;为解决数据一致性问题,在数据复制之前按照一定的规则为不同的数据库生成序列。

1 设计思想

95598数据库类型为oracle数据库,在原数据库中心包含不同功能的各类数据库,例业务库,平台库,查询库,公共库等等,这些数据库共同为业务提供数据支持,故在双活系统中,为保障各系统中心能独立承担业务,原生产中心的数据首先采用数据库迁移技术在远程位置上生成另一份相同的数据,当本地数据库发生故障时,正在访问数据库的用户可利用异地数据库继续原有业务,从而构建双活数据库系统,减少故障带来的损失。

双活数据库由两个数据库中心构成,各数据库中心为独立的数据库系统,包含各自的数据库,客户端,中央处理机,数据库管理系统等,两个数据中心通过网络联结到一起。双活数据库系统要实现灾备状态下对任意生产中心业务服务的支持,一般具有以下特性。[1]

(1) 均衡网络负载

在双活数据库中,原数据库承载的业务按照负载均衡原理分配至两个数据库,均衡了网络负载;同时本地数据库保存对端数据库的本地拷贝,从而在灾备条件下,应用仅需访问本地拷贝而不需直接连接到对端数据库,减少了网络流量。

(2) 数据一致性

本地数据库与对端数据库的数据保持一致,在灾备状态下,可通过对端的数据库备份恢复数据库功能。

(3) 数据透明访问

双活数据库在逻辑上为同一系统,应用可根据指令访问对端数据,在操作过程中与访问本地数据无异。

(4) 事务完整性

双活数据库中任意一个数据库中心能支持所有事务的操作。

基于此,提出双活数据库改造模型,如图1所示。

原数据库中心A的各部分各数据库为保证系统事务完整性必不可少的组成部分,故将其数据迁移至数据库中心B,且保持结构功能不变。为均衡网络负载,将数据库中心A及B中的每个数据库按照数据来源分为A区数据及B区数据,在正常情况下,各区应用只访问和维护本区数据,在实现负载均衡的同时方便数据库管理。当本地数据进行更新后,通过复制技术向对端数据库进行备份,备份信息填入对应的数据存放区域。在灾难状态下,若本地生产中心无法正常支持服务,但本地数据库未遭到破坏,则对端数据中心通过用户权限访问本地数据中心的数据库,并进行信息的更改和存储;若本地数据库同时遭到破坏,则对端数据中心直接访问存放在对端数据库的备用数据来实现业务正常运行。

2 实现方法

2.1 数据库拆分

Oracle数据库的存储结构如图2所示。

分为逻辑结构及物理结构,其逻辑结构中,数据库由各表空间组成,每个表空间由段,区,Oracle数据块等结构结合,在物理结构上,每个表空间可包含多个数据文件。模式对象为数据库对象的集合,每个数据库用户仅对应于一个模式,在Oracle数据库中通过模式对象引用数据库的数据。[2]

在数据库改造模型中,由于改造后的數据库为各自的生产中心提供业务支持,同时向对端进行复制。为避免数据复制及业务操作作用于相同的数据而存在数据的保存冲突,需要对数据进行逻辑隔离,即双活两端同时写入操作的数据必须保证不同。由图2可知,为便于对本地数据库操作的同时接受对端备份的消息,可在用户层面上对各库数据进行来源拆分。故在双活数据库系统中,数据中心A操作业务的同时将数据更新至用户A中,与此同时数据中心用户B中接收来自数据中心B的复制数据。

在原数据中心A中,核心数据库为业务库及平台库,业务库保存核心业务支持系统业务办理的相关数据,平台库中保存系统组织结构,人员账号,人员权限,工作流信息及业务发生过程等相关信息,内含系统维护相关的信息。查询库中存储来自各省市营销数据信息,并供公共库,支撑库及日志库调取,以满足业务需求。各数据库功能如表1所示。

2.2 数据复制

Oracle数据库的高级复制环境分为多主复制,物化视图复制和多主复制与物化视图复制混合环境。多主复制指当网络中双活数据库中任意数据库的数据对象发生变化,此变化能传播到其他数据库中,使得两端达到数据同步的目的。多主复制分为同步复制和异步复制两种[3]。物化视图复制指定物化视图数据库进行操作,然后将数据的改变定时对其他数据库进行更新。

由于异地数据传输距离较长(距离1000公里以上),如果采用同步方式进行数据复制,那么就会造成系统的业务操作延时过长,会导致系统性能和服务能力下降,故双活数据库采用应用层异步复制的方式。对于报表库,采用物化视图复制。

2.2.1 异步复制

异步复制技术,也称为延迟事务,各数据库变化的信息将首先被保存到本地数据库中,当到达数据库复制的设定时间时,异步复制技术将变化的信息发送至目标数据库,完成数据复制过程,此种类型的复制技术可以减少远程访问代价及网络通信负载,从而提高系统响应速度。异地双活数据库中异地复制过程示意图,如图3所示。

其中待复制数据表为数据库中进行了更新的表。

触发器为数据库更新的反映机制,当数据库中表格进行数据的插入,更新及删除时,该表上的触发器将更改的信息写入简化的事务日志表中。

数据库DBMS_ALERT开发包具有通信及报警功能,数据库触发器触发后发送报警信号,用以记录改变信息的用户D,修改时间及被修改表名。目标数据库当收到报警信号后,通过报警信息找到被修改的位置,并进行更新。

延迟事务队列为暂存在本地数据库的待更改数据信息,包含事务日志表,用户D,修改时间等。

2.2.2 物化视图复制

双活数据库中,分布式报表是采用从业务数据库和平台数据库中抽取数据到Hadoop中进行统计,然后再将统计完的数据推送回数据库,供报表功能查询展示的模式。由于业务库和平台库用户进行了拆分,故在在业务数据库和平台数据库下分别创建独立的用户,在该用户下创建视图,将拆分后的表通过视图进行关联,分布式报表的数据抽取程序数据源由原用户指向到新建的视图用户下进行数据抽取。报表统计按原程序执行方式执行,统计后的数据推送到北中心报表库中。

北中心报表库与南中心报表库建立单向复制关系,统计后的报表数据从北中心复制到南中心报表库。两个中心报表展示分别连接到各自中心的报表库查询,如图4所示。

2.2.3 数据冲突解决策略

在双活数据库的复制技术中,由于缺少实时控制机制,故对数据库数据的增加,修改可能产生数据冲突,即同一个记录的拷贝在更新阶段被多次添加到不同的数据库。

为避免数据冲突现象,对各数据库在用户和表格层面上进行标记区分,制定统一的序列生成规则,从而当某数据库中心需要向对端复制数据时,能通过主键扫描快速找到对应序列的数据库,并通过该序列值判断目的数据库的位置,进行快速存储,从而避免记录多次增添,实现对数据库存储及调用的高效管理。具体步骤如下:

1) 各数据库用户生成对应序列

由图1可得,双活系统中心A,B各有N个对应的数据库,共2N个数据库。以x1,x3,x5,…,x2N-1标记A中心各数据库,以x2,x4,x6,…,x2N标记B中心各数据库,且A中心的x与B中心的x+1为同名数据库。每个数据库按照业务功能区分为多个用户,各数据库中存储本系统中心的数据,同时存储来自对端系统中心对应数据库中的数据。x中的第j个用户以aj表示,各用户按式(1)生成序列。yj=+(2N)·(j-1)

(1)  2) 各用户对应数据表生成主键

主键为数据库的数据表中具有标识作用的一行,能表征此表的属性或属性组,为各数据表建立主键联系能使数据库的复制和检索带来便捷,同时避开键值的矛盾区域,从而保证双活数据库数据的一致性。各用户表格首先按照公式(1)生成序列,然后将序列值以二进制的形式填入主键中。部分数据表主键值如表2所示。

此总自动编号的方法避免了手工输入序列的繁琐步骤,且随着数据库的扩大,主键值能自动完成编号,并将结果反馈给数据库。

2.3 数据库访问

在Oracle数据库中,将应用程序统称为数据库客户端,数据库通过数据库服务器进行管理,每个数据库对应一个Oracle服务实例,由数据库服务实例完成对相应Oracle数据库的访问操作。由于双活系统将每个数据库按照数据来源分为两个用户,故为了避免数据冲突,每个数据库设置两个服务实例,分别负责本地数据和备用数据的访问。其过程如图5所示。[4]

(1) 数据库客户端根据Oracle数据库服务器地址与其建立连接。

(2) 连接建立后,客户端发送会话请求报文,数据库服务器根据报文中的目标数据库P地址及全局服务标志,发送至对应的数据库实例中。若为正常状态,目标数据库实例为本地实例,若为灾备状态,目标数据库实例为对端实例。

(3) 监听器监测目标数据库实例准备工作是否完成,若监测到准备工作完成,则向客户端返回重定向报文,若准备工作失败,则返回拒绝报文,会话结束。

(4) 客户端接收反馈报文。若为拒绝报文,则客户端将返回拒绝原因结束会话;若为重定向报文,客户端将根据报文选择新的目标地址,再次连接服务器并建立会话请求。

(5) 服务实例接收客户端的请求,并检验用户的合法身份,若用户身份合法,则会话建立成功,用户在此基础上对目标数据库执行SQL操作,二者之间开始通信,反之,连接断开。

(6) 当客户端或服务器提出结束会话,则确认后断开连接。

在正常状态下,客户端访问数据库服务器的本地实例;在对端数据库发生异常情况下,客户端访问数据库服务器的对端用户实例,对其数据进行访问,完成对端业务服务,从而保障整个系统的稳定性。3 总结

本文介绍了95598异地双活系统中数据库的改造方法,数据库采用用户拆分及数据备份等方法保障了本地数据的安全性,在灾难发生时,系统可通过切换用户登录对应中心系统进行业务操作。在灾备环境下测试的结果显示双活数据库能实现数据一致性、完整性保障及关键业务数据本地保护,保证了用户业务的连续性。

参考文献

[1] 赖如勤. 基于Redo log的复制技术实现跨平台的数据库容灾应用研究[J]. 电子设计工程, 2017, 25(2):5-8.

[2] 朱涛, 郭进伟, 周欢,等. 分布式数据库中一致性与可用性的关系[J]. 软件学报, 2018(1):131-149.

[3] 夏彬. 基于Oracle高级复制功能的数据库同步研究与应用[J]. 信息系统工程, 2015(3):87.

[4] 谢萌. 基于Oracle数据库的网络安全访问机制的分析[J]. 通讯世界, 2016(9):23-24.

(收稿日期: 2018.10.23)

作者简介:朱克(1985-),男,中级工程师,博士,研究方向:电力企业信息化管理、电力自动化。

马永波(1981-),男,中级工程师,学士,研究方向:电力企业信息化管理、电力自动化。

徐景龙(1984-),男,初级工程师,学士,研究方向:电力企业信息化管理、電力自动化。

王雷(1981-)(通信作者),男,初级工程师,学士,研究方向:电力企业信息化管理、电力自动化。文章编号:1007-757X(2020)01-0120-03

猜你喜欢

视图实例客户端
虚拟专用网络访问保护机制研究
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
新闻客户端差异化发展策略
《投影与视图》单元测试题
Django 框架中通用类视图的用法
完形填空Ⅱ
完形填空Ⅰ
浅析IEEE 802.1x及其客户端软件