在MySQL中,主要有5种日志文件:html
日志类型 | 写入日志的信息 |
---|---|
错误日志(Error log) | 启动,运行或中止mysqld遇到的问题 |
通用查询日志(General query log) | 创建的客户端链接和从客户端收到的语句 |
二进制日志(Binary log) | 记录更改数据的语句(也用于复制) |
中继日志(Relay log) | 从主服务器收到的数据更改 |
慢查询日志(Slow query log) | 记录执行耗时超过long_query_time 的查询 |
DDL日志(metadata log) | DDL语句执行的元数据操做 |
错误日志文件默认为datadir目录下的 hostname.err文件,hostname表示当前的主机名。固然你也能够经过在[mysqld]配置下配置log-error=[file_path]来指定错误日志文件的名字和路径。MySQL启动时若是没有错误日志,则会自动建立错误日志,可是若是在运行时删除了错误日志则不会从新建立。
若是不知道错误日志的位置,能够在MySQL命令行经过变量log_error来查看。mysql
mysql> show variables like 'log_error'; +---------------+----------------------------------------+ | Variable_name | Value | +---------------+----------------------------------------+ | log_error | ./luther.err | +---------------+----------------------------------------+
常规查询日志是mysqld在作什么的常规记录 。当客户端链接或断开链接时,服务器会将信息写入此日志,并按照接收语句的顺序记录从客户端收到的每一个SQL语句。查询日志默认是关闭的,默认为datadir目录下的 hostname.log文件,hostname表示当前的主机名。固然你也能够经过在[mysqld]配置下配置general_log=ON来打开查询日志、general_log_file=[file_path]来指定查询日志文件的名字和路径。因查询日志在生产中通常是不会打开的(不推荐打开,由于查询日志记录的太多,会致使频繁IO消耗大量资源),因此此处不作过多介绍,有兴趣的请参考官网。sql
二进制日志包含描述数据库更改(例如表建立操做或表数据更改)的事件。除非是使用基于行的日志记录,不然它还包含针对可能进行了更改的语句的事件(例如, DELETE
不匹配任何行)。二进制日志还包含有关每一个语句更新数据花费时间的信息。二进制日志有两个重要目的:数据库
用于复制,主服务器上的二进制日志提供了要发送到从服务器上数据更改的记录。bash
某些数据恢复操做须要使用二进制日志。服务器
二进制日志文件默认为hostname-bin开始的文件(例如:mysql-bin.000001和mysql-bin.index),hostname表示当前的主机名。工具
二进制日志支持三种格式类型:spa
--binlog-format=ROW
--binlog-format=STATEMENT
--binlog-format=MIXED
查看二进制日志须要使用mysql客户端工具mysqlbinlog去查看.net
中继日志也是一种二进制日志,只不过该日志是保存在从服务器中,是从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,而后从服务器SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致。主要用于主从同步。命令行
慢查询日志记录了执行花费超过 long_query_time
时间(查询获取锁(包括锁等待)的时间不计入查询时间内),而且有超过min_examined_row_limit
行的结果的查询SQL。慢查询日志是在查询执行完毕且已经彻底释放锁以后才记录的,所以慢查询日志记录的顺序和执行的SQL查询语句顺序可能会不一致(例如语句1先执行,查询速度慢,语句2后执行,但查询速度快,则语句2先记录)。默认状况下,慢查询日志是禁用的。要明确指定初始慢查询日志状态,请使用 --slow_query_log[={0|1}]
。不带参数或参数为1时, --slow_query_log
启用日志。参数为0时,此选项禁用日志。默认状况下,慢查询日志不记录管理语句(例如:ALTER TABLE等),也不记录不使用索引的查询。能够使用log_slow_admin_statements
和 log_queries_not_using_indexes
参数去修改该设置。
DDL日志或元数据日志记录由数据定义语句(如DROP TABLE和ALTER TABLE)生成的元数据操做,并将其写入MySQL数据目录(datadir)中的文件ddl_log.log中。 MySQL使用此日志从元数据操做中发生的crash中恢复。ddl_log.log是一个二进制文件,它不是想要人为可读的,因此你不该该以任何方式尝试修改其内容。在实际须要记录元数据语句以前,不会建立ddl_log.log,并在mysqld成功启动后被删除。所以,该文件可能不会以彻底正常的方式运行在MySQL服务器上。目前,ddl_log.log最多可容纳1048573个输入,大小至关于4 GB。超出此限制后,您必须重命名或删除该文件,才能执行任何其余DDL语句。
如今没有用户可配置的与此文件关联的服务器选项或变量。