监控mysql的服务器状态

监控mysql状态,有两种方式:
1, 进入mysql服务器, 执行 show status 命令查看mysql当前运行的状态.
2, 使用 mysqlreport 工具, 更条理化地查看mysql状态, 基于 show status.

第一种方式,是mysql原生支持的.使用起来比较方便.
缺点是, 数据零散, 没有百分比和统计, 难理解, 可读性差.

第二种方式, 相对来说就好很多.本身就是个报表, 统计数据看起来比较舒服.
这里也着重讨论mysqlreport.

一篇介绍 mysqlreport 工具使用相关的中文教程.
http://www.phpv.net/html/1566.html

mysqlreport实用功能:
1, 通过 show status 格式的文件, 直接导出报表.
mysqlreport支持导入历史的 show status 数据文件来生成报表, 但前提是, 之前你已经用将 show status 打印出来的数据导出到文件里.
mysqlreport –user root –password –infile filename

2, 直接将报表输出到文件里.
mysqlreport –user root –password –outfile filename

3, 周期生成报表.
mysqlreport –user root –password –relative 60 –report-count 100 -detach –outfile reportfile
间隔60秒生成一次报表,并写入 reportfile 文件, 一共生成100次.
文件里会列出报表的执行次序和时间.

4, 指定要输出哪些内容的报表.
包括 dtq, dms, sas, qcache, tab, innodb 等.不过默认不设置, 是all.

报表内容的解释:
官方原文在这里: http://hackmysql.com/mysqlreportguide
一篇台湾作者汉化的文章: http://forum.slime.com.tw/thread208416.html

下面是我比较关注的一些参数(使用innodb, 所以 key buffer, table locks等无关):
uptime, 服务器负载, 当然这里的统计是否跟直接敲 uptime 一样准确, 有待考证.

Questions, 关注 DMS, slow 就够了, 特别是DMS里每秒处理的sql次数, 应该在压力测试时, 把这个值压上去.
然后在线上可以对比这个值. slow 呢就是慢查询的次数.越少越好了, 不过这个可以通过 mysqlsla 工具来特别针对slow log进行监控, 调优.

Select and sort, 这里着重关注 scan 和 full join , 监控走全表扫描的sql次数, 另外配合 slow log 可以方便地调优一些较慢的sql.

Query cache , 走缓存的比率Hits,越高越好.

Threads 里的 hits , 如果命中率很低,那么每次查询都需要新建线程, 考虑加大线程缓存thread_cache_size.

Connections, 数据库连接占用情况, 这个不用说, 依据实际情况.

innodb需要关注的点详见: http://kenwublog.com/explain-innodb-in-mysqlreport

作者:Ken Wu 原文链接:http://kenwublog.com/monitor-mysql-server-status

2008/09/07 | Posted in Others
No comments yet.

Leave a comment

Attention: Java syntax highlighting is enable. For example: <pre lang="java"> class A {} </pre>