我有一个 MySQL 5.5 服务(RHEL 5.x),其中包含约 350Gb 的访问日志文件。我想将此文件清零。我需要事先做点什么吗?停止服务器?
答案1
首先重命名日志文件,然后发出命令FLUSH LOGS
让 MySQL 关闭并重新打开该文件。由于该文件不存在,它会创建一个新文件。
然后对原始文件进行任何您想做的事情。
无需重新启动。
答案2
shell> cd mysql-data-directory
shell> mv mysql.log mysql.old
shell> mv mysql-slow.log mysql-slow.old
shell> mysqladmin flush-logs
答案3
MySQL 中的访问日志是什么?您指的是 general_log 吗?无论如何,使用 logrotate 旋转任何 MySQL 日志。这是示例配置。更改日志文件名。
/root/.my.cnf 必须存储用户和密码才能连接到 MySQL
# cat /etc/logrotate.d/mysql
/var/lib/mysql/mysql-error.log /var/lib/mysql/general.log {
compress
rotate 7
size 1G
missingok
create 640 mysql mysql
notifempty
dateext
sharedscripts
postrotate
test -x /usr/bin/mysqladmin || exit 0
MYADMIN="/usr/bin/mysqladmin --defaults-file=/root/.my.cnf"
if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
if ps cax | grep -q mysqld; then
exit 1
fi
else
$MYADMIN flush-logs
fi
endscript
}