Failover测试
Oracle RAC是一个集群数据库,可以实现负载均衡和故障无缝切换。这些技术实现的基础就是failover(故障转移)。
Oracle 10g RAC的failover可以细分成3种,分别是:
Client-Side Connect time Failover;
TAF;
Service-Side TAF.
Client-Side Connect time Failover、TAF是基于客户端连接的负载均衡,Service-Side TAF是基于服务器端的负载均衡。
Client-Side Connect time Failover,只有在建立连接的那一时刻起作用。即,这种failover方式只在发起时才去感知节点的故障,如果发现节点没有响应,则自动尝试地址列表中的下一个地址。一旦建立连接后,节点出现故障都不会作处理,从客户端的表现就是会话断开,用户程序必须重新建立连接。
启用这种failiover的方法就是在客户端的tnsnames.ora中添加failover=on条目,这个参数默认就是on,所以即使不添加这个条目,客户端也会获得这种failover的能力。
TAF,就是连接建立以后、应用系统运行过程中,如果某个实例发生故障,连接到这个实例上的用户会被自动迁移到其他的健康实例上。
Service-Side TAF也是TAF,所有TAF的特点它都具有;其次,这种TAF是在服务器上配置,而不像TAF是在客户端配置的。
1、 测试方法
(1)、一个两节点的RAC,两个节点分别是rac1、rac2;
(2)、客户端的tnsnames.ora配置两个条目,分别使用两种failover;
(3)、客户端利用这两个tnsnames条目,打开两个窗口,建立两个连接,做一些操作;
(4)、在服务器上,用kill命令杀掉两个连接对应的Server Process来模拟节点故障(也可以重启的方式);
(5)、经过一个短暂时间后,使用TAF的连接会自动转移到其他实例上,用户可以继续在这个窗口中执行语句;
(6)、而使用Client-Side Connect Time Failover的连接不会自动转移,用户必须重新连接.
首先,先建立两个用户,并授予相关权限
2、 测试步骤
(1)、编辑客户端tnsnames.ora文件,在其中添加两个条目,分别使用两种failover机制,JH对应Client-Side,而YS对应TAF。
使用Client-Side Connect Time Failover的TNS配置如下:
JH =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.1 .116)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.1 .117)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
)
)
使用TAF的TNS配置如下,其中红色部分是TAF内容:
YS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.1 .116)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.1 .117)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
(FAILOVER_MODE=
(TYPE = session)
(METHOD = basic)
(RETRIES = 180)
(DELAY = 5)
)
)
)
(2)、开启两个窗口,分别使用两个TNS进行连接。
第一个窗口,使用Client-Side Connect Time Failover的TNS
Sqlplus ac/ac.green@jh
第二个窗口,使用TAF的TNS
Sqlplus green/ac.green@ys
(3)、连接成功后,在两个窗口中执行语句。
在第一个窗口中,查看用户连接到的实例:
查看连接的TAF配置
查询结果中AC的用户两个都是NONE,说明这个连接没有使用TAF
Green帐户则使用了TAF。
在第二个窗口中,查看GREEN连接到的实例
(4)、因为两个用户都连接到rac1这个实例上,所以重启节点rac1.
(5)、返回到两个窗口,再执行SQL语句,两个连接都抛出错误。
(6)、稍等一会,再次执行语句
第一个窗口显示
使用Client-Side Connect Time Failover的窗口,仍然报出错误,说明用户连接没有被failover.
第二个窗口显示
使用TAF窗口,用户查询正常,说明用户连接已经被failover.
如果这步实验是用kill进程的方法,用户是不会被迁移到rac2实例上的。