注册
用Jmeter测试DataWatch实时主备案例
专栏/技术分享/ 文章详情 /

用Jmeter测试DataWatch实时主备案例

ZCH 2023/07/11 1938 6 0
摘要

1 测试目的

本案例测试目的是验证达梦数据库DataWatch实时主备架构,在主库故障时,备库自动切换为主库,提供数据库服务,接受负载请求服务的场景。

2 前置条件

2.1 DataWatch实时主备环境

已安装以下实时主备数据库系统。

2.1.1 数据库信息

image.png

2.1.2 监视器信息

根据以下监视器信息,测试时默认主节点实例是:GRP1_RT_01。
image.png
image.png

2.1.3 测试表

创建以下测试表,后续测试使用到。
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 );

2.2 dm_svc.conf配置

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)

3 安装Jmeter

从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
image.png

4 加载DM驱动和配置JDBC

4.1 加载达梦数据库驱动

将达梦数据库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

4.2 配置JDBC

如将默认测试计划命名为:DW实时主备测试,右击“DW实时主备测试”添加:JDBC Connection Configuration。
image.png

修改JDBC Connection Configuration:
1、在Variable Name for created pool输入自定义的连接池名字:JDBC-DM。
image.png
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,并输入测试账号和密码。
image.png

5 配置测试计划

5.1 配置线程组

添加两个线程组,每个线程组添加一个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;
image.png
image.png
image.png

5.2 配置监听器

Jmeter提供多种监听器用于展示和统计结果,可根据需要自行添加,如:本案例添加了:聚合报告、查看结果树、生成概要结果,以及TPS(Transactions per Second)。
image.png

6 测试过程

6.1 启动测试

配置好测试计划后,点击以下按钮启动:
image.png

启动测试后,使用数据库服务名连接数据库,查看测试表tb_1记录在持续增长:
[dmdba@dmonitor ~]$ disql test/123456789@DM_TIME
image.png

6.2 模拟GRP1_RT_01(PRIMARY)故障

6.2.1 制造故障

实例GRP1_RT_01故障前为主节点:
image.png

查看主节点网卡信息,使用ifdown命令关闭网卡服务:
image.png
image.png

6.2.2 观察自动切换

查看监视器信息,实例GRP1_RT_01的监视器状态为ERROR,实例GRP1_RT_02已切换为主节点(PRIMARY)。
image.png
image.png

查看v$instance表,主实例为GRP1_RT_02,与监视器信息一致:
image.png

6.2.3 观察测试表数据

查看测试表记录继续在增长,即测试负载继续工作:
image.png

6.3 恢复故障节点

前面测试过程,制造了实例GRP1_RT_01故障,再使用ifup命令启用网卡服务恢复:
image.png

稍后观察监视器信息,实例GRP1_RT_01已恢复,处于从节点(STANDBY)状态:
image.png
image.png

7 测试结果

7.1 GRP1_RT_01实例数据

单独连接数据库实例GRP1_RT_01,查看测试表记录数为:240,与120线程运行两分钟的测试计划结果数据一致。
image.png

7.2 GRP1_RT_02实例数据

单独连接数据库实例GRP1_RT_02,查看测试表记录数为:240,与120线程运行两分钟的测试计划结果数据一致。
image.png

7.3 Jmeter监听器结果

聚合报告可查看每个线程组的失败量和吞吐量等信息:
image.png
Transactions per Second可以查看TPS统计图信息:
image.png
测试控制台输出概要结果,数据量与数据库统计一致:
image.png

7.4 测试结论

测试计划是:两个线程组,每个线程组120线程(两分钟)往测试表插入数据,共240条记录,因主节点故障,导致在切换过程入库线程出现卡顿,最终入库时间大于测试计划的2分钟。切换延时与dm_svc.conf配置参数以及测试环境性能相关。
image.png
综上测试过程,达梦数据库DataWatch实时主备架构,在主库故障时,实现备库自动切换为主库,提供数据库服务,数据不丢失,达到数据库高可用的目标。


达梦在线服务平台
https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服