MySQL日志相关

MySQL日志相关

对于MySQL的日志还没有仔细研究过,目前只是使用了一个通用日志,所以在这里先列举MySQL的主要日志文件,接下来有时间会去研究一下,毕竟很多时候,日志可以更精确的定位问题,所以了解一下MySQL的日志系统还是很有必要的。

-- 查看日志是否启用
show variables like '%log%'; 

1、MySQL日志文件系统的组成
a、错误日志:记录启动、运行或停止mysqld时出现的问题。
b、通用日志:记录建立的客户端连接和执行的语句。
c、更新日志:记录更改数据的语句。该日志在MySQL 5.1中已不再使用。
d、二进制日志:记录所有更改数据的语句。还用于复制。
e、慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。
f、Innodb日志:innodb redo log

缺省情况下,所有日志创建于mysqld数据目录中。
可以通过刷新日志,来强制mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志)。
当你执行一个FLUSH LOGS语句或执行mysqladmin flush-logs或mysqladmin refresh时,则日志被老化。
对于存在MySQL复制的情形下,从复制服务器将维护更多日志文件,被称为接替日志。

2、通用查询日志
通用查询日志可以存放到一个文本文件或者表中,所有连接和语句被记录到该日志文件或表,缺省未开启该日志。
通过–log[=file_name]或-l [file_name]选项启动它。如果没有给定file_name的值, 默认名是host_name.log。
mysqld按照它接收的顺序记录语句到查询日志。这可能与执行的顺序不同。
不同于更新日志和二进制日志,它们在查询执行后,但是任何一个锁释放之前记录日志。
查询日志包含所有语句,而二进制日志不包含只查询数据的语句。
服务器重新启动和日志刷新不会产生新的一般查询日志文件。

3、通用查询日志的系统变量
log_output=[none|file|table|file,table] #通用查询日志输出格式
general_log=[on|off] #是否启用通用查询日志
general_log_file[=filename] #通用查询日志位置及名字

4、通用查询日志的备份
在Linux或Unix中,你可以通过下面的命令重新命名文件
并创建一个新文件:
shell> mv hostname.log hostname-old.log
shell> mysqladmin flush-logs
shell> cp hostname-old.log to-backup-directory
shell> rm hostname-old.log
在Windows中,服务器打开日志文件期间不能重新命名日志文件。必须先停止服务器然后重新命名日志文件。然后重启服务器来创建新日志文件。

猜你喜欢

转载自blog.csdn.net/aimomo007/article/details/77609424