本文使用达梦巡检工具DMJRBM对虚拟机上的双机DSC共享存储集群进行了一次本地巡检,并通过对结果文档的简析介绍数据库巡检工作。
环境:DM8双机共享存储集群本地巡检
关联文档:基于 VMware + CentOS7 搭建达梦 DMDSC 双机共享存储集群 | 达梦技术社区
巡检工具依赖java环境,这里我们可以使用DM8内置的jdk
cd /home/dmdba/dmdbms/jdk/bin #切换到DM8内置java路径,按自己安装路径修改
./java -version #查看java版本,确认是java1.8
检查数据库的运行状态
ps -ef|grep dms #查看数据库运行状态
随后,将 DmcheckSysinfo.jar
和配置文件放到合适路径下
并编辑 systemcheck.setting
编辑setting文件
cd ./DmcheckSysinfo
vim systemcheck.setting
示例配置
#############重要#################
1. 数据库数据量TB级别时,启动jar包前执行这句,避免占用内存过多
export MALLOC_ARENA_MAX=2
2. 启动jar包时添加参数限制内存使用,命令如下
java -jar -Xms256m -Xmx2048m DmcheckSysinfo.jar
3. 已支持jar包参数形式巡检DB数据库,具体查看操作文档
##################################
#生成的word文档单独生成 0单独生成 1合并生成为一个 2根据系统名(systemName)分类生成文档
docResultMerge= 2
#是否进行数据脱敏(涉及ip地址的信息) 0不脱敏 1脱敏
dataDesensitization = 1
#巡检类型 0 (数据库+服务器) 1 (只检查数据库信息 注意: 该类型下可不填写 sshHost、sshPort、sshUser、sshPass属性信息)
checkDbModeType = 0
#配置文件密码加密 0不加密 1加密 (注:运行工具后,会自动对密码进行加密处理且不可逆)
configPwdEncode = 1
#巡检数据时查询的日期天数 (主要针对 日巡检/周巡检/月巡检/季巡检的场景)
checkDateRangeDay = 90
#ssh连接主机的超时时间,默认为3000(ms),如网络存在抖动等情况可适当调整
sshConnectTimeout=3000
#doc文档的生成信息配置
[doc_config]
#word的大标题
titleName=达梦数据库DM8DSC
##用户单位
userUnit=达梦数据库
##用户信息
userPerson=达梦
##巡检单位
checkUnit=武汉达梦数据库股份有限公司
##巡检人员
checkPerson=LyC_Dd (test)
#巡检数据库的信息 支持多个数据库巡检 格式必须是 group_db+序号
#需保障每个组中dbUrl与sshHost中所填的IP一致
#因生成的word是按照systemName值分类展示,所以当多个组配置属于一套集群时,需确保这些组中systemName完全一致
[group_db1]
#数据库关联的应用系统名称
systemName=DSC集群系统
#数据库的配置信息
dbUrl = jdbc:dm://127.0.0.1:5236
#本地巡检,故ip可为127.0.0.1
dbUserName = SYSDBA
#前面配置了配置文件密码加密,此处在运行一次巡检后密码会被加密
dbPassword = [PASSWORD]
#数据库所在服务器的数据信息
sshHost = 127.0.0.1
#本地巡检
sshPort = 22
sshUser =
sshPass =
#远程连接的例子如下:
#[group_db2]
#systemName=XX系统
#dbUrl = jdbc:dm://[IP]:[PORT]
#dbUserName = SYSDBA
#dbPassword = [PASSWORD]
#sshHost = [IP]
#sshPort = 22
#sshUser = root
#sshPass = [PASSWORD]
运行巡检工具
export MALLOC_ARENA_MAX=2 #避免内存占用过高
/home/dmdba/dmdbms/jdk/bin/java -jar ./DmcheckSysinfo.jar
生成结果在 execResult
下,包括 Word、Excel、HTML 报告。
cd execResult
ls
这一页就像体检报告的“总检结论”,把巡检中发现的所有情况按照严重程度分成 信息 / 警告 / 错误 三类。
表示系统当前的正常状态或基础情况说明。
例如:数据库已开启归档、实例 QPS/TPS 值、CPU/内存占用、数据量大小、日志中无错误。
用途:让使用者知道数据库运行在什么环境,属于背景信息,一般不代表问题。
表示存在风险或配置不符合最佳实践,但并未导致数据库报错。
例如:swap 已开启、归档文件大小不合理、统计信息过旧、sqllog 未开启、部分参数未按推荐值设置、磁盘调度算法不符合要求、ulimit 配置不合理等。
用途:提醒运维人员需要优化或调整,防止潜在问题。
表示明确的异常或缺陷,需要优先处理。
例如:备份作业未开启、ASM 日志和 CSS 日志存在异常、系统组 dinstall 未找到。
用途:这些问题如果不解决,可能会影响数据库安全性、可用性或可靠性。
这一页的作用,并不是给结论,而是把数据库运行过程中的 累计统计指标 全部罗列出来,方便后续分析。可以理解为数据库的“计数器大盘”。
这一页展示了每条会话在内存里占了多少空间、做了什么事、用的是什么类型的内存池。
会话和虚拟机内存统计”页 = 细粒度的会话/虚拟机内存明细表。我们在这页能看到:每个会话平均用了多少内存?有没有会话“内存水位”过高?内存扩展/释放是否频繁,是否可能有泄漏?
巡检工具基于excel表信息生成了可交互的html文件,通过该文件我们可以更便捷的查找相关信息。
mindmap
root((数据库巡检项))
数据库检查内容
授权信息(DbLicenseInfo)
实例信息(DbInstanceInfo)
运行概要(OperationalSummaryInfo)
近期检查点信息(DbPointInfo)
表空间信息(TableSpaceInfo)
数据文件信息(DbDataFileInfo)
用户信息(DbUserInfo)
对象信息
无效对象(DbInvaildTargetDescInfo)
对象详情(DbTargetInfo)
大表信息(DbBigTableInfo)
超长字段/LOB表(DboverLongandLob)
分区表唯一约束(DbParttabUniqueConstandPartkeys)
大分区表(DbBigPartitionTableInfo)
会话相关
会话统计(DbSessionCountInfo)
登录历史(DmSessionCreateHisbyHour)
长时间空闲会话(DmSessionLongIdle)
会话概要(DbSessionOutlineInfo)
参数与日志
关键参数(DbKeyParameterInfo)
重做日志(DbRlogFileInfo)
归档日志(DbArchFileInfo)
备份策略(DbBackInfo)
作业相关
作业概要(DbJobOutLineInfo)
作业任务(DbJobWorkInfo)
作业异常日志(DbJobErrInfo)
内存与资源
共享池(DbMemPoolDescInfo)
Buffer池(DbBufferPoolDescInfo)
字典池(DbDictInfo)
内存设计大小
内存运行大小
索引与碎片
无效索引(DbNoVaildIndexInfo)
无效分区索引(DbNoVaildPartitionIndexInfo)
非循环序列(DbNoLoopSequenceInfo)
大索引(DbBigIndexInfo)
碎片表(DbFragmentTableInfo)
碎片索引(DbFragmentIndexInfo)
等待事件
系统等待事件(DbSystemWaitEventInfo)
会话等待事件(DbSessionWaitEventInfo)
监控与其他
监视器(DbMonitorInfo)
Redo日志切换(DbRedoSwitchRecordInfo)
其他检查(DbOtherDataChkInfo)
数据守护集群相关
发送信息(CheckDwArchSendInfo)
同步信息(CheckDbDataSyncInfo)
内部MAL(CheckDwInnerMalInfo)
MAL内存配置(CheckDbDwMALMemoryInfo)
共享存储集群相关
ASM磁盘组(DscAsmDiskGroupInfo)
ASM磁盘(DscAsmDisksInfo)
集群注册(DbDscRegisterInfo)
集群服务(DbDscServiceInfo)
节点信息(DbDscDcrNodeEpInfo)
高频请求(DbDscHighRequestInfo)
对象请求(DbDscObjectRequestInfo)
数据库运行情况
实例异常日志(CheckDbInstanceInfo)
AP异常日志(CheckDbApInfo)
守护运行日志(CheckDbWatcherLogInfo)
DSC ASM日志(CheckDbDscAsmLogInfo)
DSC CSS日志(CheckDbDscCSSLogInfo)
操作系统信息
主机信息(OsSystemInfo)
CPU信息(OsCpuInfo)
网卡信息(OsNetworkCardInfo)
内存信息(OsMemInfo)
IO信息(OsIoInfo)
TOP进程(OsTopProcessInfo)
定时任务(OsJobWorkInfo)
系统日志(OsMessagesLogInfo)
磁盘相关
分区(OsDiskPartitionInfo)
使用情况(OsDiskUsedInfo)
挂载(OsDiskMountInfo)
调度算法(OsDiskSchedulerInfo)
其他(OsOtherCheckInfo)
数据库运行SQL信息
死锁事务(DbDeadLockInfo)
慢SQL(RunErrSqlInfo)
异常语句(TopSlowSqlInfo)
异常次数统计(RunErrCountSqlInfo)
执行耗时SQL(TopTimeSqlInfo)
解析耗时SQL(TopParseSqlInfo)
逻辑读SQL(TopLogicSqlInfo)
物理读SQL(TopPhysicSqlInfo)
哈希归并SQL(TopHashMergeSqlInfo)
排序SQL(TopSortSqlInfo)
表扫描SQL(TopTableScanSqlInfo)
内存占用SQL(TopUseMemSqlInfo)
高频SQL(TopFrequencySqlInfo)
MTAB内存SQL(TopMtabMemSqlInfo)
MTAB占用SQL(TopMtabSqlInfo)
数据库状态信息
运行信息统计
会话内存使用
会话与虚拟机内存统计
配置与目录
dm.ini参数
配置文件汇总
dmarch.ini
dmmal.ini
sqllog.ini
dmwatcher.ini
目录信息
安装目录
实例目录
归档目录
sqllog目录
log目录
备份目录
其他
定时任务信息
Debug日志
参数检查
数据库运行状态
事务等待
用户与权限
作业运行历史
死锁记录
巡检结果会生成报告,但并不是所有信息都同等重要。实践中,我可以重点关注以下几个方面
服务可用性:数据库实例是否正常运行,日志中是否有报错。
存储空间:表空间、归档目录、磁盘是否接近满。
备份有效性:最近一次备份是否成功,能否用于恢复。
主备/集群同步:是否存在严重延迟或同步中断。
性能热点:是否有明显慢 SQL 或高频 SQL,是否造成系统卡顿。
会话连接:是否有异常激增或大量空闲会话。
数据库巡检不是简单“跑工具”,而是通过结果找到风险点。简单来说,巡检就要回答三句话:
数据库现在能不能正常用?
有没有快要出事的风险(磁盘、同步、备份)?
有没有性能瓶颈或优化空间?
这样,巡检才能真正服务于系统的稳定运行。
文章
阅读量
获赞