问题已解决,但我正在写下来以备将来参考。
/root/.my.cnf
[mysqladmin]
user = root
password = pa$$w0rd
/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
}
logrotate
从命令行运行时工作正常:
# logrotate -v -f /etc/logrotate.d/mysql
但在凌晨 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
在 中
postrotate
,我将 stderr 和 stdout 都重定向到日志文件以查看发生了什么:我得到的是:
听起来好像在 logrotate 期间
mysqladmin
没有读取。/root/.my.cnf
所以,试试这个:
资源:
我有一个类似的问题。
添加后我没有重启MySQL
/root/.my.cnf
,所以没有运行postrotate flush命令。一旦我重新启动 MySQL,它就会读取根 my.cnf 文件并按预期工作。
在我的例子中,块
/etc/logrotate.d/mysql
看起来有点不同:请注意注释:“如果失败,请检查 debian.conf!” 和具有参数的命令
--defaults-file=/etc/mysql/debian.cnf
。该文件具有完全相同的[client]
部分,root
用空密码定义用户。很明显,在该文件中使用的相同密码/root/.my.cnf
也必须放在该文件中。安全方面,/etc/mysql/debian.cnf
类似于/root/.my.cnf
: 拥有root:root
,并更改为0600
。所以,在我的例子中,用户存在权限问题
debian-sys-maint
,因为galera-cluster
每个节点上的完整性都相同,尽管每个节点都由 debian 用户单独安装,配置文件是/etc/mysql/debian.cnf
所以在
logrotate
文件中是:解决方法很简单,只需
debian-sys-maint
在一个节点上更改用户密码,并在每个节点上的 '/etc/mysql/debian.cnf' 文件中设置密码我希望它有用,就像我的一样。
就我而言。我需要设置
--defaults-file="/root/.my.cnf"
为/root/.my.cnf
in/usr/local/mysql/bin/mysqladmin --defaults-file="/root/.my.cnf" ping
and/usr/local/mysql/bin/mysqladmin --defaults-file="/root/.my.cnf" flush-logs
/etc/logrotate.d/mysql
我
/root/.my.cnf
有-rw------- 1 root root 43 Mar 21 20:51 .my.cnf