Oracle经典技巧之RAC详解

本篇文章给大家带来了关于Oracle的相关知识,其中主要介绍了RAC的相关问题,Oracle Real Application Cluster用来在集群环境下实现多机共享数据库,以保证应用的高可用性,希望对大家有帮助

    本篇文章给大家带来了关于Oracle的相关知识,其中主要介绍了RAC的相关问题,Oracle Real Application Cluster用来在集群环境下实现多机共享数据库,以保证应用的高可用性,希望对大家有帮助。

推荐教程:《Oracle教程》

应对业务量的不断增加场景通常有两个大方向,一种是纵向扩展,也就是增加单台服务器的CPU计算能力、内存容量和磁盘承载能力等;另外一种是横向扩展,也就是通过增加服务器的数量来增加处理能力。前者存在业务中断和扩展上限等诸多的问题,特别是互联网业务的迅猛发展,单台服务器几乎无法满足业务负载要求,因此目前比较流行的方式横向扩展的方式。

什么是Oracle RAC?

Oracle Real Application Cluster (RAC,实时应用集群)用来在集群环境下实现多机共享数据库,以保证应用的高可用性;同时可以自动实现并行处理及负载均衡,并能实现数据库在故障时的容错和无断点恢复。它是oracle数据库支持网络计算环境的核心技术。

共享存储多活集群

在该架构中集群中多个节点运行的是同一个数据库实例,数据完全一致,并且用户层面无论从哪个节点访问,获取到的数据都是相同的。下图是Oracle RAC的示意图,通过3个节点构成一个集群,它们共享数据。在这里插入图片描述 RAC 的特点可总结如下:

Oracle RAC和单个数据库服务器的区别

如下图,主要区别还是RAC是集群式数据库,通过集群软件管理。在这里插入图片描述在这里插入图片描述

Oracle RAC硬件架构

为了保证整个集群的可用性,Oracle RAC在部署的时候对硬件有比较多的要求。在网络层面,Oracle RAC总共有3个网络系统,分别是外部访问网络、内部私有网络和存储网络。

外部访问网络不用多说,相信大家都理解。内部私有网络则主要用来进行Oracle集群内部使用,包括数据传输、心跳和集群管理等。这部分网络在部署的时候要求双交换机和双物理链路,保证不会因为链路故障导致集群异常。后面是存储网络,存储网络用于RAC集群访问存储资源,这部分也是链路冗余的。在这里插入图片描述

再比如下图,为一个两节点RAC系统,可以看出,从主机到交换机,都做了冗余,无论哪台设备出了故障,业务不会受影响。共享存储是自带RAID冗余的。在这里插入图片描述 其中,主机叫做节点(Node),它们要有相同的CPU、内存等配置,每台至少两个网卡,访问内外网,还有HBA卡连接共享存储,但更多是通过FC交换机连到FC存储阵列。共享存储是RAC架构中的核心,绝大部分文件都在共享存储,很多功能都是为了共享存储的安全性开发的。一般是光纤通过FC接口连接,运行SCSI协议。

Oracle RAC软件架构

如下图,是个双节点RAC系统,Oracle RDBMS是数据库软件,Oracle Clusterware是集群软件。驱动主要是网卡,HBA卡,ASMLib等。

每个节点上必须是相同的操作系统,版本必须一致,包括补丁号等。如操作系统: RHEL AS 4.8 64bit,Linux内核版本: 2.6.9-89.EL。在这里插入图片描述 为了更加深入的理解Oracle RAC我们看一下其内部软件模块的组成。整个数据库层面没有太多差异,这里面主要多出了如下内容:虚拟IP(VIP)、ASM、Clusterware和仲裁磁盘。这些新组件配合起来完成了Oracle的多活集群功能。

虚拟IP是应用访问数据库的入口,该IP并不与任何服务器绑定,而是可以在集群的任意服务器间漂移。由于具有这个特性,当出现服务器宕机等情况时,数据库集群可以保证通过相同的接口对外提供服务。在这里插入图片描述 ASM与Clusterware实现了集群管理功能,其中ASM实现对磁盘的管理,避免同时访问磁盘导致数据不一致的风险,而Clusterware则用于管理Oracle集群的软件进程及资源调度。

仲裁磁盘用于集群中服务器的异常判断,集群中的节点通过定时更新仲裁磁盘中特定区域的数据标示自身的健康状态。其它节点可以根据该数据判断该节点是否宕机。

逻辑结构

下图是Oracle RAC的逻辑结构,后面将依次介绍里面的各个组件。在这里插入图片描述

所以,集群只能有一个配置信息,所有节点共享。Oracle RAC使用OCR Disk文件解决健忘症。

OCR Disk只有Master节点才能修改,每个节点有一份Copy,在OCR Cache内存中。节点要修改OCR Disk时,请求Master节点,该节点上OCR进程更新本地和其他节点OCR Cache内容。OCR Disk每几个小时定期备份。

Voting Disk用来记录节点间成员的状态,出现脑裂的时候,选择票数高的获得控制权,踢出其他节点。

IO隔离:踢出去的节点,不能再让它访问数据,所以要做IO隔离。Oracle RAC的机制就是重启故障节点。

2.Virtual网络:用Virtual IP,提供应用连接,应用程序使用该IP。

TCP/IP协议中,TCP Header包含源和目标端口,IP header包含源和目标IP,应用层的数据库监听记录IP和端口,在TCP超时时知道数据库或监听出了问题。TCP/IP协议栈超时时间由OS决定,每个OS定义不一样。为了缩短捕获错误的时间,Oracle RAC使用了VIP。Virtual IP是浮动的,并不与物理网卡绑定,某个节点故障,则VIP移到好的节点上,但好节点的监听里找不到该VIP,应用程序会立刻发现问题,转而向其他VIP发送连接请求。

3.Private网络:用Private IP,用于RAC心跳检测和Cache Fusion Lock,速度要求很高。

4.存储网络:存储设备、HBA卡、FC网络组成。

负载均衡

用户像RAC发起各种请求的时候,负载均衡负责把任务平摊到不同机器上。

所以RAC支持根据服务分配节点,比如生产和销售用不同节点,自己的数据在自己的Cache里面,就不用访问别的节点了。性能得到提升。

三类集群