千家信息网

MySQL数据库监控项的示例分析

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,这篇文章将为大家详细讲解有关MySQL数据库监控项的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。监控项目MYSQL.QPSMYSQL.TPSMYSQL.R
千家信息网最后更新 2024年11月22日MySQL数据库监控项的示例分析

这篇文章将为大家详细讲解有关MySQL数据库监控项的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

监控项目
MYSQL.QPS
MYSQL.TPS
MYSQL.READS
MYSQL.WRITES
MYSQL.RWRATIO
MYSQL.KEY_BUFFER_READ_HITS
MYSQL.KEY_BUFFER_WRITE_HITS
MYSQL.QUERY_CACHE_HITS
MYSQL.INNODB_BUFFER_READ_HITS
MYSQL.THREAD_CACHE_HITS
MYSQL.SLOW_QUERIES_PER_SECOND
MYSQL.TEMP_TABLES_TO_DISK_RATIO
MYSQL.TMP_DISK_TABLES_PER_SECOND
MYSQL.SELECT_FULL_JOIN
MYSQL.SELECT_FULL_JOIN_IN_ALL_SELECT
MYSQL.CONNECTIONS
MYSQL.CONNECTION_TIME
MYSQL.INNODB_ROW_LOCK_CURRENT_WAITS
MYSQL.PROCESS_OF_MYSQLD
MYSQL.HA_STATUS
MYSQL.SLAVE_STATUS
MYSQL.TCP_COUNT
MYSQL.TCP_AVG
MYSQL.TCP_MAX
MYSQL.SLAVE_DELAYS


一.MYSQL.QPS
定义:QPS 实际上是指 MySQL Server过去10秒平均每秒执行的 Query总量(包括show .select,set names,set global 等等);
计算公式:QPS=questions(当前值)-questions(10秒前的值)/10
是否保留:是
报警阀值:视各个业务情况(主要是query的复杂度)及服务器配置设置.大部分设置为10000.
报警类型:大于10000 严重.大于12000 灾难


二.MYSQL.TPS
定义:TPS指每秒向mysql sever提交的修改(包含update.insert.delete.replace);
老的计算方式:
T1=Handler_commit+Handler_rollback (均为当前值)
T2= Handler _commit+ Handler _rollback (均为10s之前值)
TPS=T1-T2/10
新的计算方式:
T1= Com_insert+ Com_replace+Com_delete+Com_update (均为当前值)
T2= Com_insert+ Com_replace+Com_delete+Com_update (均为10s之前值)
TPS=T1-T2/10
是否保留:是
报警阀值:视各个业务情况及服务器配置设置.大部分设置为4000.
报警类型:大于4000严重.大于6000 灾难


三.MYSQL.READS
定义:READS指每秒向msyql sever提交的读请求次数(仅指select);
计算公式:
R1=com_select+ qcache_hits (均为当前值)
R2=com_select+ qcache_hits (均为10秒前的值)
READS=R1-R2/10
是否保留:是
报警阀值:


四.MYSQL.WRITES
定义:WRITERS 指每秒向mysql server提交的写请求次数:
计算公式:
W1=com_insert+com_delete+com_update (均为当前值)
W2=com_insert+com_delete+com_update (均为10s之前的值)
WRITES=W1-W2/10
是否保留:不保留
去除原因:这个监控选项和tps重复.


五.MYSQL.RWRATIO
定义:RWRATIO指自mysql server启动以来的读写比例.注意这里不是以10s前后来衡量的;
计算公式:
R= com_select+ qcache_hits (均为当前值)
W= com_insert+ com_delete+ com_update+ com_replace (均为当前值)
RWRATIO=R/W (得出值保留小数点前的值)
是否保留:不保留
去除原因:这个监控选项可以间接通过mysql.reads和mysql.tps计算出来.无需另外设置监控项。


