这涉及在Windows Server 2016上运行的MySQL 5.7。
我正在使用MySql中的TRUNCATE语句来减小大型日志文件(名为"mySite.log"(的大小,该文件位于:
ProgramData/MySQL/MySQL Server 5.7/Data/
我研究并实施了以下内容:
mysql> SET GLOBAL general_log=OFF;
这是成功的。
但是,我试图确定我在上述目录中看到的大型日志文件实际上是常规查询日志文件。 它将数据库的名称作为文件名("MySite.log"(的前缀,就像同一目录中的其他文件(.bin 和 .err、.pid(一样。 这个大日志文件实际上是general_log文件吗? (如果使用MySQL工作台,日志文件和存储位置的命名将在哪里设置? 我似乎找不到它。 以下语法是否会截断日志文件?
mysql> TRUNCATE TABLE mysql.general_log;
- 即使日志存储在文件中而不是数据库表中,是否会使用"TRUNCATE TABLE"?
- 是否需要将"mysql.general_log"重命名为"myDatabase.mysite"以匹配我的"MySite.log"文件的名称?
感谢您的任何线索。
一些有趣的手动条目可以阅读:
- 5.4.1 选择常规查询和慢查询日志输出目标
- 5.4.3 常规查询日志
您可以检查服务器是如何配置的
SHOW GLOBAL VARIABLES LIKE '%log%';
然后寻找log-output
的值。这将显示您是登录到FILE
、TABLE
还是两者。
当它FILE
时,检查general_log_file
的值。这是日志文件在文件系统中的位置。您可以简单地删除它,然后创建一个新文件(以防您想再次启用general_log(。然后执行FLUSH LOGS;
。
当它TABLE
时,你的TRUNCATE TABLE mysql.general_log;
陈述是正确的。
关于您的第二个问题,永远不要弄乱 mysql 架构中的表。只是不要(如果你不知道你在做什么(。我也不知道你是怎么想到的。