Oracle RAC 相关概念(Final)


1, RAC 提供的好处:
a. 多节点负载均衡
b. 提供高可用性,故障容错及无缝切换功能,将硬件和软件的异常造成的影响最小化。
c. 通过并行执行技术提供事务响应的时间 - 通常用于数据分析系统。
d. 通过横向扩展提高每秒交易数和连接数 - 通常用于OLTP。
e. 节约硬件成本,可以使用多个廉价的PC服务器代替小型机或大型机,节约相应的维护成本。
f. 可扩展性好,可以方便添加删除节点,扩展硬件资源。


2. RAC 缺点:
a. 管理更复杂,要求更高
b. 系统规划设计较差时性能可能会不如单节点
c. 可能会增加软件成本(按照CPU收费)


3. Oracle9i之前RAC被称为OPS,之后被称为RAC. OPS和RAC区别在于前者没有Cache Fusion, 后
者有, OPS需要将数据写入disk后其他节点发出请求再次从disk读取, cache fusion可以在内存之间进行
数据块的传输, 各个节点更新后,将最后的版本写入磁盘。

 

4. Clusterware 的主要进程

a. crsd : 负责集群的高可用操作,管理crs资源: db,instance,listener,vip, ons, gsd等,
操作包括启动,关闭,监控及故障切换。 该进程由root用户管理和启动。 crsd如果有故障会导致系统重新启动。

b. cssd : 管理各个节点间的关系, 用于节点通信,节点在在加入或离开集群的时候通知cluster,这个进程
由oracle用户运行管理,发生故障的时候cssd也会自动重新启动系统。 

c. oprocd: 集群进程管理, process monitor for the cluster , 用于保护共享数据IO fencing
仅在没有使用vendor 的集群软件状态下运行 。

d. evmd : 事件监测进程, 由oracle用户运行管理

 


Cluster Ready Services(CRS):管理集群内高可用操作的基本程序。Crs管理的任何事物被称之为资源,它们可以是
一个数据库、一个实例、一个监听、一个虚拟IP(VIP)地址、一个应用进程等等。CRS是根据存储于OCR中的资源配置信息来管
理这些资源的。这包括启动、关闭、监控及故障切换(start、stop、monitor及failover)操作。当一资源的状态改变时,
CRS进程生成一个事件。当你安装RAC时,CRS进程监控Oracle的实例、监听等等,并在故障发生时自动启动这些组件。默认
情况下,CRS进程会进行5次重启操作,如果资源仍然无法启动则不再尝试。

 

5. 共享文件 OCR 及 votingdisk

a. Oracle Cluster Registry(OCR): 记录OCR记录节点成员的配置信息,如database、ASM、instance、
   listener、VIP等CRS资源的配置信息,可存储于裸设备或者群集文件系统上

b. Voting Disk : 仲裁盘,保存节点的成员信息, 如包含哪些节点成员、节点的添加删除信息 等 。

 


6. 安装 

在Oracle RAC中,软件不建议安装在共享文件系统上;包括CRS_HOME和ORACLE_HOME,尤其是CRS软件,推荐安装
在本地文件系统中,这样在进行软件升级,以及安装patch和patchset的时候可以使用滚动升级(rolling upgrade)的方式,
减少计划当机时间。另外如果软件安装在共享文件系统也会增加单一故障点。


如果使用ASM存储,需要为asm单独安装ORACLE软件,独立的ORACLE_HOME,易于管理和维护,比如当遇到asm 的bug需要
安装补丁时,就不会影响RDBMS文件和软件。

 


7. 脑裂症(split brain)
  
在一个共享存储的集群中,当集群中hearbeat丢失时,如果各节点还是同时对共享存储去进行操作,那么在这种情况
下所引发的情况是灾难的。ORACLE RAC采用投票算法来解决这个问题,思想是这样的:每个节点都有一票,考虑有A,B,C三个节点的
集群情形,当A节点由于各种原因不能与B,C节点通信时,那么这集群分成了两个DOMAIN,A节点成为一个DOMAIN,拥有一票;B,C节
点成为一个DOMAIN拥有两票,那么这种情况B,C节点拥有对集群的控制权,从而把A节点踢出集群,对要是通IO FENCING来实现。如
果是两节点集群,则引入了仲裁磁盘,当两个节点不能通信时,请求最先到达仲裁磁盘的节点拥用对集群的控制权。


网络问题(interconnect断了);时间不一致;misscount超时 等等 才发生brain split。
而此时为保护整个集群不受有问题的节点影响,而发生brain split(或叫fencing?)
oracle采用的是server fencing,就是重启有问题的节点,试图修复问题。当然有很多问题是不能自动修复的。比如时间不一致,
而又没有ntp;网线坏了。。。这些都需要人工介入修复问题。而此时的表现就是有问题的节点反复重启。

 

8. 心跳传输协议默认是UDP .

 

9. 从Oracle10g起,Oracle提供了自己的集群软件,叫Oracle clusterware简称CRS,这个软件是安装oracle rac的前提,而
第三方集群则成了安装的可选项。同时提供了另外一个新特性叫做ASM,可以用于RAC下的共享磁盘设备的管理,还实现了数据文件的条带化和镜像,
以提高性能和安全性 (S.A.M.E: stripe and mirror everything ) ,不再依赖第三方存储软件来搭建RAC系统。

 


