??日志是MySQL数据库的重要组成部分,日志文件记录了MySQL数据库的日常操作和错误信息,可以通过分析这些日志文件了解MySQL数据库的运行情况。
??MySQL数据库常见的日志文件包括错误日志、二进制日志、慢查询日志、通用查询日志四种。
日志文件类型 | 说明 |
---|---|
错误日志 | 记录服务器启动、关闭、运行错误及时间调度器运行事件的信息等 |
二进制日志 | 以二进制文件 的形式记录数据库中的操作,但不记录查询语句 |
慢查询日志 | 记录执行时间超过指定时间的操作 |
通用查询日志 | 记录用户所有的操作信息 |
??在默认情况下,错误日志功能是默认开启的,且不能禁止。但可以通过修改my.ini
文件来修改错误日志功能的配置。
# 修改错误日志文件的存放位置
log-error=file_name
# 标识警告信息是否一并记录到错误日志中
log-warnings=int_num
在默认情况下,错误日志文件存放在安装路径的data
目录下,文件名为hostname.err
。
log-error
可以修改错误日志文件的存放位置。log-warnings
的具体值如下所示:int_num | 说明 |
---|---|
0 | 不记录警告信息 |
1 | 记录警告信息到日志文件中,mysql-5.5版本默认值为1 |
大于1 | "失败的连接"的信息和创建新连接时"拒绝访问"类的错误信息也会被记录到错误日志中,mysql-5.7版本默认值为2 |
用于错误日志文件是文本文件,可以直接打开文件进行查看,文件路径可以通过下面命令获取:
-- 查看log-error: 下面两种方法都可
show variables like ‘log_error‘;
select @@log_error;
-- 查看log-warnings: 下面两种方法都可
show variables like ‘log_warnings‘;
select @@log_warnings;
运行下面命令后,数据库系统会自动常见一个新的错误日志文件,并把旧的文件改名为hostname.err-old
。
mysqladmin -u root -p flush-logs
??二进制日志也叫变更日志(update log),用来记录所有用户对数据库的操作,若长时间开启,文件会占用较大的磁盘凯南。但当数据库发生故障时,可以通过此文件查看一段时间内用户所作的操作,结合数据库备份技术,即可在线用户的操作,使数据库恢复。
-- 查看二进制日志功能是否启用
show variables like ‘log_bin‘;
-- 查看二进制日志文件列表
show binary logs;
-- 查看当前使用的二进制日志文件
show master status;
开启二进制日志功能同样是修改安装路径下的my.ini
文件,之后重启mysql服务器即可。
# 在[mysqld]下添加
server-id=1
log-bin[=dir_name\[filename]]
其中,dir_name
表示二进制文件的存放路径,默认存放在安装路径的data
目录下;filename
表示二进制文件的文件名,默认值为hostname-bin.number
,number的形式为000001、000002等。
filename.number
这类文件和filename.index
文件,后者存储所有二进制日志文件的清单。特别注意:二进制日志文件最好不要与数据库的数据文件存放在同个硬盘上。
查看二进制日志文件需要在cmd命令行下,且需要将切换到存放二进制日志文件所在的目录下,因为mysqlbinlog
将在当前目录下查找指定的二进制日志文件。
mysqlbinlog filename.number
删除二进制日志文件需要登录mysql服务器后进行操作。
执行完下面语句后,会删除所有的文件,并创建新的二进制日志文件,number重置为00001。
reset master;
执行完下面语句后,会删除编号小于number的所有文件。
purge master logs to ‘filename.number‘;
执行完下面语句后,会删除在指定时间之前的所有文件。
purge master logs before ‘yyyy-mm-dd hh:mm:ss‘;
关闭和开启的方法刚好相反,将my.ini
文件中新增的两行代码删除,然后重启mysql服务器即可。
mysqlbinlog filename.number | mysql -u root -p
my.ini
文件在此之前需要退出mysql重新登录>>>
直接删除my.ini
文件中刚刚添加的两行代码,重启服务器即可。
慢查询日志会记录所有执行时间超过指定时间或未使用索引的语句。
show variables like ‘slow_%‘;
开启慢查询日志功能同样是修改安装路径下的my.ini
文件,之后重启mysql服务器即可。
# 在[mysqld]下添加
# 开启慢查询日志功能
slow_query_log=on
# 设置慢查询日志文件路径
slow_query_log_file[=dir_name\[filename]]
# 设置最大执行时间
long_query_time[=num]
其中,dir_name
表示慢查询文件的存放路径,默认存放在安装路径的data
目录下;filename
表示慢查询文件的文件名,默认值为hostname-slow.log
;long_query_time
单位为秒,默认值为10秒。
-- 开启或关闭慢查询日志
set global slow_query_log=on/off;
-- 设置最长执行时间
set global long_query_time=num;
用于慢查询日志文件是文本文件,可以直接打开文件进行查看。
执行下面语句之后,会删除原来的慢查询日志文件并新建新的日志文件。
mysqladmin -u root -p flush-logs
手动删除日志文件后,重启mysql服务器即可。
通用查询日志记录了用户所有的操作。
show variables like ‘general%‘;
开启通用查询日志功能同样是修改安装路径下的my.ini
文件,之后重启mysql服务器即可。
# 在[mysqld]下添加
# 开启通用查询日志功能
general_log=1
# 设置通用查询日志文件路径
general_log_file[=dir_name\[filename]]
其中,dir_name
表示慢查询文件的存放路径,默认存放在安装路径的data
目录下;filename
表示慢查询文件的文件名,默认值为hostname.log
。
用于通用查询日志文件是文本文件,可以直接打开文件进行查看。
执行下面语句之后,会删除原来的慢查询日志文件并新建新的日志文件。
mysqladmin -u root -p flush-logs
手动删除日志文件后,重启mysql服务器即可。
用于mysqladmin -u root -p flush-logs
是删除错误日志、慢查询日志、通用查询日志的命令,若只删除一个时,其他需要做好备份,以免错删。
原文:https://www.cnblogs.com/bpf-1024/p/14147570.html