|
作者:galaxystar
监控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://galaxystar.javaeye.com/blog/239882
|
|