1.环境
OS: CentOS 6.5 x64
MySQL: 5.6 for Linux (x86_64)
2.日志选项参数
日志参数,默认没有日志打开,打开后日志的默认存储位置是数据目录。MySQL有以下几种日志类型:
Log Type | Information Written to Log |
---|---|
Error log | Problems encountered starting, running, or stopping mysqld |
General query log | Established client connections and statements received from clients |
Binary log | Statements that change data (also used for replication) |
Relay log | Data changes received from a replication master server |
Slow query log | Queries that took more than long_query_time seconds to execute |
DDL log (metadata log) | Metadata operations performed by DDL statements |
1).错误日志:log_error,默认位置在数据目录,默认名称为host_name.err,mysqld启动、运行、停止时的错误信息。
例:log-error=/u01/mysql/log/mysqld.log
2).一般日志:general_log、general_log_file,记录mysqld做的任何事情,包括select语句。默认关闭,打开后默认位置在数据目录,默认名称为host_name.log。
例:general_log=1、general_log_file=/u01/mysql/log/general.log
3).二进制日志:log_bin,默认位置在数据目录,默认名称为host_name-bin.XXXXXX,XXXXXX为自动添加的六位数字,当服务重启、flush log、达到max_binlog_size时,日志产生新文件。这个日志不会记录select、show语句,该日志的目的有两个:一是复制,一是恢复。为了记录哪些日志已经被使用,会有一个索引文件,该文件记录已使用日志的文件名,该索引文件的默认名是日志名加.index后缀,可以用log_bin_index参数进行配置。具有super权限的用户可以在会话里通过SET sql_log_bin=0
来关闭本会话的二进制日志的产生。通过RESET MASTER可以删除所有日志,通过PURGE BINARY LOG可以删除指定范围的日志,删除后索引文件的内容也会相应调整,所以不要手工删除日志。与binlog有关的参数还有binlog_cache_size、max_binlog_cache_size(最小4096)和状态变量Binlog_cache_use、Binlog_cache_disk_use。二进制日志的格式可以是STATEMENT,ROW,MIXED,可以通过binlog_format设置。与二进制日志有关的参数不少,具体可以参考http://dev.mysql.com/doc/refman/5.6/en/binary-log.html.
例:log-bin=mysql-bin,log_bin_index=mysql-bin.index
4).中继日志:relay_log,与二进制日志有诸多相似,用于存储从服务器的IO线程接收到的主服务器发来的变更日志。该参数的具体说明请参考本博客的主从复制文章。
5).慢日志:slow_query_log、slow_query_log_file,默认关闭,打开后默认位置在数据目录,默认文件名为hostname-slow.log。当sql执行超过long_query_time和检查的行数超过min_examined_row_limit时就会记录到慢日志。如果想要记录管理类语句(alter analyze check optimize repaire table, create drop index)和无索引查询时,还需要设置另外两个参数:log_slow_admin_statements和log_queries_not_using_indexes。要记录slave的慢sql需要设置log_slow_slave_statements参数。
例:slow_query_log=1,slow_query_log_file=mysql-slow.log
6).DDL日志:没有参数可以配置,DDL日志只在需要时产生,依然在数据目录,文件名为ddl_log.log,一般的情况下看不到这个日志。这个日志是为了DDL崩溃时可以恢复。日志内容是二进制形式,不可读。