黄伟
摘要: 目的:基于Oracle RAC和DataGuard技术构建医院高可用HIS系统,保障HIS业务系统平稳运行,生产数据安全可靠。方法:运用RAC技术在医院数据中心部署HIS系统作为主库,同时在异地数据中心部署DataGuard作为备库,主库LNS进程实时传输HIS主库在线以及归档日志至DataGuard备库进行日志重演,实现数据备份。结果:整套系统的设计无单点故障,将容灾和备份相结合,将二者融为一体。结论:通过 RAC和DataGuard技术构建的HIS系统可以有效地减少医院HIS系统宕机率,是行之有效的高可用建设方案。
关键词: RAC;DataGuard;高可用;容灾;备份
中图分类号:TP392 文献标识码:A
文章编号:1009-3044(2021)13-0217-03
Abstract:Objective: Based on Oracle RAC and DataGuard technology, we build our highly available HIS system to ensure the smooth operation of HIS business system and the safety and reliability of production data. Methods: Using RAC technology to deploy HIS system as the main library in our data center, and dataaGuard as the repository in the offso-location data center, transmitting THE main library online and archived logs to DataGuard repository in real time through ORACLE Net network, the repository log receiving process RFS saves the master library log to the local, and the log application process MRP implements log repetition in the DataGuard host to achieve data backup. The DataGuard host is also managed through Data Guard Broker, and the RAC master library is automatically Failvoer repository in the event of a failure. Results: The whole system is designed with no single point of failure, which combines disaster tolerance and backup to combine the two. Conclusion: The HIS system built by RAC and DataGuard technology can effectively reduce the downtime rate of hospital HIS system, and is an effective high-availability construction scheme.
Keywords: RAC; DataGuard; Highly available; Disaster tolerance; Backup
1 引言
近年来,随着医疗信息化水平的提升,各级医院逐步建成以HIS为中心的门诊收费、住院收费、住院医生站、电子病历等医院信息化系统,医院HIS系统的整体稳定性决定了医院能否正常运营。因此构建高可用的HIS系统不仅可以提高医院的服务水平与核心竞争力,同时还可以提升医生的工作效率,使医生有更多的时间为患者服务,从而提升患者满意度和信任度,无形之中树立起了良好的口碑。本研究旨在运用RAC和DataGuard技术实现构建高可用医院HIS系统,保障医院业务平稳运行以及生产数据安全,从而更好地为患者服务。
2 资料与方法
2.1 RAC技术介绍
Oracle RAC 是运行于集群ClusterWare软件之上,用来在集群环境下实现多实例共享数据库,以保证应用的高可用性;同时可以自动实现并行处理及负载均衡,并能实现数据库在故障时的容错和无断点恢复,如果集群内的一个节点发生故障,Oracle 将可以继续在其余的节点上运行。它是oracle数据库支持网络计算环境的核心技术 [1] 。RAC的实质是位于不同操作系统的Oracle实例节点同时访问同一个Oracle数据库,每个节点间通过私有网络进行通信,互相监控节点的运行状态,oracle数据库所有的數据文件、联机日志文件、控制文件、参数文件等均放在集群的共享存储设备上,RAC的基本架构如图1所示:
2.2 DataGuard技术介绍
Oracle DataGuard是Oacle数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用这些日志文件,从而使目标数据库与源数据库保持同步,是一种数据库级别的高可用性方案[2]。DataGuard可以提供Oracle数据库的冗灾、数据保护、故障恢复等,实现数据库快速切换与灾难性恢复。在生产数据库的保证"事务一致性"时,使用生产库的物理全备份创建备库,备库会通过生产库传输过来的归档日志或重做条目自动维护备用数据库。可以根据不同业务需求部署为最大保护、最大可用性、最大性能三种部署模式 [2]。
2.3 设计与方法
2.3.1高可用HIS方案设计
本方案中通过在医院主数据中心部署双节点RAC主数据库,在医院灾备机房部署双节点DataGuard灾备数据库。如图2所示所有应用程序通过RAC的SCAN IP连接到RAC主数据库上,主库上启用RAC负载均衡和透明切换Failover功能,应用程序所有的事务产生的任何数据变化首先会记录在本地在线和归档日志文件中、同时主库LNS进程将产生变化的日志文件通过Oracle Net传输至DataGuard备库。RSF日志接收进程将接收的日志存入备库StandBy日志文件中,日志应用进程MRP应用接收的日志,从而实现和主库数据同步以及异地灾备功能,通过配置Data Guard Broker管理Data Guard 备库,当监听到主库故障时自动进行failover至备库 [3]。
如果主RAC数据库的某个节点出现如主机故障、网络故障时该节点上的 SCAN IP会自动漂移至该RAC数据库的另一个节点,已经连接在发生故障的节点上的会话,会通过透明切换的功能,将这些会话转移至其他另一个节点上继续运行。而这些错误的发生,对应用程序而言没有任何影响,不需要做任何修改,应用程序就可以继续在主RAC数据库上继续运行,整个过程对用户是透明无感知的。
如果主RAC数据库两个节点都出现故障,此时则主RAC数据库将完全停止,需要对主RAC数据库进行恢复才可以继续使用。当Data Guard Broker监听到RAC主库完全故障时,迅速将Data Guard备库激活成主库,确保业务的正常运行。
2.3.2高可用数据容灾方法
主RAC库hisdb上日志同步模式启用最大可用性模式,将主库log_archive_dest_2日志保存路径通过LGWR进程采用ASYNC异步模式同步至灾备主机hisdg上,同时指定hisdb和hisdg联机数据文件和日志文件在角色切换时转换关系。
sql> alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FIL E_DEST db_unique_name=hisdb valid_for=(ALL_LOGFILES, ALL_ROLES)'; log_archive_dest_2='SERV ICE=hisdg LGWR ASYNC db_unique_name=hisdg valid_for=(ONLINE_LOGFIL ES,PRIMARY_ROLE)' scope=both sid=*;
sql> alter system set *.db_file_name_convert=('hisdg',hisdb') scope=both sid=*;
sql>alter system set *.log_file_name_convert= (hisdg,'hisdb') scope=both sid=*;
备库hisdg上日志同步模式也启用最大可用性模式,将备库log_archive_dest_2日志保存路径通过LGWR进程采用ASYNC异步模式同步主库hisdb上,同时指定角色切换时联机数据文件和日志文件数据转换关系。
sql> alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FIL E_DEST db_unique_name=hisdg valid_for=(ALL_LOGFILES, ALL_ROLES)'; log_archive_dest_2='SERV ICE=hisdb LGWR ASYNC db_unique_name=hisdb valid_for=(ONLINE_LOGFIL ES,PRIMARY_ROLE)' scope=both sid=*;
sql> alter system set *.db_file_name_convert=(hisdb,hisdg') scope=both sid=*;
sql>alter system set *.log_file_name_convert= (hisdb,'hisdg') scope=both sid=*;
备库启用实时日志同步接收进程,RFS将主库日志保存至本地,日志应用进程MRP在备库主机实现日志重演,实现数据异地备份 [4]。
Sql> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
2.3.3 Data Guard Broker自動Failvoer管理
通过Data Guard Broker 分布式管理框架,自动化Data Guard配置的创建、维护和监视,并使用DGMGRL命令行管理工具简化对Data Guard主机的管理,进行集中化的统一管理 [5]。配置Data Guard 为最高可用性或最佳性能模式同时启用 Fast-Start Failover 在Broker 的基础上再增加了一个单独的 observer,用来监控 hisdb和 hisdg数据库的状态,一旦 hisdb不可用,observer 就会自动的切换到指定的备库上,同时客户端启用TAF功能。当数据库出现故障时自动检测发现主机故障,实现主备切换,故障转移,以此保障HIS业务系统的高可用性。
3 成效
3.1 实现高可用HIS无单点故障
通过RAC双机模式部署的HIS系统,采用双击并行的方式,通过虚拟SCAN IP地址对外提供HIS服务。RAC集群的所有成员都同时接收对外请求,实现了容错、单点的故障解决。故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化,能够保证在集群中只要有一个节点存活,就能正常对外提供服务。同时可以实现多节点负载均衡,不同节点可以相互配合,分担负载,可以实现基于服务端或者客户端的负载均衡,有效保障了HIS的稳定性。
3.2 实现HIS生产数据容灾
依靠Data Guard全面的创建、维护、管理和监控一个或多个备数据库,使得生产HIS数据库在遇到灾难和数据损坏中得以幸存。Data Guard 实时同步生产数据,维护备数据库作为生产数据库的事务一致性拷贝。如生产数据库因为计划的或计划外的突发中断而变得不可用。Data Guard 能切換任何备数据为生产角色,从而最小化中断引起的宕机时间。将传统的备份、恢复和cluster技术一起使用,以提供高级别的数据保护和数据可用性及容灾。
3.3 实现HIS故障时自动切换
采用分布式的管理构架,自动化Data Guard 配置的创建、维护、和监控。当HIS数据库变得不可用时快速启动故障转移来自动转移故障。由Data Guard broker自行决定是否需要故障转移,并自动启动故障转移到指定的目标备数据库,无需DBA的介入并且不丢失数据,实现自动无缝、无感知切换。
4 讨论
HIS简称医院运营管理系统,是为医院的整体运行提供全面的自动化运营管理及各种医疗服务的信息系统,是医院日常业务正常开展的核心所在。传统的HIS系统采用单台主机提供服务的方式存在很多弊端,容易形成单点故障,单台HIS提供服务方式在发生系统故障时HIS服务将不可用,存在安全风险。传统基于的RMAN的本地数据备份方式,没有完全实现容灾的功能,故障时需DBA手工恢复且恢复时间较长,恢复期间HIS业务将服务使用,这是医院无法承受的 [6]。
目前随着国家公立医院智慧医院建设以及三级公立医院绩效级考核工作的推进,医院在以HIS系统为中心信息化建设工作中对整体HIS系统日常系统的稳定性、可靠性以及生产数据安全性的要求越来越高。这也是医院智慧医院评级、互联互通等级测评以及电子病历评级工作中的最基础要求。为了行之有效的解决这类问题,规避传统HIS系统的设计弊端,唯一解决的方法即彻底颠覆传统HIS的设计思想,建立可靠、安全、节约成本的HIS系统。
相比于传统的HIS系统,基于RAC+DataGuard技术构建的HIS系统具有以下优点:①解决单点故障:如果有节点故障,其他节点可以继续提供服务和多节点负载均衡,不同节点可以相互配合分担负载。②高可用服务:实现故障容错和无缝切换,将硬件和软件错误造成的影响最小化,能够保证在集群中只要有一个节点存活,就能正常对外提供服务。③全方位的数据容灾:生产数据实时同步至异地主机,确保数据安全,实时监控主服务状态,故障时自动无缝切换接管。④节约成本:能使用较低廉的服务器来实现高可用性、高吞吐量的集群环境,比通过使用高端服务器增加硬件实现高可用性、高吞吐量花费的成本低很多。因此基于RAC+DataGuard技术构建的HIS系统突破传HIS系统的局限,更加灵活、有效地在医疗机构中发挥作用,应得到积极研究与推广应用。
参考文献:
[1] 张晓明.大话Oracle RAC:集群、高可用性、备份与恢复[M].北京:人民邮电出版社,2009.
[2] 林树泽,卢芬,柳冬青.Oracle DBA 高可用、备份恢复与性能优化[M].北京:清华大学出版社,2015.
[3] 乔梁. Oracle RAC集群运行模式研究与分析[J]. 内蒙古石油化工,2019(4):13-14.
[4] 李鹏.Oracle数据库RAC技术解决方案及分析[J].电脑编程技巧与维护,2013(24):31-32,45.
[5] 李丙洋.涂抹Oracle:三思笔记之一步一步学ORACLE[M].北京:水利水电出版社,2010.
[6] 盖国强.Oracle DBA手记·4:数据安全警示录[M].北京:电子工业出版社,2012.
【通联编辑:王力】