计量信息数据库高可用性解决方案
2012-04-26无锡市计量测试中心
陈 超/无锡市计量测试中心
0 引言
随着计量检测业务的不断发展,计量管理信息系统的数据库的数据量日益庞大,计量检测机构正常业务的开展对信息系统的依赖性越来越大,对系统的保护和对系统数据的防灾显得越来越重要。计量信息系统需要不间断为计量检测人员提供服务,即使发生短暂的业务中断,也会导致很大的经济损失。因此保证系统数据库的高可用性、安全性尤为重要。所以,本文提出了基于Oracle RAC(甲骨文数据库实时应用集群)的集群技术的高可用性解决方案,通过Oracle RAC的集群技术提高计量信息系统的可用性、可靠性。
1 集群技术
在计算机系统中,可用性可定义为MTTF(平均失效前时间)/(MTTF+MTTR(平均恢复前时间))×100%,即系统保持正常运行时间的百分比。按照标准划分,可用水平为99.9%,即每年停机时间<8.8 h的系统,称为HA(High Availability)(高可用性)。因此,为了最大限度地保障网络的服务质量,HA架构越来越多地得到企业的认可和支持。HA架构追求的就是最高的服务质量,即高可用性、高可靠性和高安全性。
集群(Cluster)是由多个计算机(Node)组成一个整体向用户提供某种网络资源。集群技术开始于20世纪70年代,以Linux集群的应用最为广泛,具有高可扩展性、高性能和高可用性。在目前最流行的关键业务如数据库的高可用性群集应用方案中,双机技术和Oracle RAC成为最受瞩目的2个亮点。
2 Oracle RAC集群方案
Oracle提出的真正应用集群(RAC)概念,采用服务漂移、VIP漂移和TAF透明故障切换等新技术,能有效解决常见的软硬件故障引起的死机,如SQL(结构化查询语言)语句故障、用户进程故障、网络故障、用户错误故障、实例故障和介质故障等。在Oracle RAC中,CRS(集群就绪服务)服务协调所有集群结点统一工作,并自动根据硬件的故障情况,实时删除或增加集群结点、动态管理和维护集群的工作,具有极大的可伸缩性、低成本和高可用性。
本文提出基于RAC模式典型的两节点Oracle RAC结构,结构图如图1所示。
图1 两节点RAC系统结构图
数据库服务器Server A和Server B是一套2节点的集群系统,两节点上分别运行着相互独立的数据库实例进程A和进程B。两个实例提供相同的数据库服务名(Service Name),通过集群文件系统共享相同的数据文件。首先,两个数据库实例节点通过“集群心跳”彼此探测对方是否存活,维持集群状态。其次,RAC的Cache Fusion(互联机制访问)技术利用“集群心跳”来同步各节点内存中已经变化的数据,从而保持数据以及服务状态的一致性,也大大提高了数据的同步效率。这样,当一个节点停止服务,应用端会自动连接另一个节点来完成刚才失败的事务。由于各节点数据一致性,事务的容错得以成功。
3 两节点RAC模式的连接与测试
3.1 两节点RAC测试平台
在Oracle RAC中,通过虚地址(VIP)和服务的漂移完成故障切换,保证数据库的HA特性。在每个RAC节点上,配置了公用地址、私有地址和虚地址VIP。当某个节点发生故障时,其VIP会自动漂移到另一个节点上,并在该节点上创建相应的服务,保证应用系统的正常服务。服务是Oracle的一个基本特征,可以在单实例中使用,也可以在RAC环境中使用。在RAC环境中,服务运行在一个或多个实例之上,它能够让RAC系统将集群数据库的所有资源集成为一个单一的系统映像,这样可以最优化集群的可管理性,简单化系统的配置、测试、灾难恢复和降低管理成本。服务实现了数据库的透明连接,用户通过服务名连接数据库,不用关心到底是哪个实例在真正执行SQL应用。
本文提出的RAC系统有2个节点,运行一个服务EDU(引擎可调度单元),该服务默认运行在主机1(Server A)和主机2(Server B)上。Oracle RAC测试环境配置如图2所示。
图2 Oracle RAC 测试环境配置
用户连接RAC时,通常使用tnsnames.Ora网络配置文件,该文件由Oracle的net客户端创建,具有连通性、可管理性、可缩放性、安全性和可访问性等特点,可以通过配置某些参数来实现连接时故障切换、透明应用程序故障切换、客户端负载平衡和服务器端负载平衡等。
为了测试和分析Oracle RAC的HA性能,笔者做了一个测试。测试中,一个C/S(客户服务模式)客户端通过ODBC(开放数据库互连)方式连接一个图2所示的2节点RAC系统,进行连续的数据插入删除操作。同时,对正在连接的节点进行软硬件测试操作,并保证同时有2个节点处于活动状态,前台通过net2 stat-an命令监测C/S客户端的连接状态,后台通过srvctl status service -d test-s edu命令来监测数据库服务的状态。
现场未做部分高危险性测试,但后来经过突发事件证实实验结果。
3.1.1 前台测试一
C/S客户端通过ODBC和TNSNAME(服务名)访问数据库服务名EDU。C/S客户端连接数据库,前台运行netstat -an监测结果如表1所示。
3.1.2 前台测试二
SHELL脚本通过SQLPLUS(结构化查询语言编辑器)和TNSNAME自动访问数据库服务名EDU。
3.1.3 后台监测一
运行srvctl status service-d test-s edu监测如下:Service edu is running on instance(s) test1,test2
3.1.4 后台监测二
crs_stat命令监测的服务器进程主要分为两类,一类是节点的状态,如asm、lsnr、gsd、ons、vip等进程;另一类是集群数据库的状态,如cs、sa、srv等进程。服务漂移主要体现在节点的vip进程和数据库的srv进程运行的目标上,正常运行时主要进程如表2所示。
表1 前台运行netstat-an测试结果
表2 Oracle RAC数据库后台监测状态
3.2 软件故障测试
启动C/S客户端程序,用命令监测前台的节点状态和后台的服务状态,Oracle RAC软件故障测试结果如表3所示。
表3 Oracle RAC软件故障测试结果
3.3 RAC系统漂移分析
Oracle RAC采取了一系列措施来有效减少用户操作故障对系统的影响,对于一般性的软件故障,能做到很好的故障切换,服务正常漂移,保证应用系统运行正常、不间断、不宕机。
与双机热备系统相比,Oracle RAC具有很好的负载均衡性能,服务所在节点均在工作,效率高,发生故障时应用系统可以透明切换,可用性高;而热备系统仅有一台工作机,另一台工作机处于待机状态,资源浪费大,负荷重,且数据库发生故障时应用程序必须人工重启进行干预,可用性低。
4 结语
总的来说,Oracle RAC虽然复杂,但对应用系统而言却是十分简单好用。Oracle RAC集群技术是网络数据库和HA架构的最佳应用,是一个具有自动诊断分析和自我管理的商用数据库,足以满足计量信息的高可用性、高可靠性需求。
[1]M.HART, S.JESSE.Oracle database 10g 高可用性实现方案[M].刘永健,孔令梅,译.北京: 清华大学出版社,2005.
[2]张晓明.大话Oracle RAC集群高可用性备份与恢复[M].北京: 人民邮电出版社,2009.