【云原生进阶之数据库技术】第二章-Oracle-原理-4.6.4-RAC技术

时间:2024-10-04 07:07:32

1 Oracle rac模式

        RAC(real application clusters):整个集群系统又分为 oracle Clusterware (集群就绪软件)和 Real Application(RA) 两大部分组成。

1.1 基本架构

        rac 是 Oracle 数据库的高可用集群。传统数据库一个实例一个数据库, RAC 是多个实例,一个数据库,多个实例之间共享一个数据库,但不是分布式。

1.2 RAC的优势

1.高可用性

        RAC是Oracle数据库产品高可用性的解决方案,能够保证在集群中只要有一个节点存活,就能正常对外提供服务。单节点数据库,如果实例宕机了,如果一个业务链接在实例上面,那么这个业务就中断了。这个时候系统就不具有可用性了,那么这个时候单节点的可用性是很差的。

2.双机并行

        RAC是一种并行模式,并不是传统的主备模式。也就是说,RAC集群的所有成员都可以同时接收客户端的请求。RAC是一种充分利用服务器资源的高可用性实现方案,RAC的并行模式实现方式与传统的双机热备实现方式截然不同,上图是两者的比较。

        如图所示,两个节点在传统的双机热备环境中,始终有一台机器作为备用机,只有当主节点出现问题的时候才会切换到备用机上;如果主机一直没有出现问题,那么备用机始终处于空闲状态,这在资源的利用上以及成本方面都是巨大的浪费。但RAC是一种并行模式的架构,也就是说,两个节点的集群节点间是一种并行运行的关系,当一台机器出现问题,请求会自动转发到另一台机器,没有任何一台机器作为备用机一直不被使用,这样就充分利用了服务器资源。同时,传统的双机热备构架在出现问题时,常常需要数分钟的切换时间,而RAC在出现问题时,针对存在的会话只需要数十秒的时间就可以完成失败切换过程,对新会话的创建不会产生影响,在切换时间上也有比较大的优势。

3.易伸缩性

        RAC可以非常容易地添加、删除节点,以满足系统自身的调整。

        RAC为需要重新规划的应用提供了易扩展性。为了在系统初始阶段保持较低的成本,避免造成不必要的浪费,集群可以按照标准硬件配置,选择适当的服务器资源、存储资源来搭建数据库环境。当系统需要更多的处理能力或者需要增加存储时,通过添加另一台服务器或存储设备到集群中,能够在不停机的情况下获得水平的扩展。在一个集群中, Clusterware和RAC支持多达100个集群节点。

当某个集群的处理能力过剩,另一个集群的处理能力不够时,可以从处理能力过剩的集群移动一个节点到处理能力不够的集群中。这样能够充分利用服务器资源,节约成本。11gR2版本中推出了网格即插即用(Grid Plug and Play,GPnP),可以实现节点的快速添加。

4.低成本

        能使用较低廉的服务器来实现高可用性、高吞吐量的集群环境,这要比通过对某台高端服务器增加硬件实现高可用性、高吞吐量花费的成本低很多。

        通过多台普通的PC服务器组成一个集群,可以提高集群的处理能力,这样要比采用一台高性能的服务器的成本低很多。如果想提高系统的处理能力,给集群添加节点比为高性能服务器添加硬件要容易得多。另外,使用集群还能动态地移除节点,更加充分地利用管理者掌握的所有服务器资源,从服务器整体使用上降低了服务器的采购成本。越来越多的企业愿意将集群解决方案应用到他们的系统中,以降低成本,提高系统的可用性。

5.高吞吐量

        随着节点数的增加,整个 RAC 的吞吐量也在不断增长。

        RAC是由多台服务器构成的逻辑主体,比单台数据库服务器能接收更多的客户端请求。这在要求高吞吐量的系统中,能够得到非常明显的体现。在RAC的架构中,多个实例分布在多个服务器上,能同时打开同一个数据库,而每个实例能够接收相等数量的客户端请求,这样,随着服务器的增加,吞吐量也在不断地增加。