10. Oracle Clusterware 的心跳

Oracle clusterware 使用两种心跳设备来验证成员的状态,保证集群的完整性;一是对voting disk 的心跳,ocssd 进程每秒向
votedisk 写入一条心跳信息;  二是节点间的私有以太网的心跳,两种心跳机制都有一个对应的超时时间,分别叫做 misscount 和disktimeout:

misscount 用于定义节点间心跳通信的超时,单位为秒;
disktimeout ,默认200 秒,定义css 进程与vote disk 连接的超时时间;
reboottime ,发生裂脑并且一个节点被踢出后,这个节点将在reboottime 的时间内重启;默认是3 秒;


使用下面的命令查看misscount 的值。

# crsctl get css misscount 

 


11. 在下面两种情况发生时,css 会踢出节点来保证数据的完整,:

(1) Private Network IO time > misscount,会发生split brain 即裂脑现象,产生多个“子集群”(subcluster) ,‘
这些子集群进行投票来选择哪个存活,踢出节点的原则按照下面的原则:

节点数目不一致的,节点数多的subcluster 存活;节点数相同的,node ID 小的节点存活。

(2) Vote Disk IO Time > disktimeout ,踢出节点原则如下:失去半数以上vote disk 连接的节点将在reboottime
的时间内重启;
例如有5 个vote disk,当由于网络或者存储原因某个节点与其中>=3 个vote disk 连接超时时,该节点就会重启。当一个或者两个vote d
isk 损坏时则不会影响集群的运行。

 


12. 如何查看現有系統的配置 。


对于一个已经有的系统,可以用下面几种方法确认数据库实例的心跳配置,包括网卡名称,IP 地址,使用的网络协议:
(1) 最简单的方法:可以在数据库的后台报警日志中得到。具体参见上面列出的告警日志;
(2) 使用oradebug ;
SQL> oradebug setmypid
SQL> oradebug ipc
SQL> oradebug tracefile_name
找到对应trace 文件的这一行:socket no 10 IP 10.0.0.1 UDP 49197
(3) 从数据字典中得到(V$CLUSTER_INTERCONNECTS 和 V$CONFIGURED_INTERCONNECTS),或查询x$ksxpia 

 

13. 为了避免心跳网络成为系统的单一故障点,简单地我们可以使用操作系统绑定的网卡来作为Oracle 的心跳网络,以AIX 为
例,我们可以使用etherchannel 技术,假设系统中有ent0/1/2/3 四块网卡,我们绑定2 和3 作为心跳:

在HPUX 和Linux 对应的技术分别叫APA 和bonding

 


14. UDP 私有网络的调优

当使用UDP 作为数据库实例间cache fusion 的通信协议时,在操作系统上需要调整相关参数,以提高UDP 传输效率,并在
较大数据时避免出现超出OS 限制的错误:
(1) UDP 数据包发送缓冲区:大小通常设置要大于(db_block_size * db_multiblock_read_count )+4k,
(2) UDP 数据包接收缓冲区:大小通常设置10 倍发送缓冲区;
(3) UDP 缓冲区最大值:设置尽量大(通常大于2M)并一定要大于前两个值;
各个平台对应查看和修改命令如下:
Solaris 查看 ndd /dev/udp udp_xmit_hiwat udp_recv_hiwat udp_max_buf ;
修改 ndd -set /dev/udp udp_xmit_hiwat 262144
ndd -set /dev/udp udp_recv_hiwat 262144
ndd -set /dev/udp udp_max_buf 2621440
AIX 查看 no -a |egrep “udp_|tcp_|sb_max”
修改 no -p -o udp_sendspace=262144
no -p -o udp_recvspace=1310720
no -p -o tcp_sendspace=262144
no -p -o tcp_recvspace=262144
no -p -o sb_max=2621440
Linux 查看 文件/etc/sysctl.conf
修改 sysctl -w net.core.rmem_max=2621440
sysctl -w net.core.wmem_max=2621440
sysctl -w net.core.rmem_default=262144
sysctl -w net.core.wmem_default=262144
HP-UX 不需要
HP TRU64 查看 /sbin/sysconfig -q udp
修改: 编辑文件/etc/sysconfigtab
inet: udp_recvspace = 65536
udp_sendspace = 65536
Windows 不需要

 

15. 相关log路径 

$ORA_CRS_HOME/crs/log
$ORA_CRS_HOME/crs/init
$ORA_CRS_HOME/css/log
$ORA_CRS_HOME/css/init
$ORA_CRS_HOME/evm/log
$ORA_CRS_HOME/evm/init
$ORA_CRS_HOME/srvm/log

 

16. VIP, GSD, ONS

VIP 服务,供透明切换(TAF)使用 . VIP是一个用户用来连接数据库的替代公网地址(alternate public address),而不
是标准的公网IP地址(standard public IP address)。在配置VIP时,你必须为每个节点保留一个IP地址,此地址与公网属
于同一子网。

GSD 服务: A component that receives requests from SRVCTL to execute administrative job
tasks, such as startup or shutdown. The command is executed locally on each node, and
the results are returned to SRVCTL. by default.


ONS 服务, Oracle Notification Service(ONS):通信的快速应用通知(FAN:Fast Application Notification)
事件的发布及订阅服务。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-631561/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-631561/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值