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

来源:互联网 发布:python 局域网 编辑:程序博客网 时间:2024/04/28 02:13
前几天有同事要我帮着向客户的技术人员解释为什么数据库服务器双机热备切换需要较长时间,而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相当于有多个火车头,即使一个不工作了,也不需要停下了。

原创粉丝点击