赞
踩
MySQL日志主要分为四类。
在默认情况下,所有日志创建于MySQL数据目录中。通过刷新日志,可以强制MySQL关闭和重新打开日志文件。当执行一个FLUSH LOGS
语句或执行mysqladmin flush-logs
或mysqladmin refresh
时,将刷新日志。
如果正在使用MySQL复制功能,在复制服务器上可以维护更多日志文件,这种日志称为接替日志。
启动日志功能会降低MySQL数据库的性能。同时,日志会占用大量的磁盘空间。
错误日志记录着MySQL服务器的启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况的相关信息、事件调试器运行一个事件时产生的信息、从服务器上启动服务器进程时产生的信息等。
在默认状态下错误日志功能是开启的,并且不能被禁止。错误日志信息也可以通过修改my.ini文件自行配置。它所记录的信息是通过log-error和log-warnings来定义的。其中log-error定义是否启用错误日志的功能和错误日志的存储位置,log-warnings定义是否将警告信息也定义到错误日志中。
–log-error=[file-name]是用来指定错误日志存放的位置。如果没有指定,则默认hostname.err作为文件名,默认存放在DATADIR目录中。
错误日志是以文本文件形式存储的,可以直接使用普通文本工具打开查看。
通过show命令可以查看错误日志文件所在目录及文件名信息:
mysql> show variables like 'log_error';
管理员可以删除很久之前的错误日志以释放磁盘空间。
可以使用mysqladmin和flush logs来开启新的错误日志。
> mysqladmin -u username -p flush-logs
# 或
mysql> flush logs
二进制日志文件用来记录所有用户对数据库的操作。当数据库发生意外时,可以通过此文件查看在一段时间内用户所做的操作,结合数据库备份技术,即可再现用户操作,使数据库恢复。
二进制日志记录了所有对数据库数据的修改操作,开启二进制日志可以实现以下功能:
[mysqld]
log-bin [=path/ [filename] ]
expire_logs_days = 10
max_binlog_size = 100M
# 查看二进制日志是否开启
mysql> show variables like 'log_bin';
# 查看二进制日志的上限值
mysql> show variables like 'max_binlog_size';
# 查看二进制日志文件
mysql> show binary logs;
# 查看二进制日志文件的具体信息
mysql> show binlog events in filename\G
开启二进制日志会对数据库整体性能有所影响,但性能损失十分有限。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';
通用查询日志记录所有用户操作,包括启动和关闭服务、执行查询和更新语句等。
默认情况下,MySQL并没有开启通用查询日志。
# 查看通用查询日志状态
mysql> show variables like '%general%';
# 开启通用查询日志
mysql> set @@global.general_log=1;
# 关闭通用查询日志
mysql> set @@global.general_log=0;
通用查询日志是文本文件的形式存储的,可直接打开。
直接删除日志文件即可。
慢查询日志主要用来记录执行时间较长的查询语句。通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化。
慢查询日志默认是关闭的。可以通过配置文件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%';
文本形式存储,直接查看。
直接删除日志文件即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。