一 名词解释: 什么是rac 传说中的rac,做为我们本文的主角,其全称是real application cluster,官方的中译是真正应用集群,听起来和叫起来都很别扭是不是,我们还是就叫它rac吧。rac并非是个新技术,其前身叫ops(oracle parallel server),从9i开始才改名
一 名词解释:
什么是rac
传说中的rac,做为我们本文的主角,其全称是real application cluster,官方的中译是真正应用集群,听起来和叫起来都很别扭是不是,我们还是就叫它rac吧。rac并非是个新技术,其前身叫ops(oracle parallel server),从9i开始才改名叫rac(回头有空俺再写篇blog跟大伙数道数道rac的前世今生),这属于oracle的老把戏了,它的不少产品都是边做边改名,比如oracle data guard在9i之前叫做standby,对于这些知识大家不妨也多了解了解,如果你的就业经历足够长,俺觉着你就一定能理解俺所说的,有时候资深并不代表着技术有多牛,而是人家待的年头够久,对于历史那是相当熟悉啊,所以资深也能理解成资历的嘛,对于后来者而言怎样快速获得资历呢,黑黑,你也去熟悉历史呗(en,俺晓得,俺又跑题鸟)~~~
rac不仅仅是个组件,就我理解,它更应该被称之为一种体系,因为它不是单单由某项特性组成,而是一堆特性应用的集合。该体系实现了多个实例同时访问和管理同一数据库,多个实例可以存在于不同节点,也可以在相同的节点上(从提升性能的角度来看,并不推荐这样),彼此通过内网连接交换数据,并且能够自动平衡负载,如果其中某个节点发生故障,rac能够通过后台的监控进程将连接自动切换到另外一个或多个节点上,从而实现应用的无缝切换,对实例的高可用提供保护。
因此,我们也能够得出结论,rac保护的是实例,而并非数据,这点一定要明确(对数据进行冗余的特性在oracle中叫data guard,详细请见:一步一步学dataguard)。
什么是crs
cluster ready service是oracle集群件的软件架构,提到架构我们一般都会下意识觉着,哇这东西真牛啊,事实也确实如此,crs可以说是rac环境稳定运行的基础,但平常呢你又感受不到它的存在。做为框架,它有多个组成部分,包括一系列的进程和一堆的服务,后面我们将会一一了解,总之它不是一个在战斗,它不是一个人。。。
什么是cvu
全称cluster verification utility,cvu是oracle专门为rac提供的一个检查工具,目的是期望在安装前就你的安装环境进行检查,看看软硬件环境是否已就绪,该工具功能非常强大,通过搭配不同参数可以检查安装rac所需环境的方方面面(后文详绪)。不过,该工具所显示的检查结果也仅供参考,具体情况需要具体分析,并非说其检查报错,你就不能成功配置rac了。另外由于oracle自身的一些bug等原因,可能也会造成cvu给出错误的信息。
什么是oui
说起oui大家应该都不会陌生,其全称是oracle universal installer,就是图形化的安装助手,这个就不多说什么了。
什么是asm
做为oracle当前主推的一种存储特性,在oracle官方文档中处处都能看到oracle recommends using asm之类的字眼,其实这并不奇怪,就像刚生完孩子的母亲抱着孩子出门遛弯,逢人就想跟人说:看看我家孩子多漂亮的心理是一样的,毕竟是人家自己的东西,如果它自己都不推广还能靠谁去推广呢,与何况这里头还有着更重要的经济利益和长远战略,oracle不仅建议你存储用asm,它还有n多别的建议,比如管理用em,存储用asm,表空间管理用local,undo管理用auto等等。扯远了,回到主题,啥是asm呢,其全称是:automatic storage management。可以把它理解成oracle自己设计的,用软件实现的,用于存储的黑匣子。
什么是omf
oracle manage file 的简写,一般在创建数据库-指定数据文件路径时你会见到它的身影。一旦你选择了该种路径方式,在创建表空间,控制文件,日志文件时就不需要指定位置和文件名了,oracle会根据一些初始化参数的设置自动分配和命名,其通常与asm搭配使用。
什么是ocr
oracle cluster registry用于保存集群和数据库的配置信息,做为crs的关键组件,,因此,ocr必须保存于共享磁盘(但不能是asm,asm毕竟只是一个软件实现的集群文件系统,在读取集群信息时,可能连asm实例都还没启动呢),大概需要100m左右的空间。
什么是voting disk
用于保存集群中各节点信息并确保各节点的一至性状态,同样也必须保存于共享磁盘(也不能是asm),大概需要20m左右的空间。
什么是vip
即虚拟ip,oracle推荐客户端连接时通过指定的虚拟ip连接,这也是oracle10g新推出的一个特性。其本质目的是为了实现应用的无停顿(虽然目前还是有点小问题,但离目标已经非常接近)。用户连接虚ip,这个ip并非绑定于网卡,而是由oracle进程管理,一旦某个用户连接的虚ip所在实例宕机,oracle会自动将该ip映射到状态正常的实例,这样就不会影响到用户对数据库的访问,也无须用户修改应用。
二 优劣势分析
不同的集群产品都有自己的特点,rac的特点包括如下几点: ·双机并行。rac是一种并行模式,并不是传统的主备模式。也就是说,rac集群的所有成员都可以同时接收客户端的请求。
·高可用性。rac是oracle数据库产品高可用性的解决方案,能够保证在集群中只要有一个节点存活,就能正常对外提供服务。
·易伸缩性。rac可以非常容易地添加、删除节点,以满足系统自身的调整。
·低成本。能使用较低廉的服务器来实现高可用性、高吞吐量的集群环境,这要比通过对某台高端服务器增加硬件实现高可用性、高吞吐量花费的成本低很多。
·高吞吐量。随着节点数的增加,整个rac的吞吐量也在不断增长。
下面详细讨论这五大特点。
一、双机并行
rac是一种充分利用服务器资源的高可用性实现方案,rac的并行模式实现方式与传统的双机热备实现方式截然不同,图1-4是两者的比较。
如图1-4所示,两个节点在传统的双机热备环境中,始终有一台机器作为备用机,只有当主节点出现问题的时候才会切换到备用机上;如果主机一直没有出现问 题,那么备用机始终处于空闲状态,这在资源的利用上以及成本方面都是巨大的浪费。但rac是一种并行模式的架构,也就是说,两个节点的集群节点间是一种并 行运行的关系,当一台机器出现问题,请求会自动转发到另一台机器,没有任何一台机器作为备用机一直不被使用,这样就充分利用了服务器资源。同时,传统的双 机热备构架在出现问题时,常常需要数分钟的切换时间,而rac在出现问题时,针对存在的会话只需要数十秒的时间就可以完成失败切换过程,对新会话的创建不 会产生影响,在切换时间上也有比较大的优势。
oracle rac的五大优势及其劣势 src=http://oracle.chinaitlab.com/uploadfiles_7269/201208/20120826092842401.jpg href=/picshow/index1154817.shtml>
▲图1-4 双机热备与rac并行模式对比
二、高可用性
rac是oracle数据库高可用性解决方案。高可用性包含两部分的内容:首先是在这种解决方案下要确保数据不丢失,这是最基础的也是必须要保证的;其次是确保不停机,使oracle数据库一直维持在正常的运行状态,避免停机给客户带来的损失,这是讨论最多的内容。
停机一般分为两类,计划停机和非计划停机。所谓计划停机是有计划地安排节点或者系统的停机,一般在oracle升 级、系统维护或者硬件维护的情况下会出现。非计划停机就是在非人为计划的情况下突然停机,这种情况一般是在oracle bug、系统故障、硬件故障或人为操作失败的时候出现。
在没有较高花费的情况下,想实现系统100%的不停机几乎是不可能的。表1-1列出了特定百分比高可用性比率运行停机的时间,详细记录了每种高可用性比率每年、每月、每周可以出现最大的停机时间。
通常情况下,以每月停机时间来计算对应的可用性比率。根据系统的重要性情况,应该为系统设定合理的可用性比率。
集群最大的优势在于它的高可用性,通过使用rac可以在一定程度上避免因为硬件或软件故障引起的数据丢失和非计划停机,并在一定程度上减少或排除计划停机时间。这是很多客户选择rac的最直接原因。
rac中包含了非常多的高可用特性,主要包含如下几点:
·实现节点间的负载均衡。
·实现失败切换的功能。
·通过service组件来控制客户端的访问路径。
·集群软件能够自动化管理各个资源,并且有定时的节点状态检测机制,能自动对一些失败的进程以及心跳检测失败的节点进行重启,使其重新恢复到正常的运行状态。
在oracle 11gr2版本中,clusterware得到了改善,提供了更高的可用性。例如,大量新的基于代理的监控系统用于监控所有的资源。这些代理使用更少的资 源执行更频繁的检查,即更快速的失败扫描和更短的恢复时间。在oracle监听的例子中,平均失败扫描时间从5分钟减少到30秒,同时,检查间隔从每10 分钟减少到1分钟。另外,clusterware的“out-of-place upgrade”等特性也减少了软件维护需要的停机时间。
三、易伸缩性
rac为需要重新规划的应用提供了易扩展性。为了在系统初始阶段保持较低的成本,避免造成不必要的浪费,集群可以按照标准硬件配置,选择适当的服务器资源、存储资源来搭建数据库环境。当系统需要更多的处理能力或者需要增加存储时,通过添加另一台服务器或存储设备到集群中,能够在不停机的情况下获得水平的扩展。在一个集群中, clusterware和rac支持多达100个集群节点。
当某个集群的处理能力过剩,另一个集群的处理能力不够时,可以从处理能力过剩的集群移动一个节点到处理能力不够的集 群中。这样能够充分利用服务器资源,节约成本。11gr2版本中推出了网格即插即用(grid plug and play,gpnp),可以实现节点的快速添加。
四、低成本
通过多台普通的pc服务器组成一个集群,可以提高集群的处理能力,这样要比采用一台高性能的服务器的成本低很多。如 果想提高系统的处理能力,给集群添加节点比为高性能服务器添加硬件要容易得多。另外,使用集群还能动态地移除节点,更加充分地利用管理者掌握的所有服务器 资源,从服务器整体使用上降低了服务器的采购成本。越来越多的企业愿意将集群解决方案应用到他们的系统中,以降低成本,提高系统的可用性。
五、高吞吐量
rac是由多台服务器构成的逻辑主体,比单台数据库服务器能接收更多的客户端请求。这在要求高吞吐量的系统中,能够 得到非常明显的体现。在rac的架构中,多个实例分布在多个服务器上,能同时打开同一个数据库,而每个实例能够接收相等数量的客户端请求,这样,随着服务 器的增加,吞吐量也在不断地增加。
在以上讨论的特点中,高可用性是rac最大的特点。
rac存在的问题
虽然rac有非常多的优点,但由于部署一套rac会涉及服务器、存储设备、hba卡、操作系统等多方面的技术,且从实现上要比单实例数据库更复杂,对硬件设备的稳定性、设备之间以及设备与操作系统的兼容性上要求也更高,oracle的bug也会造成rac运行出现问题。所以,从实际的运行情况来看,rac要比单实例的数据库存在更多的问题,问题的原因也各不相同。rac存在的问题主要体现在稳定性和高性能方面,下面讨论这两个问题。
一、稳定性
数据库的稳定运行是系统稳定运行的基础和前提,数据库的运行依赖于操作系统、服务器、存储设备等软硬件设备的运行情况。
由于各种硬件设备、操作系统的厂商不同,有时候在兼容性上会存在问题,即使同一个厂商的服务器,由于驱动、固件版本的不同也可能导致硬件出现问题以及与其他设备的兼容性问题。同时,由于rac本身也存在不少bug,很多部署的rac环境缺乏在上线前对环境的检查和测试,导致在运行过程中出现一系列不稳定的情况,这样高可用性并没有得到充分的体现。
由此来看,稳定的硬件环境加上稳定的rac版本,决定着rac运行的稳定性。数据库工程师与硬件工程师在安装配置前大量的环境检查、验证,以及部署后的大量测试工作都是非常重要的。
二、高性能
高性能也是大部分从单机环境迁移到rac环境比较头疼的问题,rac并不是高性能的解决方案。在目前普遍使用千兆网 络的硬件环境中,很多时候系统的数据库从原来的单机迁移至rac环境,系统的性能反而下降。在这种情况下,数据库管理员应该根据rac的特点对系统调整提 出合理的建议,经过合理的设计、开发,使用rac是能够提高系统的处理性能的。
以上两个问题是需要特别注意的。另外,与硬件工程师、系统开发人员进行良好的沟通,以及对系统合理的设计是保证rac稳定运行和高性能运行的前提。