首页 > 文章中心 > 正文

Oracle RAC在图书馆的运用研究

Oracle RAC在图书馆的运用研究

汇文文献信息服务系统是江苏汇文软件有限公司自1999年起向全国范围推广的,到目前为止已为国内近600多家知名高校和公共图书馆所选用,其中包括教育部公布的39所“985”学校中的13所,116所“211”学校中的46所大学[1]。可见其拥有着技术过硬的开发团队以及信誉保证的售后服务质量。最关键是汇文相对于国内其他图书信息系统有着一定的技术优势。比如:科图公司的产品在ILASⅢ的时候才采用了通用型的数据库,丹诚的系统更是使用文件系统存储数据,而汇文系统使用的是大型的关系型数据库Oracle作为数据库服务平台。此外,汇文系统可以部署在多种操作系统上,如:Windows2003,各种Linux版本,Solaris,AIX,HP-UNIX,SCOUnixWare等。所以,根据实际情况,图书信息系统选择了汇文公司的产品,相应的数据库集群也选择了Oracle公司的技术。

OracleRAC体系结构OracleRAC(OracleRealApplicationCluster)即Oracle真正应用集群。它是由若干个物理计算机组成,每个叫作一个节点,这些节点间通过私有网络连接。各个节点通过HBA卡或光纤线连接到共享存储上,形成“shared-disk”的体系结构模式。RAC的共享磁盘结构模式不但有着更高的可用性,同时也拥有更佳的易扩展性。RAC的软件架构是在底层的操作系统之上布置集群件(Clusterware)层,也就是集群管理软件层,在Clusterware层之上是Oracle数据库层。Oracle是在10g时,提出了集群管理层的集群就绪服务(ClusterReadyServices,CRS)[2],CRS能够将所有支持的平台上的节点聚集在一起,支持的平台包括Sun、HP、AIX、Windows、Linux等(位于同一集群中的所有节点必须具有相同的操作系统)。这样在RAC中,位于Oracle和OSKernel之间的集群件层(Clusterware),它会在OSKernel之前截获请求,然后和其他节点上Clusterware协商,提供ClusterReadyService(CRS)服务,最终完成上层的请求。而且CRS还提供了公共的API接口,这也就是说CRS可以为其他软件也提供集群服务,构成相应的集群系统。

OracleRAC的自身特点OracleRAC是集高可用性、负载均衡、高性价比和可伸缩性强以及单一系统映像的数据库集群技术。可用性是以系统运行和可用时间的百分比来衡量的,OracleRAC的高可用性可以达到5个9的水平,即99.999%,年平均停机时间只有5.3min。负载均衡的作用就是使大量的并发访问或数据流量分摊到多个节点设备上分别处理,这样便减轻了单个节点的压力,同时减少了用户等待响应的时间。OracleRAC数据库集群使用了两种方式实现负载均衡。第一种是ConnectionBalancing,这种负载均衡是在用户连接这个层次进行的,也就是在用户建立连接时,根据每个节点的负载均衡决定把连接分配给哪个实例上。第二种是Server方式,它是根据RAC的特点,从尽量减少CacheFusion的流量,减少实例间互相依赖的思路发展而来的。OracleRAC采用共享磁盘技术,当需要更新增加服务器时,只需要将新的设备加入集群中即可,对于用户来看,服务连续性几乎没有变化,好像系统在不知不觉中完成了升级。而且升级、扩展的成本相对低廉,旧有的系统还可以使用,不构成浪费。单一系统映像(SingleSystemImage,SSI)是集群技术中十分重要和基本的特性,由KaiHuang提出[3]。如果一群互连的计算机被设计成看起来好像统一的资源,就说明它实现了SSI。OracleRAC拥有下面3个特性:①单一入口;②单一管理入口;③资源访问透明。

其他数据库集群技术的特点现阶段的数据库集群大部分是国外的产品,比较流行的有:OracleRAC、MicrosoftMSCS、MySQLCluster、IBMDB2UDB等。而由于研发资金和力量的相对欠缺,国内的数据库集群产品仅在一些高校科研单位内有些雏形产品,如:黑龙江大学的HPDB数据库管理系统、华中科技大学的PARO和中国人民大学的PBASE等系统。其中,MicrosoftMSCS的用户界面熟悉,类似于Windows,但只支持16个节点。MySQLCluster的价钱便宜,数据库体系小巧方便,但被Oracle吞并,前途渺茫。IBMDB2UDB虽是老牌数据库,但采用无共享存储体系,可用性上有待进一步提高。而Ora-cleRAC虽然价格昂贵,但性能强劲,功能丰富,通过市场占有率也可看出是数据库领域的老大。

