mysql - 如何将访问日志文件清零?

mysql - 如何将访问日志文件清零?

我有一个 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

参考:MySQL :: MySQL 5.0 参考手册 :: 5.2.5 服务器日志维护

答案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

}

相关内容