前言:
什么是暴力测试,按东北话说,就是造,就是搓磨,绝不哩哩啦啦,上来就齐了咔嚓!
转换成普通话是什么呢,就是对达梦数据库进行非常规操作,比如强制停库、关电源、杀进程、拔网线等,主要测试极端情况下,如何保证达梦数据库正常对外提供服务。
主要测试了以下几个场景:
1.正常关闭主库实例;
2.直接杀掉主库实例;
3.关闭主库守护进程;
4.关闭备库实例;
5.直接杀掉备库实例;
6.关闭备库守护进程;
7.down主库心跳网卡;
8.down备库心跳网卡(监控器在备库机器上);
9.down备库心跳网卡(监控器在第三天机器上);
10.down主库公共网卡;
11.down备库公共网卡;
12.主库服务器长时间宕机;
13.备库服务器长时间宕机。
第二部分,注意测试达梦、Oracle、MySQL数据库性能对比
主要检查测试以下几个场景:
1:大数据新增
模拟跑批业务,大事务,单条新增几千万数据量。
2:单条多次新增
模拟小事物,单条小数据量,多次执行。
3:大数据汇总
模拟大数据查询
4:大数据汇总排序
模拟大数据查询
5:复杂SQL
模拟复杂查询
测试之前,先简单看下达梦守护集群:
和Oracle DG架构类似
主从同步:
主库增、删、改等操作产生的 Redo 日志通过MAL系统传输到备库,备库接收并重演 Redo 日志,从而实现备库与主库的数据同步。
切换:
提供自动切换和手动切换两种守护模式,满足用户不同需求。
其中,自动切换模式需要提前配置并启用监控器,
该模式下,主库出现故障时,会自动将备库切换为主库对外继续提供数据库服务。
主备推荐架构:
两台DB服务器+1台或2台Monitor服务器
其中,monitor占用很少的资源
占用磁盘空间2.1GB,内存15263*0.003=45.789MB,CPU平时使用率为0,数据同步时0.7%。
思考两个问题:
达梦主备集群如何实现数据一致性的?
达梦主备集群如何实现故障自动转移的?
主备数据库一致性
归档类型:实时归档、即时归档
主库生成联机 Redo 日志,当触发日志写文件操作后,日志线程先将 RLOG_PKG 发送到备库,备库接收后进行合法性校验(包括日志是否连续、备库状态是否 Open 等),不合法则返回错误信息,合法则作为 KEEP_RLOG_PKG 保留在内存中,原有 KEEP_RLOG_PKG 的 Redo 日志加入 Apply 任务队列进行 Redo 日志重演,并响应主库日志接收成功。当有多个备库时,主库需要收到所有备库的响应消息才继续后续操作。
归档分为两种模式:事务一致模式和高性能模式
事务一致模式
主库执行事务,备库收到主库发送的 Redo 日志,并重演完成后再响应主库。主库收到备库响应消息后,再响应用户的提交请求。
高性能模式
备库收到主库发送的 Redo 日志后,马上响应主库,再启动日志重演。高性能模式下,备库与主库的数据同步存在一定延时,不能严格保证事务一致性。
事务一致模式下,主备库之间严格维护事务一致性,但主库要等备库 Redo 日志重演完成后,再响应用户的提交请求,事务提交时间会变长,存在一定的性能损失。高性能模式则通过牺牲事务一致性获得更高的性能和提升系统的吞吐量。用户应该根据实际情况,选择合适的即时归档模式。
下面看一下暴力测试结果
应用如何连接达梦主备集群?
连接达梦主备集群
本地连接
disql 用户名:端口号
IP远程连接
disql 用户名@IP:端口号
服务名方式
驱动版本 jdbc
jdbc 连接示例
性能测试
一:大数据新增
模拟跑批业务,大事务,单条新增几千万数据量。
二:单条多次新增
模拟小事物,单条小数据量,多次执行。
三:大数据汇总
模拟大数据查询
四:大数据汇总排序
模拟大数据查询
五:复杂SQL
模拟复杂查询
数据库压力测试-大数据新增(达梦)
测试场景:大数据新增
环境说明:kylin v10、内存 7200MB、CPU 4C
创建单列数值型测试表t1
单机:一次性插入8388万测试数据(2250MB),耗时42秒,速度 54MB/s
主备:一次性插入8388万测试数据(2250MB),耗时78秒,速度 29MB/s
达梦主库dmserver进程:
CPU使用率从4.4%增长到8.0%;内存使用率从43.6%增长到45.1%
达梦主库dmwatcher进程:
CPU使用率一直0.0%;内存使用率一直0.1%;
达梦备库库dmserver进程:
CPU使用率从2.3%增长到5.3%;内存使用率从41.2%增长到44.3%
达梦备库dmwatcher进程:
CPU使用率一直0.0%;内存使用率一直0.3%;
数据库压力测试-大数据新增(MySQL)
测试场景:大数据新增
环境说明:kylin v10、内存 7200MB、CPU 4C
创建单列数值型测试表t1
单机:一次性插入8388万测试数据(2250MB),耗时360秒,速度 6.25MB/s
主备:一次性插入8388万测试数据(2250MB),耗时367秒,速度 6.13MB/s
mysqld进程:
单机:CPU使用率一直18.8%;内存使用率从35.5%增长到50.1%;
主从:CPU使用率一直18.9%;内存使用率从8.0%增长到10.4%;
数据库压力测试-大数据新增(Oracle)
测试场景:大数据新增
环境说明:kylin v10、内存 7200MB、CPU 4C
创建单列数值型测试表t1
单机:一次性插入8388万测试数据(1024MB),耗时120秒,速度 8.5MB/s
Oracle进程:
内存使用率从18.7%增长到23.9%;CPU使用率从7.0%增长到11.0%;
数据库压力测试-小数据新增(达梦、Oracle、MySQL)
测试场景:单条插入,循环插入990万次
环境说明:kylin v10、内存 7200MB、CPU 4C
数据库压力测试-大数据汇总查询
数据库压力测试-大数据汇总排序查询
性能测试结果
###chenjuchao 20240430###
欢迎关注我的公众号《IT小Chen》