OracleRAC集群运行模式
2021-03-07张洪进翁平
张洪进 翁平
(联勤保障部队第九〇七医院信息科 福建省南平市353000)
Oracle RAC集群的定义是从Oracle 9i逐渐演变而来的。它是高可用性规划方案之一,是oracle数据库支持网络计算环境的核心技术。从RAC的产生到11G版本,集群运行模式是传统的标准集群模式。直到Oracle 12C,集群中引入了很多新特性,主要是Flex集群的新模式的诞生。在Flex集群中,增加很多新的功能:Flex Cluster、Flex ASM、Hub Node(中心节点)、Leaf Node(叶节点)等,下面我们就Flex集群模式新增特性和转换操作进行探讨。
1 Oracle Rac原理
Oracle Real Application Cluster(RAC实时应用集群)用来在集群环境下实现多机共享数据库,以保证应用的高可用性(HA),随着节点数越高,系统可靠性就越高;同时可以自动实现并行处理及负载均衡,在系统负载时,RAC可以自动在多个节点之间平衡负载,减轻单个实例的计算压力,并能实现数据库在故障时的容错和无断点恢复。Rac基本架构图如图1所示。
图1:Rac基本架构图
2 Oracle Asm的原理
Asm:Automatic Storage Management,是Oracle主推的一种面向Oracle的数据文件存储机制,ASM和数据库管理系统非常相似,数据库管理员不用花精力去管理磁盘的读写性能问题,也不需要知道具体的文件名称。Asm具有自动调整读写负载、条带化存储、在线自动负载均衡、自动管理数据库文件、数据冗余、支持各种Oracle数据文件等特点。ASM是由实例和数据文件组成,同数据库一样也可以通过sqlplus进行维护。Asm实例由SGA和后台进程组成,Asm实例和数据库实例的关系可以是一对一或一对多的关系,如果是一对多,最好为Asm安装单独的ASM_HOME。
数据库实例使用Asm作为存储管理时,数据库实例在启动时必须先从Asm实例获得表空间中的区地图(Extent Map),以后对磁盘组的操作记录,Asm实例会把区地图的调整信息发送给数据库实例,并且由ASMB进程保持这两个实例间维护信息的同步和交换。所以我们在启动数据库实例时必须先启动Asm实例,然后两个实例同步运行,反过来当要关闭Asm实例时必须先数据库实例关闭。如图2所示,显示了ASM的体系结构。
图2:ASM的基本架构
3 Flex集群的新特性
3.1 Hub节点与Leaf节点架构
在进行oracle集群安装时,Oracle 12c同时提供两种集群类型配置:标准集群和Flex集群。传统标准集群中,集群中的所有节点都必须连接到两个网络上:公共网络和私有网络;公共网络用于客户端应用程序的连接,私有网络用于节点间的通信和维护SGA的数据一致性。而Flex集群引进了两种新类型的节点——Hub节点(中心节点)和Leaf节点(叶节点)。Hub类型的节点和传统标准节点类似,它们之间通过私网互连,必须连接共享存储,Hub节点可以直接存取集群注册表(OCR)和表决磁盘(VD),在Flex集群中最多可配置64个Hub节点,同时也可以配置很多Leaf节点。在Flex集群中,Leaf节点属于轻节点,彼此互不相连,也不能像Hub节点一样访问共享存储,每个Leaf节点不能脱离Hub节点而独立存在,必须与Hub节点保持通信,并通过所连接的Hub节点连接到集群,应用程序访问数据库也是通过Leaf节点。Flex集群架构如图3所示。
图3:Flex集群架构
3.2 Flex Asm原理
12C之前的oracle版本,每个节点都必须独立运行本节点的ASM实例,且集群中所有节点的ASM实例必须处于运行状态,当ASM磁盘组mount成功后,节点的数据库实例才能运行。对于这种架构,会存在一定的单节点故障的风险,如果ASM实例未运行,那么数据库实例不能启动,这种架构的数据库实例和ASM实例必须是一对一绑定的关系。
12c开始,推出了Flex ASM,解除了这种限制,允许数据库实例独立于ASM实例存在,允许RAC节点访问远程节点的ASM实例,而自身无需运行ASM实例。一般在Flex集群,中心节点运行ASM实例,叶节点远程访问中心节点的ASM实例。当中心节点的Asm实例故障时,Oracle Clusterware可以通过一个替代ASM实例将故障节点的连接将无缝转移到另一个成员节点,中心节点数据库实例可以通过访问其他节点上的ASM实例,保证系统的正常运行。由于存在当节点ASM实例故障,集群将当前ASM实例切换到其他节点上运行的情况,因此,网络类型由原来的公共网络(public network)和私有网络(private network)两种,又新增了一种ASM网络,ASM网络主要用于访问其他节点的ASM实例,ASM网络可与节点间的私有网络共用,也可独立安装。
Flex Asm架构如图4所示。
图4:Flex Asm架构
如图5所示,中心A节点通过访问B节点的ASM实例,获取metadata,然后通过获取的metadata就能访问到存储了。访问其他节点的ASM实例可以通过部署专用的ASM网络或者使用节点内部的私有网络,oracle官方是更推荐使用专用的ASM网络,提高系统的稳定性和吞吐量。
图5:ASM故障转移
3.3 oracle 12c其他新特性
除了上述的新特性外,12c还提供了很多功能的增加,例如:PL/SQL开发性能增强、改善Defaults、扩大了多种数据类型长度、TOP N的语句实现(在SELECT语句中可以指定前N条或前百分之多少的记录)、行模式匹配(分析函数的功能,可以在行间进行匹配判断并进行计算)、对多分区同时进行维护操作、Adaptive执行计划(拥有学习功能的执行计划)、临时UNDO(减少UNDO产生的数量;减少REDO产生的数量;在ACTIVE DATA GUARD上允许对临时表进行DML操作。)、数据优化(可以自动实现数据的在线压缩和数据分级)、应用连续性(12c之前版本当RAC的故障转移只做到SESSION和SELECT层面,对还未结束的DML事务会自动回滚,而Oracle Database 12c中Oracle终于支持整个事务故障转移)、实现云数据库的支持,提供云平台管理,这是之前版本所没有的功能、提出了数据库容器(CDB)和可插拔数据库(PDB)的概念,实现实例与数据库是一对多的关系,功能更加齐全。
4 Flex集群的配置
有两种方法部署Flex集群:
(1)配置一个全新Flex集群。安装过程中步骤三选择集群配置的类型时,选择配置一个Flex Cluster选项,然后,你必须在步骤六将节点分为Hub节点和Leaf节点,针对每个节点,选择角色:Hub或Leaf。
(2)从一个标准集群更改为Flex集群,具体步骤如下:
①确认当前集群的集群模式
$ crsctl get cluster mode status
②确认集群的GNS配置
$ srvctlconfiggns
③如果GNS没有配置Flexed-VIP,则需要在root用户底下创建一个,注意要与集群公网在同一网段
# srvctl add gns -vipvip_name | ip_address
④启动GNS
# srvctl start gns
⑤使用Automatic Storage Management Configuration Assistant(ASMCA)将ASM存储转换为Flex Asm
⑥在root用户模式下,配置当前集群模式为Flex
# crsctl set cluster mode Flex
⑦在root用户模式下,在其中一个节点执行停止crs的命令
# crsctl stop crs
⑧在root用户模式下,在其中一个节点执行启动crs的命令,即重启集群
# crsctl start crs -wait
5 结语
综合上文所述,Oracle 12C RAC相比之前的版本增加了很多强大的功能,通过对标准集群模式和Flex集群模式对比科学研究,让我们可以更好的根据自己的需求选择进行系统的规划和升级。