尽管我有权限,但在 MySQL 上使用刷新日志似乎不起作用?

尽管我有权限,但在 MySQL 上使用刷新日志似乎不起作用?

一些信息:

select current_user: 
[email protected]

show grants for current_user(): 
'GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY PASSWORD 'omitted'

Service string:
"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" MySQL

基本上,我没有看到任何新文件。两个文件(.log 和 server_name.log)继续增长,并且没有出现 *-old 的情况。

我究竟做错了什么?

答案1

MySQL 中的 FLUSH LOGS 仅影响二进制日志。

根据 MySQL 文档的摘录

关闭并重新打开所有日志文件。如果启用了二进制日志记录,二进制日志文件的序列号将相对于前一个文件增加 1。在 Unix 上,这与向 mysqld 服务器发送 SIGHUP 信号相同(某些 Mac OS X 10.3 版本除外,在这些版本中 mysqld 会忽略 SIGHUP 和 SIGQUIT)。

如果你执行 FLUSH LOGS 并且 mysqld 正在将错误日志写入文件(例如,如果它是使用 --log-error 选项启动的),则会按照第 5.2.1 节“错误日志”中的描述进行日志文件重命名。

恕我直言,作为过去 7 年的 MySQL DBA,我个人从未见过这种在错误日志上的工作,而只见过二进制日志。

在有关 MySQL 5.5 的最新 MySQL 文档中

如果你使用 FLUSH LOGS 或 mysqladmin flush-logs 刷新日志,并且 mysqld 正在将错误日志写入文件(例如,如果它是使用 --log-error 选项启动的),则效果取决于版本:

从 MySQL 5.5.7 开始,服务器会关闭并重新打开日志文件。要重命名文件,您可以在刷新之前手动执行此操作。然后刷新日志会重新打开一个具有原始文件名的新文件。例如,您可以使用以下命令重命名文件并创建一个新文件:

shell> mv host_name.err host_name.err-old
shell> mysqladmin flush-logs
shell> mv host_name.err-old backup-directory

在 Windows 上,使用 rename 而不是 mv。

在 MySQL 5.5.7 之前,服务器会使用后缀 -old 重命名当前日志文件,然后创建一个新的空日志文件。请注意,第二次日志刷新操作会导致原始错误日志文件丢失,除非您将其保存为其他名称。在 Windows 上,当服务器在 MySQL 5.5.7 之前打开错误日志时,您无法重命名错误日志。为避免重新启动,请先刷新日志以使服务器重命名原始文件并创建一个新文件,然后保存重命名的文件。这也适用于 Unix,或者您可以使用前面显示的命令。

如果服务器没有写入命名文件,则在任何情况下刷新日志时都不会发生错误日志重命名。

我再重复一遍,我个人从未见过这种在错误日志上的工作,而只见过在二进制日志上的工作。

我雇主的客户有这个 bash 脚本。

相关内容