一、负载均衡测试
1、在客户端机器配置服务名DSC
[dmdba@localhost bin]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
DSC=(192.168.15.50:5236,192.168.15.51:5236)
2、开启10个终端,分别用disql命令以服务名方式登录服务器,保持连接
3、在两个节点分别查看会话连接数
节点1:
节点2:
可以观察到节点1上4个连接,节点2上6个连接,说明通过服务名方式连接服务器,连接会话能够被系统均衡分配到集群的各个节点。
二、DMASM测试
1、连接dmasmtool
[dmdba@DSC02 bin]$ ./dmasmtool dcr_ini=/data/dmdsc/dmdcr.ini
DMASMTOOL V8
ASM>
2、远程登录DMASM
[dmdba@localhost bin]$ ./dmasmtool HOST=192.168.25.50 PORT_NUM=9349 USERID=ASMSYS/abcd
DMASMTOOL V8
ASM>ls
+
disk groups total [4]......
NO.1 name: DMLOG
NO.2 name: DMDATA
NO.3 name: VOTE
NO.4 name: DCR
Used time: 10.560(ms).
3、创建文件
ASM>create asmfile '+DMDATA/test.txt' size 10
Used time: 115.223(ms).
ASM>ls -l +DMDATA/test.txt
file :
name: test.txt
id: 0x8100001d
size: 10.00 MB (10485760 Bytes)
group_id: 1
disk_id: 0
auno: 4
offset: 9216
create_time: 2020-09-07 13:08:59
modify_time: 2020-09-07 13:08:59
Used time: 5.366(ms).
4、扩展文件大小
ASM>alter asmfile test.txt extend to 20
Used time: 00:00:08.718.
ASM>ls -l test.txt
file :
name: test.txt
id: 0x8100001d
size: 20.00 MB (20971520 Bytes)
group_id: 1
disk_id: 0
auno: 4
offset: 9216
create_time: 2020-09-07 13:08:59
modify_time: 2020-09-07 13:11:28
Used time: 4.618(ms).
5、拷贝文件
#ASM磁盘组之间拷贝
ASM>cp test.txt '+DMLOG/T/t.txt'
Used time: 123.170(ms).
ASM>ls -l +DMLOG/T/t.txt
file :
name: t.txt
id: 0x80000008
size: 20.00 MB (20971520 Bytes)
group_id: 0
disk_id: 0
auno: 4
offset: 4608
create_time: 2020-09-07 13:13:46
modify_time: 2020-09-07 13:13:46
Used time: 5.891(ms).
ASM>
#拷贝到操作系统目录中
ASM>create asmfile test.txt size 5
Used time: 77.308(ms).
ASM>ls
dir : data
file : test.txt
total count 2.
Used time: 14.528(ms).
ASM>cp test.txt /home/dmdba/
test.txt total copy 5242880 bytes, percent: 100.00%
Used time: 148.908(ms).
ASM>exit
[dmdba@DSC01 bin]$ cd
[dmdba@DSC01 ~]$ ls
test.txt
6、删除文件
ASM>delete asmfile test.txt
Used time: 5.143(ms).
ASM>delete asmfile +DMLOG/T/t.txt
Used time: 5.072(ms).
ASM>ls -l +DMLOG/T/t.txt
ls +DMLOG/T/t.txt failed:[code : -2405] 文件或目录[+DMLOG/T/t.txt]不存在
Used time: 5.009(ms).
ASM>ls -l test.txt
ls +DMDATA/test.txt failed:[code : -2405] 文件或目录[+DMDATA/test.txt]不存在
Used time: 2.587(ms).
7、创建磁盘组
[dmdba@DSC01 bin]$ ./dmasmtool dcr_ini=/data/dmdsc/dmdcr.ini
DMASMTOOL V8
ASM>create diskgroup 'DATA1' asmdisk '/dev/raw/raw5'
Used time: 227.937(ms).
8、磁盘组添加磁盘
[dmdba@DSC01 bin]$ ./dmasmtool dcr_ini=/data/dmdsc/dmdcr.ini
DMASMTOOL V8
ASM>alter diskgroup 'DMDATA0' add asmdisk '/dev/raw/raw5'
9、删除磁盘组
[dmdba@DSC01 bin]$ ./dmasmtool dcr_ini=/data/dmdsc/dmdcr.ini
DMASMTOOL V8
ASM>drop diskgroup 'DATA1'
Used time: 16.640(ms).
三、多节点写入测试
测试支持多节点数据访问,支持不同节点上数据的一致性。
1、登录节点1上创建TEST表并插入数据操作
[dmdba@DSC01 bin]$ ./disql
disql V8
用户名:
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 23.973(ms)
SQL> create table test(c1 int,c2 char(10),c3 varchar(20));
操作已执行
已用时间: 69.361(毫秒). 执行号:402.
SQL> insert into test values(1,'a','aaaa');
影响行数 1
已用时间: 3.776(毫秒). 执行号:403.
SQL> insert into test values(2,'b','bbbb');
影响行数 1
已用时间: 0.740(毫秒). 执行号:404.
SQL> commit;
操作已执行
已用时间: 1.407(毫秒). 执行号:405.
2、登录节点2上查询test表并建T表插入数据操作
[dmdba@DSC02 bin]$ ./disql
disql V8
用户名:
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 12.237(ms)
SQL> select * from test;
行号 C1 C2 C3
---------- ----------- ---------- ----
1 1 a aaaa
2 2 b bbbb
已用时间: 25.688(毫秒). 执行号:101.
SQL> create table t (c1 int,c2 char(10),c3 varchar(20));
操作已执行
已用时间: 68.208(毫秒). 执行号:102.
SQL> insert into T values(3,'c','ccccc');
影响行数 1
已用时间: 3.789(毫秒). 执行号:103.
SQL> insert into T values(4,'d','ddddd');
影响行数 1
已用时间: 0.624(毫秒). 执行号:104.
SQL> commit;
操作已执行
已用时间: 1.055(毫秒). 执行号:105.
3、节点1查询T表并删除TEST表
SQL> select * from t;
行号 C1 C2 C3
---------- ----------- ---------- -----
1 3 c ccccc
2 4 d ddddd
已用时间: 27.092(毫秒). 执行号:406.
SQL> drop table test;
操作已执行
已用时间: 161.802(毫秒). 执行号:407.
SQL>
4、节点2查询TEST表并删除T表
SQL> select * from test;
select * from test;
第1 行附近出现错误[-2106]:无效的表或视图名[TEST].
已用时间: 0.672(毫秒). 执行号:0.
SQL> drop table t;
操作已执行
已用时间: 104.097(毫秒). 执行号:106.
5、节点1查询T表
SQL> select * from t;
select * from t;
第1 行附近出现错误[-2106]:无效的表或视图名[T].
已用时间: 0.797(毫秒). 执行号:0.
通过上面的测试,可以观察到dmdsc共享集群和Oracle RAC一样,是支持多节点数据访问,支持不同节点上数据的一致性。
四、实例故障测试
在集群运行过程中,一个实例崩溃后,系统自动检测到其状态异常,并切换成单节点集群;故障节点实例恢复正常启动后,自动加入集群。
1、为了测试,先在dmcssm中关闭实例自动启动
set GRP_DSC auto restart off <---关闭实例自动拉起的命令
[monitor] 2020-09-07 17:13:03: 通知CSS(seqno:0)关闭节点(RAC0)的自动拉起功能
[monitor] 2020-09-07 17:13:03: 通知CSS(seqno:0)关闭节点(RAC0)的自动拉起功能成功
[monitor] 2020-09-07 17:13:03: 通知CSS(seqno:1)关闭节点(RAC1)的自动拉起功能
[monitor] 2020-09-07 17:13:03: 通知CSS(seqno:1)关闭节点(RAC1)的自动拉起功能成功
[monitor] 2020-09-07 17:13:03: 通知当前活动的CSS执行清理操作
[monitor] 2020-09-07 17:13:04: 清理CSS(0)请求成功
[monitor] 2020-09-07 17:13:04: 清理CSS(1)请求成功
[monitor] 2020-09-07 17:13:04: 关闭CSS自动拉起功能成功
2、查看实例状态,确认正常,active状态为FALSE
3、模拟节点1实例故障
(1)kill节点1数据库实例进程
[dmdba@DSC01 ~]$ ps -ef|grep dms|grep -v grep
dmdba 7115 1 0 13:41 ? 00:00:13 /data/dmdbms/bin/dmserver path=/data/dsc0_config/dm.ini dcr_ini=/data/dmdsc/dmdcr.ini
[dmdba@DSC01 ~]$ kill -9 7115
(2)此时dmcssm中会显示相应信息
[CSS0] [DB]: 设置命令[LINK_CHECK], 目标站点 RAC0[0], 命令序号[24]
[CSS0] [DB]: 设置命令[LINK_CHECK], 目标站点 RAC1[1], 命令序号[25]
[CSS0] [DB]: 设置命令[NONE], 目标站点 RAC1[1], 命令序号[0]
[CSS0] [DB]: 设置命令[NONE], 目标站点 RAC0[0], 命令序号[0]
[CSS0] [DB]: 检测到EP RAC0[0]故障在PROCESS_OPEN中
[CSS0] [DB]: 设置EP RAC0[0]为故障EP
[CSS0] [DB]: 设置EP RAC1[1]为控制节点
[CSS0] [DB]: 设置命令[EP_CRASH_STEP1], 目标站点 RAC1[1], 命令序号[29]
[CSS0] [DB]: 设置命令[NONE], 目标站点 RAC1[1], 命令序号[0]
[CSS0] [DB]: 命令[EP_CRASH_STEP1]处理结束
[CSS0] [DB]: 设置命令[EP_CRASH_STEP2], 目标站点 RAC1[1], 命令序号[32]
[CSS0] [DB]: 设置命令[NONE], 目标站点 RAC1[1], 命令序号[0]
[CSS0] [DB]: 命令[EP_CRASH_STEP2]处理结束
[CSS0] [CSS]: 设置命令[CONFIG VIP], 目标站点 CSS1[1], 命令序号[3]
[CSS0] [CSS]: 设置命令[NONE], 目标站点 CSS1[1], 命令序号[0]
[CSS0] [DB]: 设置命令[CONFIG VIP], 目标站点 RAC1[1], 命令序号[39]
[CSS0] [DB]: 设置命令[NONE], 目标站点 RAC1[1], 命令序号[0]
[CSS0] [DB]: 命令[CONFIG VIP]处理结束
(3)查看实例状态,节点1实例的active状态应为FALSE
同时,使用服务名的方式访问集群数据库,当节点1实例故障后,会自动将节点1上的会话连接切换到节点2上。(节点1上的事务SQL会失败)
4、恢复节点1的数据库实例,观察能否自动加入集群
[dmdba@DSC01 bin]$ ./DmService start
Starting DmService: connnect dmasmtool successfully.
[ OK ]
此时,dmcssm会显示相应信息:
[CSS0] [DB]: 设置EP RAC0[0]为故障重加入EP
[CSS0] [DB]: 设置命令[START NOTIFY], 目标站点 RAC0[0], 命令序号[44]
[CSS0] [DB]: 设置命令[SUSPEND EP WORKER THREAD], 目标站点 RAC1[1], 命令序号[45]
[CSS0] [DB]: 暂停工作线程结束
[CSS0] [DB]: 设置命令[DCR_LOAD], 目标站点 RAC0[0], 命令序号[46]
[CSS0] [DB]: 设置命令[DCR_LOAD], 目标站点 RAC1[1], 命令序号[47]
[CSS0] [DB]: 故障EP重新加入DSC结束
[CSS0] [DB]: 设置命令[ERROR EP ADD], 目标站点 RAC0[0], 命令序号[49]
[CSS0] [DB]: 设置命令[ERROR EP ADD], 目标站点 RAC1[1], 命令序号[50]
[CSS0] [DB]: 故障EP重新加入DSC结束
[CSS0] [DB]: 设置命令[EP RECV], 目标站点 RAC1[1], 命令序号[52]
[CSS0] [DB]: 故障EP恢复结束
[CSS0] [DB]: 设置命令[EP START], 目标站点 RAC0[0], 命令序号[54]
[CSS0] [DB]: 设置命令[EP START2], 目标站点 RAC0[0], 命令序号[56]
[CSS0] [DB]: 设置命令[EP OPEN], 目标站点 RAC0[0], 命令序号[58]
[CSS0] [DB]: 设置命令[NONE], 目标站点 RAC0[0], 命令序号[0]
[CSS0] [DB]: 设置命令[RESUME EP WORKER THREAD], 目标站点 RAC1[1], 命令序号[60]
[CSS0] [DB]: 继续工作线程结束
[CSS0] [DB]: 设置命令[NONE], 目标站点 RAC1[1], 命令序号[0]
[CSS0] [DB]: 设置命令[EP REAL OPEN], 目标站点 RAC0[0], 命令序号[62]
[CSS0] [DB]: 设置命令[NONE], 目标站点 RAC0[0], 命令序号[0]
dmcssm查看集群状态:
可以观察到整个集群DMCSS、DMASM、DMSERVER的状态都正常。
5、连接测试
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@DSC
服务器[192.168.15.50:5236]:处于普通打开状态
登录使用时间: 27.633(毫秒)
disql V8
SQL>
SQL> select curr_sch,user_name,state,clnt_host,clnt_ip from v$sessions;
行号 CURR_SCH USER_NAME STATE CLNT_HOST CLNT_IP
---------- -------- --------- ------ --------------------- --------------------
1 SYSDBA SYSDBA ACTIVE localhost.localdomain ::ffff:192.168.15.33
已用时间: 7.153(毫秒). 执行号:1.
SQL>
会话连接访问正常。
五、服务器故障测试
在集群运行过程中,当一节点出现服务器宕机故障后,系统自动检测到其状态异常,集群系统切换成单节点集群;故障节点恢复后,自动加入集群。
1、查看集群DMCSS、DMASM、DMSERVER状态,确认正常
2、直接关闭节点1服务器(模拟服务器宕机)
关闭后,等待一会儿,可以在dmcssm中查看到相关的集群服务检测切换信息。
3、检查集群状态(等待集群系统切换完成后)
可以观察到此时的节点1所有的服务状态都是异常的,节点1的DMCSS、DMASM、DMSERVER的active状态都为FALSE。
4、正常启动节点1服务器(模拟服务器恢复)
启动后可以在dmcssm中查看到相关的服务的启动信息。
5、检查集群状态
可以观察到此时的集群所有节点的服务状态都正常,节点1的DMCSS、DMASM、DMSERVER的active状态都为TRUE。
六、心跳网络故障测试
在集群运行过程中,当一节点服务器出现心跳网络故障后,系统自动检测到其状态异常,集群系统切换成单节点集群;网络恢复后,自动加入集群。
1、检查集群服务状态,确认正常
2、关闭网卡,模拟网络故障
[root@DSC02 ~]# ifdown eth1
3、连接节点2数据库实例,发现节点2实例已故障无法连接
[dmdba@DSC02 bin]$ ./disql
disql V8
用户名:
密码:
[-70028]:创建SOCKET连接失败.
用户名:
密码:
4、使用服务名连接,均连接到节点1上
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@DSC
服务器[192.168.15.50:5236]:处于普通打开状态
登录使用时间: 9.525(毫秒)
disql V8
SQL>
5、恢复节点2网络,查看集群状态
[root@DSC02 ~]# ifup eth1
集群服务状态都正常:
6、连接测试
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@DSC
服务器[192.168.15.50:5236]:处于普通打开状态
登录使用时间: 21.676(毫秒)
disql V8
SQL> exit
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@DSC
服务器[192.168.15.51:5236]:处于普通打开状态
登录使用时间: 19.814(毫秒)
disql V8
SQL>
会话连接能够正常分配到两节点。
七、存储网络故障测试
在集群运行过程中,当拔掉一节点的存储光纤线模拟存储失效,系统自动检测到其状态异常,集群系统切换成单节点集群;故障节点恢复后,自动加入集群。
1、在openfiler中配置iscsi存储并映射
2、两台机器上连接iscsi存储
iscsiadm -m discovery -t st -p 192.168.15.100
iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.5b815520f846 -p 192.168.15.100 -l
3、绑定为裸设备(两节点)
在/etc/udev/rules.d/60-raw.rules文件中添加如下内容:
ACTION=="add", KERNEL=="sdf", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="raw5", OWNER="dmdba", GROUP="dinstall", MODE="660"
[root@DSC01 ~]# start_udev
Starting udev: [ OK ]
[root@DSC01 ~]# ls -l /dev/raw/raw
raw1 raw2 raw3 raw4 raw5 rawctl
[root@DSC01 ~]# ls -l /dev/raw/raw5
crw-rw----. 1 dmdba dinstall 162, 5 Sep 8 08:37 /dev/raw/raw5
4、创建ASM磁盘
将新添加的iscsi存储初始化为asm磁盘。
[dmdba@DSC01 bin]$ ./dmasmcmd
DMASMCMD V8
ASM>create asmdisk '/dev/raw/raw5' 'DATA1'
[Trace]The ASM initialize asmdisk /dev/raw/raw5 to name DMASMDATA1
Used time: 31.135(ms).
ASM>
5、创建ASM磁盘组
[dmdba@DSC01 bin]$ ./dmasmtool dcr_ini=/data/dmdsc/dmdcr.ini
DMASMTOOL V8
ASM>create diskgroup 'DATA1' asmdisk '/dev/raw/raw5'
Used time: 227.937(ms).
ASM>
6、创建用户及表空间
SQL> select group_name,total_size,free_size from v$asmgroup;
行号 GROUP_NAME TOTAL_SIZE FREE_SIZE
---------- ---------- ----------- -----------
1 DMLOG 2047 1524
2 DMDATA 10239 9764
3 DATA1 5119 5108
4 VOTE 500 476
5 DCR 500 476
已用时间: 7.131(毫秒). 执行号:703.
SQL> create tablespace test datafile '+DATA1/TEST.DBF' size 100 autoextend on ;
操作已执行
已用时间: 00:00:01.971. 执行号:705.
SQL> create user test identified by Test123456 default tablespace test;
操作已执行
已用时间: 87.177(毫秒). 执行号:706.
SQL> grant resource,public to test;
操作已执行
已用时间: 17.854(毫秒). 执行号:707.
SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='TEST';
行号 TABLESPACE_NAME FILE_NAME
---------- --------------- ---------------
1 TEST +DATA1/TEST.DBF
已用时间: 12.271(毫秒). 执行号:710.
创建测试表
[dmdba@localhost bin]$ ./disql test/Test123456@DSC
服务器[192.168.15.50:5236]:处于普通打开状态
登录使用时间: 36.000(毫秒)
disql V8
SQL> create table t (c1 int,c2 varchar(10));
操作已执行
已用时间: 76.350(毫秒). 执行号:802.
SQL> insert into t values(1,'aaa');
影响行数 1
已用时间: 5.023(毫秒). 执行号:803.
SQL> insert into t values(2,'bbb');
影响行数 1
已用时间: 0.890(毫秒). 执行号:804.
SQL> commit;
操作已执行
已用时间: 1.954(毫秒). 执行号:805.
SQL>
7、存储网络故障模拟
节点2登出iscsi存储:
[root@DSC02 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.5b815520f846 -p 192.168.15.100 -u
Logging out of session [sid: 2, target: iqn.2006-01.com.openfiler:tsn.5b815520f846, portal: 192.168.15.100,3260]
Logout of [sid: 2, target: iqn.2006-01.com.openfiler:tsn.5b815520f846, portal: 192.168.15.100,3260] successful.
同时在节点2进行数据插入操作:
[dmdba@localhost bin]$ ./disql test/Test123456@DSC
SQL> insert into test.t values(4,'ddd');
影响行数 1
已用时间: 25.915(毫秒). 执行号:603.
SQL> commit;
操作已执行
已用时间: 7.079(毫秒). 执行号:604.
SQL> insert into t values(5,'eeee');
[-70065]:连接异常,切换当前连接成功.
服务器[192.168.15.50:5236]:处于普通打开状态
SQL> exit
[dmdba@localhost bin]$
可以观察到,在插入时会HANG住,并且确认实例状态异常后,如果是使用服务名的方式连接数据库会自动切换到正常的节点。
8、查看集群服务状态
等待集群检测确认状态,然后查询集群状态,可以观察到节点2的DMSERVER服务的active状态为FALSE。
因为此处只有一块数据存储故障,而DCR VOTE磁盘组的磁盘是正常的,所以只有故障节点的DMSERVER服务异常,如果节点的所有的ASM磁盘组异常,则节点的集群所有的服务都是异常状态。
9、模拟存储网络恢复
节点2登陆iscsi存储:
[root@DSC02 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.5b815520f846 -p 192.168.15.100 -l
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:tsn.5b815520f846, portal: 192.168.15.100,3260] (multiple)
Login to [iface: default, target: iqn.2006-01.com.openfiler:tsn.5b815520f846, portal: 192.168.15.100,3260] successful.
或者如果做了开机自动连接iscsi存储,直接重启机器。本次测试采用的是重启机器。
10、检查集群服务状态
可以观察到,整个集群服务状态恢复正常。
以上是对DMDSC集群的简单测试。
更多资讯请上达梦技术社区了解:https://eco.dameng.com