开启通用日志(general log)
- vi /etc/my.cnf
- 在[mysqld]部分增加以下内容
general_log=1
general_log_file=/var/log/mysql/mysql.log
- 创建/var/log/mysql/mysql.log文件
- 确保MySQL进程具有写入权限,执行以下命令
sudo touch /var/log/mysql/mysql.log
sudo chown mysql:mysql /var/log/mysql/mysql.log
sudo chmod 644 /var/log/mysql/mysql.log
mysql程序的运行是mysql账号,如果没权限,log内容就是空的。
- 重启服务
systemctl restart mysqld.service
- 上面生成的日志不会自动清理,我们需要实现自动清理功能避免日志文件过大
- 借助系统的crond工具,执行定时清理脚本
- 使用日志轮转工具logrotate,详情看日志轮旋
经过测试,使用logrotate会创建新的日志文件,这会导致mysql无法写入日志,得重启mysql才行,所有还是用crond执行定时清理脚本吧,如有需求可以在清理前,将日志文件拷贝一份出来再清理。
开启错误日志(error log)
在[mysqld]部分增加以下内容并手动创建对应文件
log-error=/var/log/mysql/mysql-error.log
其他步骤跟开启通用日志步骤一样。