本案例测试目的是验证达梦数据库DataWatch实时主备架构,在主库故障时,备库自动切换为主库,提供数据库服务,接受负载请求服务的场景。
已安装以下实时主备数据库系统。
根据以下监视器信息,测试时默认主节点实例是:GRP1_RT_01。
创建以下测试表,后续测试使用到。
SQL> create table tb_1 (
2 f_int int not null,
3 f_varchar varchar(64),
4 f_text text,
5 f_number number(8,2),
6 f_bit bit,
7 f_datetime datetime,
8 f_timestamp timestamp
9 );
Jmeter测试机已配置达梦数据库连接服务文件:
[dmdba@dmonitor ~]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
DM_TIME=(192.168.228.31:5236,192.168.228.32:5236)
[DM_TIME]
LOGIN_MODE =(1)
SWITCH_TIME=(10)
SWITCH_INTERVAL=(1000)
从https://jmeter.apache.org/下载安装包,如本案例使用的是:apache-jmeter-5.5.tgz,本安装包无需编译安装,解压即可使用,要求具备JDK1.8运行环境,如不具备请额外下载安装。
[dmdba@dmonitor ~]$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
解压apache-jmeter-5.5.tgz后,进入bin目录,执行jmeter.sh即可。本安包包同时支持Windows环境,对应启动脚本:jmeter.bat。
[dmdba@dmonitor ~]$ tar xzf apache-jmeter-5.5.tgz
[dmdba@dmonitor ~]$ cd apache-jmeter-5.5/bin
[dmdba@dmonitor bin]$ ./jmeter.sh
将达梦数据库JDBC驱动包(DmJdbcDriver18.jar)包传到jmeter的lib目录下,重启jmeter即可。
[dmdba@dmonitor ~]$ ll /home/dmdba/apache-jmeter-5.5/lib/DmJdbcDriver18.jar
-rwxr-xr-x 1 dmdba dinstall 1279835 6月 7 14:27 /home/dmdba/apache-jmeter-5.5/lib/DmJdbcDriver18.jar
如将默认测试计划命名为:DW实时主备测试,右击“DW实时主备测试”添加:JDBC Connection Configuration。
修改JDBC Connection Configuration:
1、在Variable Name for created pool输入自定义的连接池名字:JDBC-DM。
2、在Datebase URL输入:
jdbc:dm://DM_TIME?logLevel=all&logdir=/home/dmdba/apache-jmeter-5.5/jdbclog
3、在JDBC Driver class输入:dm.jdbc.driver.DmDriver,并输入测试账号和密码。
添加两个线程组,每个线程组添加一个JDBC请求,因虚拟机配置所限,本案例主要验证数据库高可用性(主备自动切换和数据一致性),配置120秒发起120个线程请求。
JDBC Request 1执行SQL:
insert into tb_1(f_int,f_varchar,f_text,f_number,f_bit,f_datetime,f_timestamp)
select 1,'1','1',1.11,0,sysdate,systimestamp from dual;
JDBC Request 2执行SQL:
insert into tb_1(f_int,f_varchar,f_text,f_number,f_bit,f_datetime,f_timestamp)
select 2,'2','2',2.22,1,sysdate,systimestamp from dual;
Jmeter提供多种监听器用于展示和统计结果,可根据需要自行添加,如:本案例添加了:聚合报告、查看结果树、生成概要结果,以及TPS(Transactions per Second)。
配置好测试计划后,点击以下按钮启动:
启动测试后,使用数据库服务名连接数据库,查看测试表tb_1记录在持续增长:
[dmdba@dmonitor ~]$ disql test/123456789@DM_TIME
实例GRP1_RT_01故障前为主节点:
查看主节点网卡信息,使用ifdown命令关闭网卡服务:
查看监视器信息,实例GRP1_RT_01的监视器状态为ERROR,实例GRP1_RT_02已切换为主节点(PRIMARY)。
查看v$instance表,主实例为GRP1_RT_02,与监视器信息一致:
查看测试表记录继续在增长,即测试负载继续工作:
前面测试过程,制造了实例GRP1_RT_01故障,再使用ifup命令启用网卡服务恢复:
稍后观察监视器信息,实例GRP1_RT_01已恢复,处于从节点(STANDBY)状态:
单独连接数据库实例GRP1_RT_01,查看测试表记录数为:240,与120线程运行两分钟的测试计划结果数据一致。
单独连接数据库实例GRP1_RT_02,查看测试表记录数为:240,与120线程运行两分钟的测试计划结果数据一致。
聚合报告可查看每个线程组的失败量和吞吐量等信息:
Transactions per Second可以查看TPS统计图信息:
测试控制台输出概要结果,数据量与数据库统计一致:
测试计划是:两个线程组,每个线程组120线程(两分钟)往测试表插入数据,共240条记录,因主节点故障,导致在切换过程入库线程出现卡顿,最终入库时间大于测试计划的2分钟。切换延时与dm_svc.conf配置参数以及测试环境性能相关。
综上测试过程,达梦数据库DataWatch实时主备架构,在主库故障时,实现备库自动切换为主库,提供数据库服务,数据不丢失,达到数据库高可用的目标。
达梦在线服务平台
https://eco.dameng.com
文章
阅读量
获赞