1.3 RAC的劣势

1.不能解决在数据安全方面的问题

        尽管有多个实例,但是只有一份数据文件,这样只要数据文件损坏,整个数据库就损坏了。

的稳定性很难保证

        RAC 本身有很多 Bug,另外由于是集群模式,使用较多的服务器,依赖于各种硬件设备、操作系统、存储设备等运行情况。同时由于驱动、固定版本的不同也可能导致硬件出现问题以及与其他设备的兼容性问题。

的高性能很难保证

        RAC 能实现高可用性,但是由于集群服务器性能层次不齐,导致整体性能无法保证。

1.4 RAC适用场景

        对高可用要求比较高的场景。

  1. 高可用性:RAC是高可用的集群,当某节点故障无法工作时,集群同步服务会将其驱逐并重启。由于所有节点采用 share everything 的工作方式,能够有效保障数据的一致性。share everything 工作方式主要通过内存融合(Cache Fusion)和共享磁盘的方式实现。
  2. 内存融合:所有节点实现内存级别的数据一致性。
  3. 共享磁盘:共享磁盘被所有节点访问。
  4. 网络配置:RAC至少有两套物理上不同的网络,也就是至少要用两个网卡。私有网络专门用来实例之间的数据交互,另外一个公有网络对外提供服务。
  5. VIP IP: VIP IP 也叫做虚拟 ip,与公网 PUBLIC IP 在同一个网段。不同之处在于,VIP 是浮动的,而 PUBLIC IP 是固定的。
  6. PRIVATE IP: PRIVATE IP 用来保证两台服务器同步数据,属于RAC内部之间通信。 PRIVATE IP 与 PUBLIC IP 不应同属一个接口,也就是不在同一个网络。
  7. SCAN IP: SCAN IP是oracle在客户端和数据库之间,新加的一个连接层。当有客户端访问时,链接到 SCAN IP LISTENER ,而 SCAN IP LISTENER 接收到连接请求时,转发给对应的 instanace (实例)上的 VIP LISTENER ,从而完成整个客户端与服务器的连接过程。

        使用示例:

1.5 Oracle RAC架构与ADG架构对比

        其实在大多数场景下是不具备可比性的,还是回归到我们写此文章的目的上来。大家应该还记得,我们写此文章的最初缘由吧,其实我们是把ADG作为RAC的一种替代架构,以满足应用系统入池需求的,池内的基础资源只具备搭建单机oracle的条件,所以我们先限定好条件,只对比迁移前的两节点oracle RAC和迁移入池的两个单机版oracle 物理ADG架构。

        应用连接方面,RAC提供了SCAN IP,连接串配置信息中只体现单个IP就可以了;而连接ADG架构,需要配置两个IP。

        处理性能和负载均衡方面,同样的基础资源,RAC是两台主机负载均衡同时工作;而ADG一台为read/writ状态,另一台为read-only状态,处理性能方面理论上没有RAC强。

        高可用方面,在遇到单台主机宕机的情况下,RAC架构的另一个节点会持续提供服务,宕机节点的会话重连即可;ADG架构的源端如果宕机的话,数据库需要切换到备库才能提供服务,切换期间是不能提供服务的,中断时长为切换时长。

        存储使用方面,RAC是共享存储,数据只存储一份;而ADG是两份数据,需要占用双倍的存储空间。

        网络方面,RAC架构需要两台主机具备物理IP的同时,还需要两个同业务网段的VIP和一个SCAN IP,以及最好在另一块网卡上配置私有IP;而ADG架构之间的同步可以共用业务IP,无需额外的IP。

参考链接

Oracle RAC_百度百科

rac实现数据同步ADG 两台oracle服务器

oracle ogg和adg,基于Oracle RAC/ADG/OGG等实现的数据库双活方案设计交流-****博客

Oracle RAC详解

【Oracle篇】Oracle集群-rac模式-****博客