医院备份数据库自动恢复和监测的研究与应用

2021-03-10 09:20任浩
电子技术与软件工程 2021年20期
关键词:备份文件校验报表

任浩

(山西省儿童医院 山西省太原市 030012)

1 背景

医院信息数据的备份和恢复是信息安全的原则和底线。国家卫生健康委在2021年 3月 15日发布的《医院智慧管理分级评估标准体系(试行)》、2020年12月21日发布的《三级医院评审标准(2020年版)》、2020年7月30日发布的《医院信息互联互通标准化成熟度测评方案(2020年版)》、2018年12月3日发布的《电子病历系统应用水平分级评价标准(试行)》和国家标准化管理委员会在2019年5月10日发布的《信息安全技术—网络安全等级保护基本要求》最新重要文件中,都对恢复医院备份数据库做出了要求,明确以恢复时间目标(RTO)与恢复点目标(RPO)为考核指标,强调落实突发事件响应机制,保证业务的连续性和信息可追溯性[1]。

2 现状分析

选取某家达到电子病历评审四级的三甲医院进行信息化现状分析,结果发现医院已拥有业务信息系统94 个,业务服务器121 个,数据库服务器83 个,数据库文件158 个,其中SQL SERVER 数据库文件139 个,ORACEL 数据库文件19 个。医院通过数据库备份策略进行数据库的自动备份,使用爱数、英方等备份软、硬件进行数据库自动异地归档、迁移和记录,人工对重要的业务数据库进行恢复和验证,恢复4 个重要数据库需要6.4 个小时。分析结论是目前数据恢复方式即费人、费时、费力,又无法对数据恢复的完整性、准确性、可追溯性等安全底线提供完全保障,不符合医院信息化发展要求。

3 需求分析

3.1 备份数据库自动检测、定期删除和记录

形成备份数据库的标准清单,每天对照标准清单对备份数据库存在性、位置进行自动检测,记录检测信息。根据计算和存储资源,灵活设置、调整备份数据库文件保留时间周期,定时检测和删除超期的文件,记录删除信息。

3.2 根据自定义恢复策略自动完成数据库恢复验证

根据恢复数据库属性,制定恢复数据库的时间和定义最新备份数据库的策略,定时自动按照策略将数据库文件和日志恢复至指定位置,自动验证恢复结果,保持恢复后的数据库名称与正式在用的数据库名称一致,记录数据库恢复和验证信息[2]。

3.3 监测和查看数据恢复情况

在任何一台医院内网终端使用用户名和密码认证,以网页的形式分页展示数据库恢复的最新情况,定时自动刷新恢复信息,支持在恢复结果中查找自定义内容,展示信息可以导出为EXCEL、PDF 等格式文件用于备案和归档[3]。

4 系统设计

基于研究医院88%数据库文件为SQL 数据库,系统设计以SQL 数据库文件为研究对象,系统技术结构由服务引擎和前端程序两部分组成(图1)。服务引擎搭建在装有WINDOWS 2012 R2 操作系统和SQL SERVER 2014 数据库的恢复服务器上,按照数据校验、恢复、记录和绘制的工作流程(图2),为客户端的前端程序提供信息收集、清理、判断、组合、存储和抽取的引擎服务。服务端的前端程序采用C/S 构架,稳定、安全的对备份数据库文件执行过期检测和删除操作。客户端的前端程序采用B/S 架构,在灵活、快速部署后,可以多点多用户的浏览、查询监测情况[4]。

图1:系统结构图

图2:系统工作流程图

4.1 服务引擎

4.1.1 恢复文件监测和记录服务

在SQL 数据库中创建存储过程,定义表示还原文件名称、存放路径和恢复日期与创建日期差异天数的字符型和数值型存储过程参数变量,用于恢复不同间距日期要求下自定义文件名称和路径的文件。

将准备恢复的文件名称与备份文件名称相对符合程度,作为判断备份数据文件存在的依据。由于SQL 自动备份数据库文件名称以“数据库名_年_月_日_时分秒.bak”的格式命令,所以准备恢复的文件名称需按照特定格式类型定义。使用DATEADD(datepart,number,date)函数,获取间距当前日期指定天数的恢复日期,使用DATEPART(datepart,date) 函数,分别获取年、月、日。通过CAST (expression AS data_type)和RIGHT(age,length) 函数,将日期转换字符型后返回最右边2 个字符串,达到月和日双字节字符的要求,如9月以09 表示。最后用SET 命令给定义的恢复文件名称局部变量赋值为“文件名称过程参数+'_'+年局部变量+'_'+月局部变量+'_'+日局部变量+'_%.bak'[5]。

创建备份文件检查表(表1)记录目前备份数据的信息,并在存储过程中创建该检查表的临时表,用于存放缓存数据,记录每次校验时间,提高存取效率。通过EXEC 调用xp_dirtree 存储过程,获取到指定存放路径下文件名称、文件夹深度和文件数量信息,使用insert into 、update 语句和GETDATE() 函数将获取到的信息和当前检查时间记录在备份文件检查表内。使用“select 1 from 检查临时表 where AName like 文件名称变量”语句,在备份文件检查临时表中查询文件名称匹配情况,通过if exists 语句对返回真值的情况继续执行数据恢复服务,对返回假值的不存在情况进行记录后返回。

