DMDSC集群的简单测试

一、负载均衡测试

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命令以服务名方式登录服务器,保持连接

image-20200914143611691

3、在两个节点分别查看会话连接数

节点1:

image-20200914143803558

节点2:

image-20200914143814686

可以观察到节点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

image-20200914154208085

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

image-20200914154312676

同时,使用服务名的方式访问集群数据库,当节点1实例故障后,会自动将节点1上的会话连接切换到节点2上。(节点1上的事务SQL会失败)

image-20200914154330113

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查看集群状态:

image-20200914154434894

可以观察到整个集群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状态,确认正常

image-20200914154551490

2、直接关闭节点1服务器(模拟服务器宕机)

关闭后,等待一会儿,可以在dmcssm中查看到相关的集群服务检测切换信息。

3、检查集群状态(等待集群系统切换完成后)

image-20200914154625459

可以观察到此时的节点1所有的服务状态都是异常的,节点1的DMCSS、DMASM、DMSERVER的active状态都为FALSE。

4、正常启动节点1服务器(模拟服务器恢复)

启动后可以在dmcssm中查看到相关的服务的启动信息。

5、检查集群状态

image-20200914155208954

可以观察到此时的集群所有节点的服务状态都正常,节点1的DMCSS、DMASM、DMSERVER的active状态都为TRUE。

六、心跳网络故障测试

在集群运行过程中,当一节点服务器出现心跳网络故障后,系统自动检测到其状态异常,集群系统切换成单节点集群;网络恢复后,自动加入集群。

1、检查集群服务状态,确认正常

image-20200914155340542

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
集群服务状态都正常:

image-20200914161229862

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。

image-20200914162542101

因为此处只有一块数据存储故障,而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、检查集群服务状态

image-20200914162715539

可以观察到,整个集群服务状态恢复正常。


以上是对DMDSC集群的简单测试。
更多资讯请上达梦技术社区了解:https://eco.dameng.com

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值