MySQL慢日志?mysql
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10s以上的语句。
默认状况下,MySQL数据库并不启动慢查询日志,须要咱们手动来设置这个参数,固然,若是不是调优须要的话,通常不建议启动该参数,由于开启慢查询日志或多或少会带来必定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。sql
慢日志产生状况?数据库
第一执行时间过长(大于设置的long_query_time阈值);第二未使用索引,或者未使用最优的索引。post
这两种日志默认都是关闭状态,特别是未使用索引的日志,由于这一类的日志可能会有不少,因此还有个特别的开关log_throttle_queries_not_using_indexes用于限制每分钟输出未使用索引的日志数量。性能
慢日志输出日志
MySQL慢查询日志默认状况下都是通通写入一个文件中,文件会愈来愈大,很是不方便咱们分析。利用logrotate来对MySQL慢查询日志、错误日志进行切割,便于分析和查找问题。blog
定义日志论滚策略 索引
[root@IDC_db_40 ~]# cat mysql-log-rotate
/opt/mysql/data/IDC_db_40-slow.log {
create 600 mysql mysql
dateext
notifempty
daily
maxage 60
rotate 30
missingok
compress
olddir /opt/mysql/data/
postrotate
# just if mysqld is really running
if test -x /opt/mysql/bin/mysqladmin && \
/opt/mysql/bin/mysqladmin ping -uroot -p123qwe,./ -S /tmp/mysql.sock &>/dev/null
then
/opt/mysql/bin/mysqladmin flush-logs -uroot -p123qwe,./ -S /tmp/mysql.sock
fi
endscript
}ip
设置计划任务test
59 23 * * * /usr/sbin/logrotate -f mysql-log-rotate
#天天23:59进行日志分割
效果展现
天天都会生成一个压缩包很是方便管理!!!