之前,一直对rac one node、Single Instance HA(SIHA)、Oracle Restart的概念没搞清楚,今天和 @jarodwang和@ricky_zhu聊了之后,才明白了其中的概念:
SIHA = Oracle Restart = Oracle Grid Infrastructure 安装选项中的 Install and Configure Grid Infrastructure for a Standalone Server
因此,我们在10g中用的SIHA,在11gR2中已经重新命名成Oracle Restart,并且是包含在Grid Infrastructure中。
而rac one node则是另外的一个概念了,是11gR2才出现的。它是oracle提供的一种类似虚拟化技术,将各个物理机器的资源整合起来,成一个大的cluster。概括的说,它能整合你的服务器,提高failover能力,提供load balance能力,另外它能实现数据库存储的虚拟化,数据库环境的标准化和避免升级的downtime。
以下是一个rac one node 的架构图:
从图上我们看出,rac one node,有3个物理主机,Server A、Server B、Server C,这3个物理主机组成一个single cluster,在3个主机上,可以有5个不同的single instance的database,DB1和DB2 host在Server A上,DB3 host在Server B上,DB 4和DB 5 host在Server C上。各个数据库使用共享存储(common share storage)。
对于single cluster上的各个数据库,rac one node能提供以下优势:
1.为同一个主机上的各个数据库Caging不同比例的CPU(见下图)。我的理解是这个和单个数据库上的资源管理器中的resource limit功能类似,限定数据库使用的cpu资源。不过原来的那个是用户分不同的资源组,这个,是按照数据库分不同的资源组了:
2.提供failover,注意这个是提供了服务器级别和数据库级别——双重级别的failover。而不是像一般的虚拟机,只是在服务器级别提供failover,如果仅是数据库down了,不会提供failover。
这功能通过oracle clusterware来实现。
3.load banlance。oracle提供一种叫做Omotion的特性,来实现在业务忙时,从忙的主机将数据库透明的转移到不忙的主机。
在上图中,DB 2原来跑在Server A上,此时Server A负载较重,Omotion能实现在Server A和Server B同步的功能,在Server A和Server B上同时存在DB 2的实例,但是是一个database。(2个instance,一个database,且能负载均衡,这个就类似与rac了。只不过,rac是instance A和instance B,这个是2个一样的instance。我想,这就是rac one node的来由吧,是个rac,但是同一个instance,即一个node。)注意,在此时,Server A上DB 2和Server B上的DB 2,能实现类似rac 的cache fusion——memory mirroring;同时,由于Server A负载重,原来在Server A上的事务,也会迁移到Server B上,直到所以的连接完成迁移后,Server A上的 DB 2的instance会关闭。——instance迁移的时间不会太长,即出现2个instance B的时间,不会太长。
不过,我很怀疑,这个迁移的依据是什么,如果仅仅是根据rac的load banlance原理,数据库在2个服务器间迁移来迁移去,不是很方便管理。如果我的Server之间的配置不同,一个超大的内存,忙;一个超小的内存,闲——这个时候instance是怎么迁移的呢?
4.保证系统和数据库的在线率。当主机硬件升级,或者打os patch,可以利用Omotion进行迁移。
5. 其他优势。由于rac one node使用的共享存储是ASM,因此ASM有的一些优势它也具有。
总结:从上面的几点优势来看,rac one node确实比较吸引人,能提供较高的高可用保护,另外,新的Omotion的特性,可以用于load banlance和迁移。——这个,我目前还找不到可以替代的方案来实现数据库的memory mirroring。
6条评论
good topic
昨天看到你们在twitter上讨论这个,今天就有了总结,我也借此终于搞明白这个概念了。我觉得rac one node有点类似IBM以前的DLPAR和现在新的power VM的特性。
Very good. I’m also interested in learning more about it.
如果是多节点(大于两个)+cpu cage+rac onenode的系统环境,一旦某个物理节点发生宕机,oracle会怎样切换,自动在某个节点重起实例?由voting disk来决定?
re :如果是物理服务器down了,服务器是不会重启的,而是将上面的instance failover到另外一个服务器上。
目前生产环境,RAC one node这样的架构使用不是很多。