若谷学院
互联网公司技术架构分享

4.MySQL查询监测/慢查询监控

互联网网站的优化,重点工作都是IO的优化。IO优化主要的场景是做数据库的优化。

比如对WordPress性能优化的时候,重点是减少对数据库的访问。 实际上数据库的访问有没有发生,有哪些请求是响应慢的。 如何了解呢? 我们可以通过开启MySQL的General Log来记录所有的查询日志(但不建议长时间开启,在测试期间开启即可)。 同时可以打开慢查询的日志记录。

1.启用慢查询日志记录 (建议生产环境开启)

vim /etc/mysql/mariadb.conf.d/50-server.cnf
或者 vim /etc/mysql/my.cnf
 
slow_query_log=1
log-queries-not-using-indexes
long_query_time=1
log-slow-queries=/data/log/mysql/log-slow-queries.log
 
超过1s的都认为是慢查询。 开启慢查询以后,可以在慢查询日志文件中查看运行慢的SQL,
$ tail -f /data/log/mysql/log-slow-queries.log
 

2.开启MySQL General Log,监测所有SQL请求(生产环境不建议开启)

root登陆
$ mysql -u root -p
 
 #先查看当前状态
mysql> show variables like ‘general%’;
+——————+——————————–+
| Variable_name    | Value                          |
+——————+——————————–+
| general_log      | OFF                            |
| general_log_file | /data/mysql/data/localhost.log |
+——————+——————————–+
 
#设置存放路径
set global general_log_file=/data/log/mysql_general_log.log;
 
#设置开启general log, 1开启(0关闭),即时生效,不用重启MySQL
set global general_log=1;
 
如果提示说:
ERROR 1231 (42000): Variable ‘general_log_file’ can’t be set to the value of ‘/data/log/mysql_general_log.log’
 
说明mysql用户对文件没有权限。 改成这个路径:
chown -R mysql:mysql /data/log/mysql
mysql> set global general_log_file=”/data/log/mysql/mysql_general_log.log”;
 
查看是否有发到数据库的SQL请求
tail -f /data/log/mysql/mysql_general_log.log

 

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

全球互联网技术架构,前沿架构参考

联系我们博客/网站内容提交