Oracle数据库并不只是个简单的圆柱体,事实上它有很多不同的方面,例如安全、可管理性等等。这些都是我关注的。 本博客的内容仅为作者个人观点,与Oracle公司和ITPUB网站均无关。欢迎转载,但请与作者联系,并注明出处。

为什么RAC比双机热备切换快很多?

上一篇 / 下一篇  2008-10-29 13:57:22

查看( 2462 ) / 评论( 44 )
前几天有同事要我帮着向客户的技术人员解释为什么数据库服务器双机热备切换需要较长时间,而RAC可以快很多。
以下是我的解释,请各位高手扔板砖或者玉块来指正:

我们先分析双机热备切换的步骤
假设A机是主机,B机是备机。当A机发生故障时,集群软件通知B机接管数据库。接管过程如下:
1. B机接管数据库文件所在的磁盘, 花费时间为T1
2. B机启动数据库实例,花费时间为T2
3. B机的数据库实例mount数据库文件,花费时间为T3
4. B机的数据库实例open数据库文件,完成数据库重启,花费时间为T4
5. 应用重新连接上B机的数据库实例,花费时间为T5

所以切换时间T=T1+T2+T3+T4+T5 (可能还有其它一些可以忽略不计的时间)。以上切换时间的计算是从集群软件断定A机已经停机开始计算,之前的时间不计。

1. 如果数据库文件所在的磁盘已经是共享文件系统,而且事先B机已经mount该文件系统,那么T1=0, 否则T1可能需要十几秒到2分钟。
2. T2一般比较快,如果Oracle SGA区比较大,时间会稍长一点,一般1~2分钟。
3. T3视数据文件的数量而定,如果数据文件比较多,那么这个时间也会比较长,一般2~5分钟。这个时间和磁盘的速度也有关系。
4. 如果切换是属于计划停机切换,那么数据库一般是正常 shutdown的,重新open时不需要做恢复工作,这个时间可能会很快,例如1分钟之内;但是如果是由于故障停机切换,那么数据库重新open的时候需要做大量的恢复(instance recovery)工作,所以T4有可能从1分钟到10分钟,甚至更长。这个时间和磁盘的速度也有关系。
5. 如果应用原来也跑在A机上,那么切换以后,还要重启应用,这个时间就比较长。如果应用部署在独立的应用服务器,例如C机上,那么一般需要等数据库服务器IP地址浮动到B机,Oracle监听器重启以后,应用才能重新连接到数据库服务器。这个时间可能需要1分钟到5分钟,重启应用的时间也可能更长。

所以双机热备下切换时间最少T=0+1+2+1+1=5分钟,这是非常理想的情况下;按照经验,至少需要10分钟。也可能是T=2+2+5+10+5=24分钟, 甚至更长,视数据库需要恢复的时间。


再看RAC的情况
1. 一定是共享磁盘,不需要再mount磁盘。T1=0
2. B机的实例平时已经Open,所以T2=0, T3=0, T4=0
3. 如果应用原来只跑在A机上,那么为缩短停机时间,可以事先可以在B机上把应用启动;A机故障以后只要使用B机的应用即可。没有停顿。如果应用部署在独立的应用服务器上,例如C机,甚至还有D机时,原来连接B机的应用正常工作,没有停顿时间;原来连接在A机上的应用重新连接数据库,这个部分应用可能的中断时间很短,一般在几秒钟到1分钟之内。

所以RAC环境下切换时间最少T=0+0+0+0+0.1=0.1分钟。也可能T=0+0+0+0+1=1分钟,但不会长很多。

如果有人不能理解这过于技术的描述,那么记住以下的比喻:
双机热备相当于火车头坏了,停下来换一个火车头;而RAC相当于有多个火车头,即使一个不工作了,也不需要停下了。

TAG: options oracle rac

Chanel [K] Kamus 发布于2008-10-29 17:31:01
期待老徐有更多的文章发表 :-)
棉花糖ONE的个人空间 棉花糖ONE 发布于2008-10-29 17:38:20
写的太好了,一下子把问题说清了,而且一看就明白
Oracle数据库技术 ruluo 发布于2008-10-29 17:59:00
回复 #1 bryanxu 的帖子
双机的话, 在某些情况下, 可能还需要将共享的磁盘从A卸载下来吧?
hughs1551发布于2008-10-29 18:26:40
在配置weblogic的时候提到要避免oracle双机锁是意思
shahand的个人空间 shahand 发布于2008-10-29 18:27:55
晕  ~~~~~~~
Chanel [K] Kamus 发布于2008-10-29 18:39:16

QUOTE:

原帖由 ruluo 于 2008-10-29 17:59 发表
双机的话, 在某些情况下, 可能还需要将共享的磁盘从A卸载下来吧?
算在B机接管数据库文件所在的磁盘这部分时间内了,因为总是需要从A umount,然后在B上mount的。
Sea_jk的个人空间 Sea_jk 发布于2008-10-29 18:40:26
顶,双机热备的原理及却换步骤将的很生动
Oracle数据库技术 ruluo 发布于2008-10-29 19:24:32
回复 #7 Kamus 的帖子

smartzeng发布于2008-10-29 19:47:05
双机热备的方式可以直接省略调cluster软件,人工切换不是也可以吗?就相当于把数据库挂到另一个主机上去了,当然这主机前提都要配置好数据库系统和应用软件。
徐懿的数据库多面体 bryanxu 发布于2008-10-29 20:59:55
回复 #10 smartzeng 的帖子
人工切换当然可以做,但是cluster软件的作用是发现主机宕机或数据库停止服务时,第一时间做切换。通过事先写好的脚本,可以把所有切换工作自动完成。如果等人工来做切换,又要慢了很多。
徐懿的数据库多面体 bryanxu 发布于2008-10-29 21:04:35
回复 #2 Kamus 的帖子
呵呵,刚开始尝试,谢谢捧场。一定努力发表更多的文章,就怕肚子里货色不够多 :-)。
Oracle Stranger Kyuurayi 发布于2008-10-29 21:10:14
双击热备是DG吧? Oracle名词真多

