mysql 日志

本文介绍了MySQL在Windows和Linux环境下各种日志的配置方法,包括错误日志、查询日志、更新日志、二进制日志及慢查询日志等,并详细解释了如何通过配置参数控制这些日志的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实际一点:

先以window为环境:

window下的日志
日志文件类型概述:
1.
错误日志 记录启动、运行或停止mysqld时出现的问题。
My.ini配置信息:
#Enter a name for the error log file. Otherwise a default name will be used.
#log-error=d:/mysql_log_err.txt
2.
查询日志 记录建立的客户端连接和执行的语句。
My.ini配置信息:
#Enter a name for the query log file. Otherwise a default name will be used.
#log=d:/mysql_log.txt
3.
更新日志 记录更改数据的语句。不赞成使用该日志。
My.ini配置信息:
#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=d:/mysql_log_update.txt
4.
二进制日志 记录所有更改数据的语句。还用于复制。
My.ini配置信息:
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin=d:/mysql_log_bin
5.
慢日志 记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。
My.ini配置信息:
#Enter a name for the slow query log file. Otherwise a default name will be used.
#long_query_time =1
#log-slow-queries= d:/mysql_log_slow.txt



Linux下的配置

代码
在linux下:
Sql代码

1. # 在[mysqld] 中輸入
2. #log
3. log-error=/usr/local/mysql/log/error.log
4. log=/usr/local/mysql/log/mysql.log
5. long_query_time=2
6. log-slow-queries= /usr/local/mysql/log/slowquery.log

# 在[mysqld] 中輸入 #log log-error=/usr/local/mysql/log/error.log log=/usr/local/mysql/log/mysql.log long_query_time=2 log-slow-queries= /usr/local/mysql/log/slowquery.log


windows下:
Sql代码

1. # 在[mysqld] 中輸入
2. #log
3. log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"
4. log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
5. long_query_time=2
6. log-slow-queries= "E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"

# 在[mysqld] 中輸入 #log log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log" log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log" long_query_time=2 log-slow-queries= "E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"


开启慢查询
long_query_time =2 --是指执行超过多久的sql会被log下来,这里是2秒
log-slow-queries= /usr/local/mysql/log/slowquery.log --将查询返回较慢的语句进行记录

log-queries-not-using-indexes = nouseindex.log --就是字面意思,log下来没有使用索引的query

log=mylog.log --对所有执行语句进行记录



日志的存放:默认情况下,当开启时,所有的日志都存放在DataDir目录下. 如果没有指定名称的话,它会以后主机名为名称. 如主机名为songcomputer,则相关就的日志为songcomputer.log文件.


Mysql日志的关闭与开启:
使用以下命令查看是否启用了日志
mysql>show variables like 'log_%’;


凡Value值为OFF的表示未开启服务,若要开启只需要将上的my.ini配置信息写入(my.ini为mysql安装目录下),然后去掉前面的“#”
号,再重启mysql服务。OK,现在会看到指定的日志文件已创建。相反地,若要停止mysql日志服务,只需要将my.ini中对应的配置信息去掉即
可。


>>>>相应的使用慢日志查询

手动的去读取慢日志以及修改慢日志的时间

show variables like 'long%'
会得到慢日志的时间

进行设置慢日志的值
set long_query_time =2;




侧重的二进制文件

二进制日志:

从概述中我可以看到my.ini配置信息的log-bin没有指定文件扩展名,这是因为即使你指定上扩展名它也不使用。当mysql创建二进制日志文件
时,首先创建一个以“mysql_log_bin”为名称,以“.index”为后缀的文件;再创建一个以“mysql_log_bin”为名称,以
“.000001”为后缀的文件。当mysql服务重新启动一次以“.000001”为后缀的文件会增加一个,并且后缀名加1递增;如果日志长度超过了
max_binlog_size的上限(默认是1G)也会创建一个新的日志文件;使用flush
logs(mysql命令符)或者执行mysqladmin –u –p flush-logs(windows命令提示符)也会创建一个新的日志文件。
既然写入的都是二进制数据,用记事本打开文件是看不到正常数据的,那怎么查看呢?
使用BIN目录下mysqlbinlog命令,如:
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000001
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000002
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000003
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000004
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000005
使用SQL语句也可查看mysql创建的二进制的文件目录:

Mysql> show master logs;

查看当前二进制文件状态:

mysql> show master status;

至于准确的看懂日志文件,还需要读者仔细阅读,深深体会,这里就不再奥述了!
### 配置和查看 MySQL 日志文件 #### 一、配置 MySQL 日志输出方式 为了控制日志记录的位置,可以通过设置`log_output`参数来决定是将日志存储于文件还是表格内。当设定为`FILE`时,默认会把日志保存成物理文件形式;而如果指定为`TABLE`,则意味着慢查询等类型的日志会被录入至特定的数据表中,比如`mysql.general_log`或是`mysql.slow_log`[^2]。 ```sql SET GLOBAL log_output = 'TABLE'; -- 或者 SET GLOBAL log_output = 'FILE'; ``` #### 二、启用不同种类的日志功能 对于想要开启诸如错误日志(Error Log),通用查询日志(General Query Log), 慢查询日志(Slow Query Log)等功能来说,在my.cnf(my.ini Windows环境下)这样的全局配置文档里添加相应的指令即可实现目的。例如要激活慢查询日志并定义其阈值时间: ```ini slow_query_log=ON long_query_time=2 ``` 上述配置使得超过两秒未完成的操作才会被视作“缓慢”,进而触发记录过程。 #### 三、定位及读取日志数据 一旦完成了必要的前期准备工作之后,就可以着手去访问这些宝贵的诊断资料了。如果是基于文件系统的日志,则可以直接利用Linux自带工具如cat,tail,follow等方式实时监控最新动态变化情况: ```bash tail -f /path/to/mysql/error.log ``` 而对于那些已经转化为关系型结构体存在的历史档案而言,借助SQL语句同样可以轻松获取所需信息片段: ```sql SELECT * FROM mysql.slow_log WHERE start_time >= NOW() - INTERVAL 1 DAY; ``` 此命令能够筛选出过去一天内的所有低效请求实例。 #### 四、管理日志文件大小 考虑到长期积累下来可能会占用过多磁盘空间资源的问题,适时清理不再需要的历史版本就显得尤为重要。针对Binlog这类特殊的复制机制专属产物,可通过如下操作达到瘦身效果——即移除编号低于某个给定数值之前的全部条目集合[^3]: ```sql PURGE BINARY LOGS TO 'mysql-bin.000003'; ``` 另外一种更为激进的做法就是直接重置整个序列号计数器回到起点位置: ```sql RESET MASTER; ``` 这将会使所有的旧有变更记录彻底消失不见,只保留当前时刻作为新的起始点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值