六.MYSQL.KEY_BUFFER_READ_HITS
定义:KEY_BUFFER_READ_HITS 指myisam引擎向key buffer读命中率的情况.这个buffer用来存储myisam的索引key;
计算公式:
KEY_BUFFER_READ_HITS=(1-( key_reads/ key_read_requests))*100% (均为当前值)
(得出值保留小数点前的值)
是否保留:不建议保留
去除原因:现在只有sso和酒仙桥cms是myisam引擎.后续项目全部采用innodb.且这两个项目会在合适时机会全部转换为innodb。且目前这个2个项目数据压力稳定.或者暂时只监控这2个业务.更换引擎后在删除此监控项。


七.MYSQL.KEY_BUFFER_WRITE_HITS
定义:KEY_BUFFER_WRITE_HIT 指myisam引擎向key buffer写入命中率的情况;
计算公式:
KEY_BUFFER_WRITE_HIT =(1-(key_writes/key_write_requests))*100 (均为当前值)
(得出值保留小数点前的值).
是否保留:不建议保留
去除原因: 这个监控项只能体现myisam的命中率.myisam在未来项目中将会被淘汰.另外也没有必要专门监控mysiam的write命中情况.关注key buffer的总体命中情况.更有意义。


八.MYSQL.QUERY_CACHE_HITS
定义:QUERY_CACHE_HITS指查询缓存的命中率情况.值越高代表query cache作用越大.从而降低引擎压力.在mysql server层返回用户结果;
计算公式:
QUERY_CACHE_HITS =qcache_hits/( qcache_hits+ qcache_inserts) *100% (均为的当前值)
(得出值保留小数点前的值).
是否保留:不建议保留
去除原因: 线上关键业务的修改量都比较大.而且操作query cache是一个global lock.导致 经常发生sql 停留在Waiting for query cache lock和失效query cache的状态。另外.一个业务如果超过95%的sql是select.才建议打开query cache。


九.MYSQL.INNODB_BUFFER_READ_HITS
定义:INNODB_BUFFER_READ_HITS.极为重要的一个状态值.反应innodb引擎所需数据在内存中的命中的情况。
计算公式:
INNODB_BUFFER_READ_HITS=(1-(innodb_buffer_pool_reads/innodb_buffer_pool_read_requests))*100% (均为当前值)(得出值保留小数点前的值).
是否保留:保留
报警阀值:小于95%
报警类型:小于95% 警告


十.MYSQL.THREAD_CACHE_HITS
定义:THREAD_CACHE_HITS=( 1-( threads_created/ connections))*100% (均为当前值)
(得出值保留小数点前的值).
是否保留:保留
报警阀值:小于90%
报警类型:小于90% 警告


十一.MYSQL.SLOW_QUERIES_PER_SECOND
定义:SLOW_QUERIES_PER_SECOND 指每过去10秒平均每秒产生的slow log的总量;
计算公式:
SLOW_QUERIES_PER_SECOND = Slow_queries(当前值)- Slow_queries(10秒之前的值)/10
是否保留:保留
报警阀值:
报警类型:



十二.MYSQL.TEMP_TABLES_TO_DISK_RATIO
定义:TEMP_TABLES_TO_DISK_RATIO指在硬盘上创建临时表的几率,越小越好.代表临时表都创建在内存中。
计算公式:
TEMP_TABLES_TO_DISK_RATIO=(created_tmp_disk_tables/ created_tmp_tables)*100%
(均为当前值)(得出值保留小数点前的值).
是否保留:不建议保留
去除原因:了解sql性能是否存在问题.不应该仅关注这个比率.一条性能很差的sql产生磁盘临时表对性能的影响可能比100条产生内存临时表的sql大很多。应该积极关注慢查询中那些执行时间非常长sql。


十三.MYSQL.TMP_DISK_TABLES_PER_SECOND
定义:TMP_DISK_TABLES_PER_SECOND 指过去10秒内每秒创建磁盘临时表的数量;
计算公式:
TMP_DISK_TABLES_PER_SECOND=created_tmp_disk_tables(当前值)-created_tmp_disk_tables(10秒之前的值)/10
是否保留:建议保留
报警阀值:
报警类型:


