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)
)
)
步骤:开启多个窗口,连接数据库。
sqlplus system/oracle@ypcmis
select instance_name from v$instance;
结果:既能连接节点1,也能连接节点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状态正常,数据库连接未丢失,无异常。
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测试。
5.1实例异常崩溃
步骤:在任一节点使用kill命令结束smon进程。
结果:实例被kill之后,数据库自动启动该实例。
5.2集群件异常崩溃
步骤:在任一节点使用kill命令结束ocssd.bin进程。
结果:ocssd.bin进程结束后,30秒后,节点重启。
5.3监听器异常奔溃
步骤:在任一节点使用kill命令结束监听器。
结果:监听被kill十分钟内会自动重新拉起。
5.4拔除节点所有公网网线
步骤:在任一节点拔除所有公网网线,检查集群是否正常。
结果:vip漂移至另外一节点,监听器不能远程监听掉线节点,所有业务重新连接至存活节点上。
以上测试场景,本次没有测试,有兴趣的朋友可以测试验证结果。