我最近发现我的 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 ]
好的,它对此抱怨,但成功了,常规日志终于关闭了!!但这不对……我们不喜欢错误消息,即使它看到了该命令行选项并且使用它很好。
所以,有三个问题……
- 为什么 my.cnf 修复不起作用?
- 为什么从 mysql 内部关闭它不会让它保持关闭状态
- 为什么它需要它抱怨但却接受的命令行选项。
我在 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 环境中的这个“问题”。
高血压