日志是MySQL数据库的重要组成部分,日志文件中记录着MySQL数据库运行期间发生的变化。MySQL有不同类型的日志文件,包括错误日志、通用查询日志、二进制日志以及慢查询日志等。对于管理工作而言,这些日志文件是不可缺少的。
一、日志概述
MySQL日志主要分为四类。
- 错误日志:记录服务的启动、运行或停止MySQL服务时出现的问题。
- 查询日志:记录建立的客户端连接和执行的语句。
- 二进制日志:记录所有更改数据的语句,可以用于数据复制。
- 慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询。
在默认情况下,所有日志创建于MySQL数据目录中。通过刷新日志,可以强制MySQL关闭和重新打开日志文件。当执行一个FLUSH LOGS
语句或执行mysqladmin flush-logs
或mysqladmin refresh
时,将刷新日志。
如果正在使用MySQL复制功能,在复制服务器上可以维护更多日志文件,这种日志称为接替日志。
启动日志功能会降低MySQL数据库的性能。同时,日志会占用大量的磁盘空间。
二、错误日志
错误日志记录着MySQL服务器的启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况的相关信息、事件调试器运行一个事件时产生的信息、从服务器上启动服务器进程时产生的信息等。
1. 启动
在默认状态下错误日志功能是开启的,并且不能被禁止。错误日志信息也可以通过修改my.ini文件自行配置。它所记录的信息是通过log-error和log-warnings来定义的。其中log-error定义是否启用错误日志的功能和错误日志的存储位置,log-warnings定义是否将警告信息也定义到错误日志中。
–log-error=[file-name]是用来指定错误日志存放的位置。如果没有指定,则默认hostname.err作为文件名,默认存放在DATADIR目录中。
2. 查看
错误日志是以文本文件形式存储的,可以直接使用普通文本工具打开查看。
通过show命令可以查看错误日志文件所在目录及文件名信息:
mysql> show variables like 'log_error';
3. 删除
管理员可以删除很久之前的错误日志以释放磁盘空间。
可以使用mysqladmin和flush logs来开启新的错误日志。
> mysqladmin -u username -p flush-logs
# 或
mysql> flush logs
三、二进制日志
二进制日志文件用来记录所有用户对数据库的操作。当数据库发生意外时,可以通过此文件查看在一段时间内用户所做的操作,结合数据库备份技术,即可再现用户操作,使数据库恢复。
1. 启动
二进制日志记录了所有对数据库数据的修改操作,开启二进制日志可以实现以下功能:
- 恢复(recovery):某些数据的恢复需要二进制日志。
- 复制(replication):其原理与恢复类似,通过复制和执行二进制日志使一台远程的MySQL数据库(一般称为slave或standby)与另一台MySQL数据库(一般称为master或primary)进行实时同步。
- 审计(audit):用户可以通过二进制日志中的信息来进行审计。
[mysqld]
log-bin [=path/ [filename] ]
expire_logs_days = 10
max_binlog_size = 100M
2. 查看
# 查看二进制日志是否开启
mysql> show variables like 'log_bin';
# 查看二进制日志的上限值
mysql> show variables like 'max_binlog_size';
# 查看二进制日志文件
mysql> show binary logs;
# 查看二进制日志文件的具体信息
mysql> show binlog events in filename\G
3. 删除
开启二进制日志会对数据库整体性能有所影响,但性能损失十分有限。MySQL的二进制文件可以配置自动删除,同时MySQL也提供了安全的手工删除方法,即reset master;使用purge master logs语句删除部分二进制日志文件。
# 删除所有日志
mysql> reset master;
# 删除指定编号前的日志
mysql> purge master logs to 'filename.****';
# 删除指定日期前的日志
mysql> purge master logs before 'YYYY-MM-DD HH24:MI:SS';
四、通用查询日志
通用查询日志记录所有用户操作,包括启动和关闭服务、执行查询和更新语句等。
1. 启动
默认情况下,MySQL并没有开启通用查询日志。
# 查看通用查询日志状态
mysql> show variables like '%general%';
# 开启通用查询日志
mysql> set @@global.general_log=1;
# 关闭通用查询日志
mysql> set @@global.general_log=0;
2. 查看
通用查询日志是文本文件的形式存储的,可直接打开。
3. 删除
直接删除日志文件即可。文章来源地址https://www.toymoban.com/news/detail-838895.html
五、慢查询日志
慢查询日志主要用来记录执行时间较长的查询语句。通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化。
1. 启动
慢查询日志默认是关闭的。可以通过配置文件my.ini或my.cnf中的log-slow-queries选项打开,也可以在服务启动时使用–log-slow-queries[=file_name]启动。
启用慢查询日志时,需要配置long_query_time选项指定记录阈值。如果某条查询语句的查询时间超过了这个阈值,这个查询过程将被记录到慢查询日志文件中。
# my.ini或my.cnf
[mysqld]
log-slow-queries=[path / [filename] ]
log-query-time=n
默认存储在数据目录,文件名是hostname-slow.log
时间单位是秒,默认10秒。
mysql> show variables like '%slow%';
2. 查看
文本形式存储,直接查看。文章来源:https://www.toymoban.com/news/detail-838895.html
3. 删除
直接删除日志文件即可。
到了这里,关于mysql笔记:10. 日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!