OracleRAC是一个多实例、单数据库的共享存储结构体系。图2是一个两节点的RAC环境拓扑图,其中涉及的硬件(hardware)用Hn表示,涉及的软件(software)用Sn表示,其中数字n代表种类[2]。

在本方案中,整个RAC的硬件环境包括两台数据库服务器、一台共享存储、两台交换机。两台服务器分别为rac1和rac2,其中每个服务器上至少有两块网卡,一个网卡用于对外提供服务,比如供用户查询数据,另一个网卡用于集群内部的私有通信。每个节点还要有一个HBA卡,通过光纤线连接到存储设备。两台交换机,其中一台用于连接其他需要访问数据库的计算机,也就是数据库服务的客户端。另一台交换机所组成的网络是一个完全隔离的网络,其上传递的数据只有RAC节点间的心跳数据和CacheFusion数据。

部署RAC环境需要4种软件,包括操作系统、集群件、集群文件系统和数据库。其中安装在每个节点上的操作系统必须相同,而且版本也必须相同,包括小版本、补丁包也必须一样。考虑到linux在性能价格比上的绝对优势,决定把图书馆数据库集群部署到linux系统上,具体使用RedHatEnterpriseLinuxAdvancedServer4Update6。集群件是安装在操作系统之上的一个特殊软件,负责管理整个集群环境中的硬件资源,并为上层的RAC集群提供基础服务。集群件使用Cluster-ware10gforlinux(10.2.0.1)集群文件系统,在RAC中的数据文件、联机日志文件、控制文件、参数文件都必须放在共享存储中,保证所有节点都能访问。这时就需要对节点的访问进行控制,普通的文件系统并不支持集群功能,因此必须采用特殊的存储策略,比如采用裸设备或某种集群文件系统。笔者选择Oracle推荐的首选方案asm,使用以下3个包oracleasm-2.6.9-67、oracleasmlib-2.0.4-1.el4、oracleasm-support-2.1.3-1。数据库软件为Oracle10gforlinux(10.2.0.1)。

在rac1上安装配置Linux系统启动之后,修改host文件。#vi/etc/hosts127.0.0.1rac1localhost.localdomainlocalhost192.168.44.150rac1192.168.44.151rac2192.168.44.160rac1-vip192.168.44.161rac2-vip192.168.174.150rac1-priv192.168.174.151rac2-priv接着修改,#vi/etc/sysconfig/networkNETWORKING=yesHOSTNAME=rac1GATEWAY=192.168.44.2接下来创建组oinstall、dba和用户oracle,并设置oracle用户密码。同时,创建/opt/ora10g目录,修改目录属组,并且根据硬件情况配置内核参数。下面为asm1、asm2、OCR、VotingDisk4个磁盘建立新的分区,即分别对/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde4个磁盘文件执行fdisk命令。用rpm命令安装Oracledb所需要的4个安装包,compat-gcc-7.3-2.96.128.i386.rpm、compat-libstdc++-7.3-2.96.128.i386.rpm、compat-libstdc++-devel-7.3-2.96.128.i386.rpm、com-pat-gcc-c++-7.3-2.96.128.i386.rpm,且安装顺序不能改变。再安装ASMLib包3个,oracleasm-support-2.1.3-1.el4.i386.rpm、oracleasm-2.6.9-67.ELsmp-2.0.3-1.i686.rpm、oracleasmlib-2.0.4-1.el4.i386.rpm,且安装顺序不能改变。安装RAC所需的安装包1个,sysstat-5.0.5-19.el4.i386.rpm。配置裸设备,执行如下命令:vi/etc/sysconfig/rawdevices添加下列内容:/dev/raw/raw1/dev/sdb1/dev/raw/raw2/dev/sdc1/dev/raw/raw3/dev/sdd1/dev/raw/raw4/dev/sde1

