Truncate中的MySql通用查询日志文件名

标签 mysql logging truncate

这涉及在 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 Workbench,日志文件的命名和存储位置在哪里设置?我似乎找不到。) 以下语法会截断日志文件吗?

mysql> TRUNCATE TABLE mysql.general_log;
  1. 即使日志存储在文件而不是数据库表中,也会使用“TRUNCATE TABLE”吗?
  2. 是否需要将“mysql.general_log”重命名为“myDatabase.mysite”以匹配上面的“MySite.log”文件的名称?

感谢您提供任何线索。

最佳答案

一些有趣的手册条目可供阅读:

您可以检查服务器的配置方式

SHOW GLOBAL VARIABLES LIKE '%log%';

然后查找log-output的值。这显示您是否记录到 FILETABLE 或两者。

当它是FILE时,检查general_log_file的值。这是日志文件在文件系统中的位置。您可以简单地删除它,然后创建一个新文件(以防您想再次启用general_log)。然后执行FLUSH LOGS;

当它是TABLE时,那么您的TRUNCATE TABLE mysql.general_log;语句是正确的。

关于你的第二个问题,永远不要弄乱 mysql 模式中的表。只是不要(如果你不知道自己在做什么)。而且我什至不明白你是怎么产生这个想法的。

关于Truncate中的MySql通用查询日志文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52262482/

相关文章:

docker - 警告 : no logs are available with the 'none' log driver

node.js - Electron 应用程序 - 在生产中记录到文件

MySQL配置,允许在引用表为空时执行truncate

mysql - 加快 rails 查询速度

logging - 从 joinPoint 获取行号

mysql - 从特定 div 的 sql 数据库更改 css 背景

c# - 如何在 C# 中实现健壮的截断方法?

json - 如何舍入、地板、天花板、截断

mysql - SQL 没有返回列值为 NULL 的行

python - MySQL python 设置错误