解决方案

解决方案

我最近发现我的 general_log 已打开,并且生成了一个 400gb 的日志文件。哎哟……然后我尝试将其关闭。

在运行时我输入了“SET GLOBAL general_log = OFF”,果然,它关闭了。直到下次重新启动 mysql,它才重新打开!

我查看了 my.cnf,发现没有关于 general_log 的任何信息可以将其打开,因此为了安全起见,我在 [mysqld] 标题下添加了 general_log=0。我再次重新启动 mysql,果然,general_log 再次打开了!!!

然后我编辑 /etc/sysconfig/mysqld 并将 --general_log=0 添加到命令行并重新启动 mysql...


>  /etc/init.d/mysqld restart
/etc/sysconfig/mysqld: line 10: --general_log=0: command not found
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

好的,它对此抱怨,但成功了,常规日志终于关闭了!!但这不对……我们不喜欢错误消息,即使它看到了该命令行选项并且使用它很好。

所以,有三个问题……

  1. 为什么 my.cnf 修复不起作用?
  2. 为什么从 mysql 内部关闭它不会让它保持关闭状态
  3. 为什么它需要它抱怨但却接受的命令行选项。

我在 CentOS 5.9 上运行服务器版本:5.5.30-cll

非常感谢您能提供的任何帮助。谷歌搜索无法找到关于这个问题的答案。

答案1

有一个关于此问题的错误报告,据称已打上补丁。但是,有时补丁会应用于未来的次要版本。错误报告声称此问题已在 MySQL 5.5.9 中修复,但您在 MySQL 5.5.30 中仍看到此问题。

我曾经在 DBA StackExchange 中回答了一个问题复制错误补丁跳过了发布。我还回答了另一个问题在使用 init-script 启动时遗漏了 SLEEP 函数。我怀疑那里也遗漏了补丁。

解决方案

不要这样做

[mysqld]
general-log=0

尝试将其注释掉

[mysqld]
#general-log=0

并重新启动 mysql

答案2

关于这个问题:

> I recently discovered that my general_log was turned on and it had generated a 400gb log file
> So, three questions..
>
> why would the my.cnf fix not work?
> why would turning it off from within mysql not keep it off
> why would it require the command line option that it complains about but yet accepts.

在将 MySQL 5.1 升级到 5.6 版本后,我“发现”了这个问题,并被这个问题困扰了数周,等待 MySQL 支持团队和其他论坛的某个人对这种“奇怪”行为(即使按照下面提到的那样做!)的合理解释,但不幸的是没有答案。

诚然,执行“SET GLOBAL general_log = 'OFF';”和“SET GLOBAL slow_query_log = 'OFF';”并不能永久解决这个问题!

然后我自己尝试解决这个问题,修改位于放置 MySQL 数据库的同一文件夹中的 MY.INI 文件中的某些参数,如下所示:

# General and Slow logging.
log-output=FILE
general-log=0                            <--- HERE !
general_log_file="NATCOMP7.log"
slow-query-log=0                         <--- And HERE !
slow_query_log_file="NATCOMP7-slow.log"
long_query_time=10

好吧,这解决了 Windows 环境中的这个“问题”。

高血压

相关内容