楼主是否也可以分析搭建成本和维护成本 假如难道差别不是很大为啥还要DG 而不用RAC呢?

DG的备份机器就算是个破机器 也只是分担一部分 或者不分担运算 只是让其连载网络中而已?
brucewoo的个人空间 brucewoo 发布于2008-10-29 21:11:30
不错,学习一下
smartzeng发布于2008-10-29 21:35:30

QUOTE:

原帖由 bryanxu 于 2008-10-29 20:59 发表
人工切换当然可以做,但是cluster软件的作用是发现主机宕机或数据库停止服务时,第一时间做切换。通过事先写好的脚本,可以把所有切换工作自动完成。如果等人工来做切换,又要慢了很多。
如果cluster软件只起到通知另外主机主机宕机或数据库停止服务,但就企业来说加买cluster软件和服务的费用就不是很划算了;采用这样双机热备的系统一般也不是7*24稍微停机时间长点也不是问题;说白了就是备个机器在旁边,哪个坏了换这个上。
徐懿的数据库多面体 bryanxu 发布于2008-10-29 21:36:01
回复 #13 Kyuurayi 的帖子
双机热备不是Data Guard, 而是为了避免单点故障,用两台服务器(一般相同配置)加一个存储组成的集群。这是目前比较常见的,最传统的保证高可用性的方法。
一般备机不跑数据库,就standby等着顶主机的位子。为避免资源浪费,有些客户会采用双机互为热备的方式,即两台服务器分别跑数据库和应用服务器,互相作为对方的备份。带来的问题是某台服务器发生故障时,剩下的那台又做数据库又做应用,压力太大。

关于DG, 建议你看一下 http://space.itpub.net/3724/viewspace-462947 一系列的DG介绍,比较详细。

[ 本帖最后由 bryanxu 于 2008-10-29 21:43 编辑 ]
smartzeng发布于2008-10-29 21:37:42

QUOTE:

原帖由 Kyuurayi 于 2008-10-29 21:10 发表
双击热备是DG吧? Oracle名词真多

楼主是否也可以分析搭建成本和维护成本 假如难道差别不是很大为啥还要DG 而不用RAC呢?

DG的备份机器就算是个破机器 也只是分担一部分 或者不分担运算 只是让其连载网络中而已?
双机热备不是DG因为只有一个数据库,DG和RAC的用途不一样;DG主要是灾备考虑,rac主要高可用性即oracle的HA罢了。
徐懿的数据库多面体 bryanxu 发布于2008-10-29 21:40:36

QUOTE:

原帖由 smartzeng 于 2008-10-29 21:35 发表

如果cluster软件只起到通知另外主机主机宕机或数据库停止服务,但就企业来说加买cluster软件和服务的费用就不是很划算了;采用这样双机热备的系统一般也不是7*24稍微停机时间长点也不是问题;说白了就是备个机器在旁边,哪个坏了换这个上。
目前还真有不少7*24的系统是双机热备的。不过10g RAC提供了免费的clusterware, 只要买了RAC就可以用附带的clusterware来做切换,包括第三方应用的切换。
棉花糖ONE的个人空间 棉花糖ONE 发布于2008-10-29 21:58:43
HA是active/standby的方式,rac是active/active 的方式
warehouse的个人空间 warehouse 发布于2008-10-29 22:56:22

五“宅”一生发布于2008-10-30 15:31:19
分析的通俗易懂。好文章!

BTW:论坛里面好像不少人把双机热备就等同于DG。
oldv发布于2008-10-30 16:12:46
双击热备是os层面的,rac则是db层面的
智多星 asser123 发布于2008-10-30 16:19:38
很好,学习了
ORACLE LIFE oradbHome 发布于2008-10-30 16:23:05
在可以说 rac 不需要切换. . 同时提供服务.
liyongdong的个人空间 liyongdong 发布于2008-10-30 16:32:41
很久没有看见这样的文章了.
paulxu2002的个人空间 paulxu2002 发布于2008-10-30 16:43:16
学习
shahand的个人空间 shahand 发布于2008-10-31 12:27:29
并行工作完全不同于hotspare/standby
*迎风*发布于2008-10-31 13:49:36
在rac系统上,如果A机在大事务或在很多应用发生故障,B机接管所花的时间应该并不短,未必会快过双机热备情况,至少在9I版本上oracle这方面做得并很好。在实际应用中都出现过B机接管A机花费时间很长的例子,并却B机在接管A机未完成时候,数据库很多应用都HANG住的,但据oracle工程师说在10G版本上这方面会改善很多。
wangying1518发布于2008-10-31 14:00:45
同意楼上的
Sea_jk的个人空间 Sea_jk 发布于2008-10-31 14:07:31
期待11g的active data guard
小比例尺发布于2008-10-31 14:12:18
双机热备要比DG好一些,因为双机热备没有数据损失之可能。
RAC要比双机热备要好得多,因为RAC可以保证业务的持续性。RAC还是真正的HA.

另外,双机热备还要借助第三方软件实现,更加使得这种架构不可取。
------------------------------------------------------------------------------
以上,个人见解
我来说两句

(可选)

我的栏目

日历

« 2012-05-25  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 17106
  • 日志数: 19
  • 建立时间: 2008-09-18
  • 更新时间: 2009-10-01

RSS订阅

Open Toolbar