问题解决了,但我写下来以备将来参考。
/root/.my.cnf
[mysqladmin]
user = root
password = pa$$w0rd
Run Code Online (Sandbox Code Playgroud)
/etc/logrotate.d/mysql
/var/log/mysql-slow.log /var/log/mysqld.log {
daily
rotate 7
dateext
compress
missingok
#notifempty
sharedscripts
create 644 mysql mysql
postrotate
/usr/bin/mysqladmin flush-logs
endscript
}
Run Code Online (Sandbox Code Playgroud)
logrotate
从命令行运行时工作正常:
# logrotate -v -f /etc/logrotate.d/mysql
Run Code Online (Sandbox Code Playgroud)
但是在凌晨 4 点从 cron 运行时它不起作用日志文件已旋转但 MySQL 不会将错误记录到新创建的文件中:
-rw-r--r-- 1 mysql mysql 0 Aug 7 10:13 /var/log/mysqld.log
-rw-r--r-- 1 mysql mysql 20 Aug 4 04:04 /var/log/mysqld.log-20120804.gz
-rw-r--r-- 1 mysql mysql 20 Aug 5 04:04 /var/log/mysqld.log-20120805.gz
-rw-r--r-- 1 mysql mysql 20 Aug 6 16:28 /var/log/mysqld.log-20120806.gz
Run Code Online (Sandbox Code Playgroud)
qua*_*nta 12
在 中postrotate
,我将 stderr 和 stdout 都重定向到日志文件以查看会发生什么:
postrotate
/usr/bin/mysqladmin flush-logs > /var/log/mysqladmin.flush-logs 2>&1
endscript
Run Code Online (Sandbox Code Playgroud)
我得到的是:
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
Run Code Online (Sandbox Code Playgroud)
听起来好像在 logrotate 期间mysqladmin
没有读取/root/.my.cnf
。
所以,试试这个:
postrotate
env HOME=/root/ /usr/bin/mysqladmin flush-logs > /var/log/mysqladmin.flush-logs 2>&1
endscript
Run Code Online (Sandbox Code Playgroud)
来源:
归档时间: |
|
查看次数: |
13879 次 |
最近记录: |