行业的进步,离不开从业者的奋斗与思考。在多年的读者来稿中,HIT专家网有幸见证了一批爱钻研、勤思考的作者的进步与成长,更有幸能与更多读者分享这些思考的闪光点。
医院在使用信息软件过程中产生了海量数据,这些数据信息会存放到不同类型的数据库中。作为信息软件的后台,数据库起到了关键支撑作用。数据库的故障或者损坏,会导致前台业务软件不能正常运行;如果数据丢失,更是会给医院和患者带来不可估量的损失。因此,医院对数据库中的海量数据进行备份和恢复,就显得尤为重要。
本文从笔者经历的一个真实案例谈起,与业界同仁共同探讨医院信息科应如何做好数据备份与恢复的问题。
十万火急!一个医院数据库损坏的真实案例
先介绍一下案例中这家医院的信息化建设情况:医院各类信息化、智能化系统加起来共有88个,基本的医疗业务运行模块,如HIS、CIS、NIS、 LIS、PACS、RIS、院感系统等都已经上线两年,但还有部分模块未上线,项目未正式验收。服务器采用7台物理主机组成的虚拟化平台,存储采用双活解决方案。HIS、CIS、NIS、LIS、PACS、RIS等业务系统的数据库均在虚拟服务器中运行,备份方法通过SQL作业异地差异备份,每3小时备份一次到灾备机房服务器上,此外通过备份一体机进行主营业务操作系统备份与主营业务数据库完整备份。LIS、PACS系统分别安装在两台虚拟服务器中,HIS、NIS、CIS系统安装在一个数据库中应用不同的实例。总体备份时间窗口比较紧张,在备份高峰期偶尔会出现系统卡顿现象。
某日半夜11点,这家医院的值班人员接到多个疗区及门诊医生电话,反馈医生站系统报错。值班人员遂联系信息科工程师及管理人员到场,检查发现:数据库系统日志突然剧增,导致整个存储盘爆满。关于SQL数据库事务日志的意外增大或充满整个存储空间的原因和预防方法,在此不再赘述。在场的信息科人员首先想到的解决方法是收缩数据库日志,但是经过几次操作无效。此时急诊等一些疗区已经电话不断,不论是白天还是黑夜,信息科的电话如果变得如此热闹,绝不是什么好事。为了尽快解决问题,让临床尽快恢复工作,现场人员虽然知道通过分离数据库进行删除日志的操作风险很大,但却是此时解决问题的最快办法。
怀着忐忑的心情,工程师进行了删除日志、附加数据库的操作,结果提示错误。反复操作多次,系统仍然报错。在场的每一位人员都脸色凝重、心情沉重,每一次铃声的响起都刺激着每个人的神经。时间已经过去两个小时,如果再不尽快恢复,天亮后患者前来就诊,门诊医生站依然存在故障,那将是一次很大的事故。
此时启动应急预案,还为时尚早。现场人员共同的想法是:无论如何也要在天亮之前把系统恢复,起码要保证让门诊医生站能看病。当机立断,工程师决定利用最近一次的差异备份还原系统。令人傻眼的是,备份数据仍然报错。此时真有点“心如死灰”,只能用备份一体机将前一天的完整备份进行恢复。备份一体机是在年前刚刚采购的,工程师对备份数据进行了还原测试,但差异备份失败,不知备份一体机中的备份数据是否能用。为了确保安全,医院信息科在凌晨1点多给厂家打去电话,请求支援。硬件厂家十分给力,技术工程师半夜起床给予支持。
时间一点点过去,看着还原数据库的进度在一点点增加,整个心都在煎熬。可以说那一刻,现场的每个人都希望青春快点流逝,数据库还原能瞬间完成。等到数据库还原完成,已经是凌晨5点多了。医生站终于能正常启动了,但由于数据库只恢复到前一天,也就是医生站缺少了前一天的数据。幸运的是,前一天是周日,就诊患者不多,产生的数据量并不大,但仍然造成了与HIS、NIS等业务系统的数据不同步。
具体查看医生站和进行分析后,医院信息科得到如下结果:(1)前一天住院和门诊就诊的患者信息,在医生站中丢失。(2)前一天在院患者开立的长期医嘱、临时医嘱、会诊记录,丢失。(3)前一天在院患者的长期医嘱、临时医嘱,如果进行停止、取消等操作后,状态显示未变。(4)前一天的患者出院、出区、转科等信息,医生站未能同步,仍然显示“在科”状态。(5)安排人员到门诊进行测试,完成挂号、收费环节再到医生站开立新医嘱时,系统提示检查、检验项目的医嘱已经执行,医嘱不能保存发送到HIS收费系统,提示报错,分析原因是医生站的前一天数据丢失,医生站在开立医嘱时,医嘱相关信息等产生的关键序号在HIS、NIS系统中已经存在,不能重复使用,所以产生冲突。(6)前一天新建的患者病案及病程记录,在电子病历系统中丢失。
发现上述主要问题时,已经是早上6点左右,大量患者即将来院就诊。为确保患者能够顺利就诊,医院信息科启动了应急预案,发布通知:临床、医技、财务收款、药房等部门,准备各种三联手写单据,备好应急系统信息包,准备医嘱、三目收费价格表(基本医疗保险药品目录、诊疗项目目录、医疗服务设施标准)等,供门诊、临床使用。
此时,软件公司的研发人员还没有联系上,医院信息科人员和现场工程师要解决医嘱不能发送保存的问题,让医生新开的医嘱序号不与HIS、NIS系统重复,必须修改种子库表(序号发生表)。经过数据跟踪,现场工程师发现了种子库表。此时也终于联系上了软件公司的研发工程师,得到确认后的解决方案是:需要在种子库表的主键列属性中标识种子数,也即在当前数据上都加入“100000”作为序号列的起始。时间紧迫,工程师先备份原表,并立即修改种子表。修改完成后,到门诊进行了全流程测试,测试正常,门诊业务可以恢复,但需要对前一天的复诊患者给予挂优诊号处理。早上7点多,门诊医生站撤销了应急预案,恢复正常业务,所幸没有因信息系统故障造成门诊秩序的混乱。
至于住院医生站数据缺失的数据及相关项目、事务状态,考虑可以参照NIS系统护理站的数据进行恢复。经电话沟通研发工程师,信息科及现场工程师根据其给出的解决意见,首先通过对比护士站的数据和HIS系统数据,对前一天新入院患者、转科患者、转床患者进行信息状态改变,使医生站能够正常显示患者信息。接着,根据护士站的医嘱状态信息对前一天做出改变的医嘱状态进行更改,也即按照医生站系统表结构,使用SQL语句执行插入丢失的前一天医嘱信息。以上操作完成之后,请临床主管医生和护士核对所负责患者的医嘱信息是否正确。至于部分没有可参照数据的、已丢失的病程记录等信息,只能进行补录。
由于数据不同步产生的一些问题,虽然上文描述比较简单,实际操作却很繁琐。期间还会遇到一些其它问题,比如增加序号列数据后,导致个别接口的数据字段或数据类型超限,出现报错等情况出现。
导致数据库损坏和数据丢失的原因
目前医疗行业的常用数据库包括Oracle、MySQL、DB2、SQL Server、PostgreSQL、Sybase数据库等。许多软件生产商开发的医疗业务系统,大多使用了其中一种或两种以上数据库。即使是只使用某一种数据库开发的软件,考虑到运行压力或系统需要,也会分库或分实例分开建立。虽然有些系统可以进行一体化设计,但也可能因某些销售目的将系统和数据库分开,达到方便销售、客户可选的需要。
导致数据库损坏和数据丢失的原因有很多。在更新或插入数据时,数据一般需要先在内存中驻留,如SQL会通过CheckPoint和Lazy Writer等过程将内存中的数据持久化到磁盘。如果磁盘出现坏道,或受硬件环境影响(如电磁干扰、电压、断电、温度、潮湿等),或是软件前端及数据库本身故障、网络中断、病毒感染、人为误操作等原因,都会导致数据库损坏或数据丢失。
解决数据库损坏和数据丢失最有效的方法,就是通过备份数据进行还原操作。目前数据库备份技术大致有LAN 备份、LAN Free备份和SAN Server-Free备份三种,备份策略可分为完整备份、增量备份、差分备份等。一般采用的热备份工具,除应用系统本身的备份工具外,还有很多第三方工具。
根据《信息安全技术信息系统灾难恢复规范》(GB/T 20988-2007),将灾难恢复能力划分为 6 级。其中第6级的灾难恢复能力等级最高,对于数据备份系统的要求是“完全数据备份至少每天一次,备份介质场外存放,远程短视频实时备份,实现数据零丢失”。这对信息系统的保护效果无疑是更好的,但同时成本也会急剧上升。
当前,医院信息化建设不断加大投入,但能实现“数据零丢失”的医院可能不多。原因之一就是前文提到医院信息系统模块繁多,同时使用了一种或几种不同的数据库。有的系统上线后,数据库文件逐步增大,数据库的备份和还原耗时很长。由于硬件系统资源有限,不可能对所有的业务数据库同时备份。在线备份时,即使同一时点备份的数据库也不可能同时完成。在业务量非常大的情况下,也会出现备份数据在各业务系统数据库不能同步等问题。这些都为医院的数据维护带来了隐忧。
几点思考与总结
虽然数据库损坏的情况不常见,但其危害是极其严重的。加强数据库的管理是重中之重,笔者对此进行了一些思考与总结。
首先,医院信息科要根据业务的重要程度,合理选择数据库备份技术、方法和策略。对相关的备份文件进行定期还原测试,认真执行相关应急演练。这也是国家信息安全等级保护制度及政策提出的要求。
其次,平时要掌握数据备份和恢复及存储拷贝文件的大致时间,掌握业务恢复时间,便于发生问题时能够准确判断是否需要、何时应该启动应急预案,做到操作时心中有数。
第三,要掌握各医疗业务系统软件的表结构、数据关系及数据流和数据同步内容。当出现数据不同步时,能在最短时间内进行恢复解决,尽快恢复业务,减少损失。
第四,如果医院互通数据的各主要业务系统应用的是不同的数据库或实例,可在各个系统建立主数据表,保证两个数据表的表结构一致、事务记录状态在各个系统保存本质特征,这样在出现两个系统数据不同步时,可以快速查询恢复。
第五,建议软件公司建立专业应急支援小组,服务医院客户。当客户遇到紧急问题时,也能尽快投身于抢救工作中,让客户有依靠,尽可能地帮助客户减少损失。这样的软件公司才能赢得更好的口碑。
医院信息科的人员是繁忙的、工作是杂乱的、心是忐忑的。天有不测风云,只有未雨绸缪,提前制定好数据库备份策略、数据还原的方法,加强日常数据库的维护管理,始终有着“备份、备份、再备份、冗余再加一”的思想,才能在出现问题时泰然自若、游刃有余,才能让信息化为我们的工作带来更好的价值,而不是“事故”甚至是“灾难”。
相关链接
- 暂无相关信息