RAC 高可用测试
基本环境描述:
- 11g RAC + redhat 7.9 (2节点)
- Public 网络:team技术,2张网卡绑定
- Private 网络:2组
- 共享存储:直连主机方式
本文简单的测试了RAC安装后,几个常见的高可用测试场景。
某环境测试过程:
测试使用的tnsnames.ora
-- 使用scan-ip连接数据库
YPCMIS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xxx.xxx)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = YPCMIS)
)
)
1.负载均衡测试
步骤:开启多个窗口,连接数据库。
sqlplus system/oracle@YPCMIS
select instance_name from v$instance;
结果:既能连接节点1,也能连接节点2,且基本保持循环,实现负载均衡功能。
2.高可用测试
步骤:分别在实例1、实例2中创建测试表,并执行批量插入操作。
-- node1:
create table t1(a int primary key,b int);
BEGIN
FOR X IN 1 .. 100000 LOOP
INSERT INTO t1 VALUES (x,x);
COMMIT;
DBMS_LOCK.SLEEP(0.2);
END LOOP;
END;
/
-- node2:
create table t2(a int primary key,b int);
BEGIN
FOR X IN 1 .. 100000 LOOP
INSERT INTO t2 VALUES (x,x);
COMMIT;
DBMS_LOCK.SLEEP(0.2);
END LOOP;
END;
/
2.1 测试public网卡绑定
1) 轮询拔掉节点1的一根网线
2) 轮询拔掉节点2的一根网线
结果:CRS状态正常,数据库连接未丢失,无异常。Public 网络正常。
2.2 测试心跳网络(2组)
1) 轮询拔掉节点1的心跳网络
结果:节点1心跳网络丢失一组,但是CRS状态正常,数据库连接未丢失,无异常。
2) 轮询拔掉节点2的心跳网络
结果:节点2心跳网络丢失一组,但是CRS状态正常,数据库连接未丢失,无异常。
2.3 测试存储(拔光纤线)
1) 轮询拔掉节点1的光纤线
结果:节点1存储链路丢失一组,但是CRS状态正常,数据库连接未丢失,无异常。
2) 轮询拔掉节点2的光纤线
结果:节点2存储链路丢失一组,但是CRS状态正常,数据库连接未丢失,无异常。
3.Failover测试
1)reboot 任意主机
结果:节点1主机直接重启,实例1连接丢失,CRS集装状态节点2正常,scan listener和节点1 VIP 自动漂移到节点2,所有业务重新连接至存活节点上。
结果:待节点1主机重启完成后,节点1自动加入集群,数据库实例自动启动。
2)客户端TFA测试
客户端tnsnames配置参考
YPCMIS_TAF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xxx.xxx)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = YPCMIS)
(FAILOVER_MODE=
(TYPE=SELECT)
(METHOD=BASIC)
)
)
)
步骤:使用TAF客户端连接到数据库,关闭连接的节点1。
sqlplus system/oracle@YPCMIS_TAF
srvctl stop instance -d YPCMIS -i YPCMIS1
srvctl status database -d YPCMIS
结果:待节点1实例关闭后,原来连接在节点1的session没有断开,自动连到节点2。
有兴趣的朋友,可以配置服务端的TAF测试。
4.删除测试表
5.其余测试场景
5.1实例异常崩溃
步骤:在任一节点使用KILL命令结束SMON进程。
结果:实例被KILL之后,数据库自动启动该实例。
5.2集群件异常崩溃
步骤:在任一节点使用KILL命令结束OCSSD.BIN进程。
结果:OCSSD.BIN进程结束后,30秒后,节点重启。
5.3监听器异常奔溃
步骤:在任一节点使用KILL命令结束监听器。
结果:监听被KILL十分钟内会自动重新拉起。
5.4拔除节点所有公网网线
步骤:在任一节点拔除所有公网网线,检查集群是否正常。
结果:VIP漂移至另外一节点,监听器不能远程监听掉线节点,所有业务重新连接至存活节点上。
以上测试场景,本次没有测试,有兴趣的朋友可以测试验证结果。