表1:dirtree(备份文件检查表)表的结构

4.1.2 数据还原和记录服务

在SQL 数据库设计的服务引擎存储过程中,定义数据库实例名称、恢复数据库和日志文件名称、恢复数据库和日志文件放置路径的字符型参数变量。通过“select TOP 1 AName from 检查临时表where AName like 参数”语句,从备份文件检查临时表文件名称字段中获得文件完整名称,与存放路径共同组成恢复文件的绝对路径。

创建恢复结果记录表(表2)记录恢复结果信息,使用restore database 数据库恢复语句,将绝对路径下的数据库和日志文件恢复到还原数据存放路径下。使用if(@@error=0)语句,根据数据库恢复语句执行情况判断恢复数据库是否成功,并将恢复的开始时间、结束时间、恢复文件名称和结果记录在恢复结果记录表内。

表2:ExecuteResult(恢复结果记录表)表的结构

4.1.3 定期执行和记录服务

启用SQL 数据库代理服务,为每个需要恢复的文件创建执行服务作业,在作业步骤中使用“Alter Database 数据库名SET OFFLINE WITH ROLLBACK IMMEDIATE”语句,即可以将失败的数据库恢复服务断开[6]立即回滚事务,又可以断开用户与已还原数据库的连接,保证恢复服务顺利执行。调用服务引擎存储过程,给存储过程中的参数变量赋值恢复文件信息。创建执行计划,设置作业执行的类型、频率和持续时间。数据库自动记录作业的执行情况,在查看历史作业选项中,查询每个文件执行作业完成状态,可根据实际需要,在SQL 代理属性中调整保存历史记录的文件大小和时长。

4.1.4 结果展示服务

在SQL Server Reporting Services 的报表服务中,利用数据库中的Report Builder 工具,设置数据源类型、凭据等数据源信息,添加备份文件检查表和恢复结果记录表数据集,设计和绘制展示报表样式[7]。由于每天备份文件存放记录表中记录数据较多,为方便查询和展示,定义一个时间参数和增加数据集 “where date>时间参数”的查询条件语句,用户可查询指定时间前的信息,默认仅展示当日数据信息。通过报表安全性选项,创建和编辑报表使用权限,分配报表生成器、发布者等角色,设置在不同使用场景下的报表使用账户信息。

4.2 前端程序

服务器程序直接使用文件定时删除工具,将全部恢复文件的存放路径添加到软件中,设置保留天数和每天自动检测、删除的时间,开启定时删除功能。客户端程序安装和使用360 浏览器,在菜单的工具选项中设置自动刷新频率和启动自动刷新功能,输入报表地址和用户名、密码后即可使用。

5 功能实现

5.1 恢复文件过期检测和删除

设置和使用成熟工具快速实现了在设定存放恢复文件的路径下,每天自动定时或手工删除检测到的过期文件,任意设置和调整文件路径、保留恢复文件的天数,自动产生检测日志文件,并将删除文件的绝对路径名称和创建时间记录在可查询和归档的日志文件中(图3)。

图3:恢复文件过期检测和删除实现效果图

5.2 数据校验和恢复

利用现有资源工具,开发和运行功能实现了根据恢复文件大小和服务器性能自由制定恢复策略,按照设定时间自动收集策略下的文件信息,将信息存入到数据库中,校验恢复数据存在性和数据与策略匹配情况,对校验和匹配都成功的数据进行自动数据库恢复,记录校验和恢复过程结果(图4)。

图4:数据校验和恢复实现效果图

5.3 恢复结果展示

启用数据库报表服务,部署和发布自制报表实现了定义展示数据源,抽取记录表数据,自由设置和绘制数据格式、筛选条件、报表样式和展示界面,灵活配置刷新频率、报表超时时间和报表副本属性。用户通过浏览器按照角色分配,实现对监测数据的管理、浏览和查询操作,展示界面拥有查询、自动刷新、分页展示、保存和打印等功能(图5)。

图5:恢复结果展示实现效果图

6 应用效果

系统针对29 个主要业务SQL 数据库测试后,于2021年3月8日正式启用上线,已平稳有效运行了6 个月以上,自动恢复数据库成功率达到96.7%,在自动异地备份的基础上,实现了自动对异地备份文件校验、还原、监测和提醒。系统运行期间,平均每天节省了11.2 个小时重复工作内容,核减了运维人员1 名,及时发现故障率从上线前的11.2%提高到了96.1%。系统发现和展示的问题精准有效,完成问题解决平均在15 分种以内,共解决了6 起由于存储空间满、数据库服务异常、异地备份软件故障等原因导致恢复失败的问题,满足了设计需求,为安全底线提供了保障。今后在扩充恢复数据库服务器的数量和存储容量后,将全部备份数据库有规律周期性的恢复,同时加强监测人员安全意识,落实安全责任,全面达到安全要求。

猜你喜欢
备份文件校验报表
继电保护装置意外掉电的保护措施研究
LabWindows/CVI中Excel报表技术研究
炉温均匀性校验在铸锻企业的应用
从三大报表读懂养猪人的成绩单
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法
锅炉安全阀在线校验不确定度评定
月度报表
月度报表
巧用WinRAR轻松分类备份文件