mysql慢日志,设置每天生成一个新慢日志文件!

临时开启慢日志查询,重启之后会恢复原来默认值
show variables like 'slow_query%';   #查看慢日志是否开启,和记录慢日志文件位置
set global slow_query_log=ON;   #开启慢日志
show variables like 'long_query_time';   #查看慢日志设置秒数,默认10s
set global long_query_time=5;  #设置默认秒数
select sleep(12);  #测试是否记录慢日志
SHOW GLOBAL STATUS LIKE  '%Slow_queries%'; #通过MySQL命令查看有多少慢查询
image.png

image.png

配置文件开启慢日志查询

#开启慢日志
slow_query_log=ON 
#慢日志文件位置
slow_query_log_file="slow_query.log"
#慢日志设置默认秒数
long_query_time=5
mysql慢日志,设置每天生成一个新慢日志文件!_第1张图片
image.png
mysql慢日志,设置每天生成一个新慢日志文件!_第2张图片
image.png

mysql慢日志,设置每天生成一个新慢日志文件!_第3张图片
image.png

mysql慢日志每天生成新文件存储慢日志:

每天1点钟执行脚本生成新的慢日志文件,并做记录日志;
[root@paijinhua ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed 
0 1 * * * root /bin/bash /usr/local/mysql/data/slowlog.sh >> /home/wwwroot/paijinhua/crontab.log 2>&1



slowlog.sh内容如下:
#!bin/bash
#Y年2019;y年19
#-p和数据库密码之间没有空格
datetime=`/bin/date +'%Y%m%d'`
echo  " set global slow_query_log_file='/usr/local/mysql/data/slow-$datetime.log'; " | mysql  -u root -pPASSWORD

slowlog.sh监听执行日志如下:
1.第一个问题是crontab下没加/bin/bash
2.第二个问题是slowlog.sh-p和mysql数据库密码之间多了个空格
3.第三个是提示说在命令行界面上使用数据库密码可能不安全,但日志已经创建成功了。
mysql慢日志,设置每天生成一个新慢日志文件!_第4张图片
image.png
mysql慢日志,设置每天生成一个新慢日志文件!_第5张图片
image.png
在navicat里执行了select sleep(10);语句,慢日志记录如下:
/usr/local/mysql/bin/mysqld, Version: 5.6.40-log (Source distribution). started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
# Time: 191015 13:15:01
# User@Host: root[root] @ localhost [127.0.0.1]  Id: 2151979
# Query_time: 10.000724  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
use pjh;
SET timestamp=1571116501;
select sleep(10);


这样每天都生成一个新的日志文件,旧的慢日志文件就可以删除或者处理了。

你可能感兴趣的:(mysql慢日志,设置每天生成一个新慢日志文件!)