在rac2上安装配置Linux#vi/etc/sysconfig/networkNETWORKING=yesHOSTNAME=rac2GATEWAY=192.168.44.2接着修改hosts文件:#vi/etc/hosts修改成:127.0.0.1rac2localhost.localdomainlocalhost修改rac2的ORACLESID:#vi/home/oracle/.bashprofile修改ORACLESID这个环境变量为RACDB2,其他配置与rac1相同

配置Clusterware所需环境要配置Clusterware所需的环境,首先就要配置ssh用户等价。所谓用户等价,就是以oracle用户从一个节点连接到另一个节点时,不需要输入密码。Clusterware和Database的安装过程都是先在一个节点安装,然后安装程序自动把本地安装好的内容复制到远程相同目录,这是一个后台拷贝过程,安装人员没有机会输入密码进行身份验证,因此,必须配置用户等价。有一点需要特别注意的是,在配置用户等价时,不论是rac1节点还是rac2节点,都要以or-acle用户身份登录执行,因为在安装Clusterware和Database时,也要求是oracle用户。接下来创建asm磁盘,在rac1和rac2上分别运行/etc/init.d/ora-cleasmconfigure,用户为oracle,组为dba,并同意在asm磁盘的boot区开始扫描。然后在rac1上创建卷组VOL1/VOL2,分别对应/dev/sdd和/dev/sde,命令为/etc/init.d/oracleasmcreatdisk/dev/sdd1,最后分别在rac1、rac2运行/etc/init.d/oracleasmscan-disks和/ect/init.d/oracleasmlistdisks,列出VOL1和VOL2,表示创建的两个asm卷成功。

安装配置Clusterware在安装中途,弹出ExecuteConfigurationscripts对话框。要求以root用户分别先后在rac1和rac2执行/opt/ora10g/oraInvenetory/orainstRoot.sh和/opt/ora10g/product/10.2.0/crs1/root.sh。在rac2运行完/opt/ora10g/product/10.2.0/crs1/root.sh之后,提示运行vipca,则在rac2上接着运行vipca。第一步选择eth0,第二步在rac1的IPAliasName中输入rac1-vip,然后按Tab键,其他信息自动填入。最后点击finish,开始在两个节点创建和启动VIP、GSD、ONS。最终完成Clusterware的安装。可用下面的方法检测Clusterware的安装是否成功。分别在两个节点执行$./crsstat-t-v。如果ora.rac1.gsd、ora.rac1.ons、ora.rac1.vip、ora.rac2.gsd、ora.rac2.ons、ora.rac2.vip6个服务运行都正常,则说明安装成功。

安装配置Database在安装Database后需要配置netca,在节点选择时,把rac1和rac2都选上。再选择监听器配置Lis-tenerConfiguration,选择Add。之后按默认配置选项就可以了。为了检测database是否安装成功,分别在两个节点执行$./crs_stat-t-v。如果ora.rac1.LISTENERRAC1.lsnr、ora.rac1.gsd、ora.rac1.ons、ora.rac1.vip、ora.rac2.LISTENERRAC2.lsnr、ora.rac2.gsd、ora.rac2.ons、ora.rac2.vip8个服务运行都正常,则说明安装成功。

创建ASM和数据库因为RAC的数据库是存储在ASM文件系统上的,所以在创建数据库的过程中先创建ASM。在创建配置过程中,把GlobalDatabaseName和SIDPrefix都设置为RACDB。选择AutomaticStorageManagement(ASM),并为ASM管理用户设置密码,之后点击CreateNew建立新asm磁盘组,磁盘组名设为rac_disk,Redundancy设置为External。之后确保磁盘都挂载成功,显示状态为MOUNTED(2/2)。为了检测database是否创建成功,分别在两个节点执行$./crsstat-t-v。如果如图3所示的13个服务运行都正常,则说明RAC创建成功。手工宕掉一个节点进行测试后,发现服务依然可以正常服务,而且宕机节点正常启动时,也不影响服务的运行。

通过使用OracleRAC的高可用性数据库集群后,如果一个数据库服务器宕机,集群件会自动启动宕掉的服务器,而且能够给维护人员更多的时间发现、解决问题,并且在整个维护、重启期间不会影响到对读者的服务,大大地提高了图书馆信息系统持续服务的有效时间。

作者:周琳单位:内蒙古师范大学图书馆

文档上传者