什么是一般查询日志?GeneralQueryLog(通用查询日志)用于记录所有的用户操作,包括开始和用户的连接开始时间和结束时间,发送到MySQL数据库服务器的所有SQL命令等。当我们的数据出现异常时,检查一般查询日志和还原操作的具体场景可以帮助我们准确定位问题。查看当前状态mysql>SHOWVARIABLESLIKE'%general%';+----------------+--------------------------+|变量名|值|+----------------+--------------------------+|一般日志|关闭||general_log_file|/var/lib/mysql/zhyno1.log|+-------------------+----------------------------+2rowsinset(0.00sec)从general_log可以看到通用查询日志处于关闭状态,从general_log_file可以看到日志目录和文件名。启动日志方法1.修改my.cnf或my.ini配置文件进行设置。在[mysqld]组下添加log选项,重启MySQL服务。格式如下:[mysqld]general_log=ONgeneral_log_file=[path[filename]]#日志文件所在目录的路径,filename为日志文件的名称。如果不指定目录和文件名,一般查询日志默认存放在MySQL数据目录下的hostname中。在日志文件中,hostname代表主机名。方法二SETGLOBALgeneral_log=on;#开启通用查询日志SETGLOBALgeneral_log_file='path/filename';#设置日志文件保存位置,查看日志。一般查询日志以文本文件的形式保存在文件系统中,可以通过文本编辑直接打开日志文件。一般的查询日志内容对于每个MySQL服务器都是不同的。在Windows操作系统中,使用文本文件查看器;在linux系统下,可以使用vi工具或者gedit工具查看;在MacOSX系统中,可以使用文本文件查看器或vi工具来查看。[root@zhyno1mysql]#catzhyno1.log/usr/sbin/mysqld,版本:8.0.25-16(GreatSQL(GPL),第16版,修订版8bb0e5af297)。开始于:Tcp端口:3306Unix套接字:/var/lib/mysql/mysql.sockTimeId命令参数Argument2022-11-24T10:07:31.300579Z4398QuerySHOWVARIABLESLIKE'%general%'2022-11-24T10:07:42.344537Z4398QuerySETGLOBALgeneral_log=OFF可以看到,清楚的记录了客户端的所有行为。停止日志修改my.cnf或my.ini文件,将[mysqld]组下的general_log值设置为OFF或注释掉general_log项。修改保存后重启MySQL服务生效。[mysqld]general_log=OFF或SETGLOBALgeneral_log=off;删除\刷新日志如果数据使用非常频繁,一般的查询日志会占用服务器大量的磁盘空间。数据管理员可以删除很久以前的查询日志,以保证MySQL服务器的硬盘空间。在MySQL中,您可以使用mysqladmin命令启用新的通用查询日志。新的通用查询日志会直接覆盖旧的查询日志,不需要手动删除。mysqladmin命令的语法如下:mysqladmin-uroot-pflush-logs需要注意的是,如果要备份旧的通用查询日志,必须先复制或重命名旧的日志文件。然后,执行mysqladmin命令。除了上述方法外,您还可以手动删除通用查询日志。删除后需要重启MySQL服务。重启后会生成新的通用查询日志。如果要备份旧的日志文件,可以重命名旧的日志文件并重启MySQL服务。参考文章《MySQL是怎样运行的--从根儿上理解MySQL》—孩子4919(https://img.ydisp.cn/news/20230201/4voit25sqg4