十四.MYSQL.SELECT_FULL_JOIN
定义:SELECT_FULL_JOIN 指每秒执行full join的总量.这个参数一般发生在join过程中没有使用索引的情况;
计算公式:
SELECT_FULL_JOIN= Select_full_join( 当前值)- Select_full_join(10秒之前的值)/10
是否保留:不建议保留
去除原因:并不是没有利用索引的join性能就很差.对于不合理的sql.如果带来性能影响.可以打开慢查询根据进行调优.full join可能只是其中一个原因。 一些小表的full join对性能冲击很小。


十五.MYSQL.SELECT_FULL_JOIN_IN_ALL_SELECT
定义:SELECT_FULL_JOIN_IN_ALL_SELECT 指过去10秒钟里面.full join占总select的比例;
计算公式:
S1= select_full_join(当前值)- select_full_join(10秒之前的值)
S2= com_select(当前值)- com_select(10秒之前的值)
SELECT_FULL_JOIN_IN_ALL_SELECT=s1/s2*100%(得出值保留小数点前的值).
是否保留:不建议保留
去除原因:理由同上


十六.MYSQL.CONNECTIONS
定义:CONNECTIONS指自mysql server启动以来一共产生的连接数.这个值不能反映当前连接数.建议用Threads_connected 来衡量;
新的计算方式:CONNECTIONS= Threads_connected (当前值)
是否保留:保留
报警阀值:800
报警类型:大于800 严重.大于1500 灾难


十七.MYSQL.CONNECTION_TIME
定义:从mysql server所在服务器上发送一个简单的查询所需要的时间。
是否保留:不建议保留
去除原因:tcp_average比此参数更具参考价值.因为这个time是朝服务器本身发送请求.而tcp average关注的是应用ip向db server统计出来的时间。


十八.MYSQL.INNODB_ROW_LOCK_CURRENT_WAITS (新增)
定义:INNODB_ROW_LOCK_CURRENT_WAITS.因为公司大部分引擎都是innodb.所以有必要监控innodb行锁的等待情况.状态值反应了过去10秒有几个sql处于等待row lock的状态。
计算公式:INNODB_ROW_LOCK_CURRENT_WAITS= Innodb_row_lock_current_waits(当前值)
是否保留:保留
报警阀值:无
报警类型:无



十九.MYSQL.PROCESS_OF_MYSQLD
定义:process_of_mysqld用来监控mysqld的进程数.如果返回0.表示mysqld进程挂掉。
是否保留:保留
报警阀值:为0则报警
报警类型:灾难


二十.MYSQL.HA_STATUS
定义:ha_status用来监控MHA进程是否存在.如果返回0.表示由于MHA的切换导致MHA自动退出.或者MHA服务没有启动。
是否保留:保留
报警阀值:为0则报警
报警类型:严重




二十一.MYSQL.SLAVE_STATUS
定义:mysql.slave_status用来监控slave的io thread和sql thread.如果任意一个线程的状态为no.则返回0.否则返回1。
是否保留:保留
报警阀值:为0则报警
报警类型: 严重


二十二: MYSQL.TCP_COUNT
定义:利用percona的tcprstat从底层探测平均每秒发送到mysql server的请求数.而不是在mysql server的内部进行统计。
是否保留:不建议保留
去除原因:这个监控的结果和qps的数目一致.重复监控


二十三:MYSQL.TCP_AVG
定义:每秒内发送到mysql server所有请求的平均响应时间.此值大.表明mysql server异常.对请求做出响应的时间过长。单位为微妙。
是否保留:保留
报警阀值:无
报警类型:无


二十四:MYSQL.TCP_MAX
定义:过去一秒内.发送到mysql server所有请求中响应时间最长的请求所花费的时间。单位为微妙。
是否保留:保留
报警阀值:无
报警类型:无


二十一.MYSQL.SLAVE_DELAYS
定义:mysql.slave_delay用来监控slave的sql thread同步master是否有延迟.如果有.返回延迟的秒数.如果没有延迟.返回空
是否保留:保留
报警阀值:1200
报警类型:大于1200 严重.大于3600 灾难

关于"MySQL数据库监控项的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0