一、general query log
1、简介
general query log会记录客户端的连接与断开,以及收到的每一个sql语句。
2、相关配置
log_output:指定general_log和slow_query_log的输出形式,可以是table或file,或者两者皆有
general_log:控制开关
general_log_file:指定输出文件,如果不指定,则默认为$(hostname).log。
3、日志管理
如果想要重命名文件,运行以下命令:
mv host_name.log host_name_bak.log
mysqladmin flush-logs general
mv host_name_bak.log backup_dir
二、slow query log
1、简介
slow query log包含满足设定的“慢”条件的查询(也可包含管理)语句。
2、配置
log_output:指定general_log和slow_query_log的输出形式,可以是table或file,或者两者皆有
slow query log:控制开关
slow_query_log_file:指定输出文件
慢日志查询由执行时间超过long_query_time,至少检查min_examined_row_limit行的查询组成
log_queries_not_using_indexes:配置是否记录不使用索引进行查找的查询,默认不记录。
log_slow_admin_statements:配置是否记录管理语句,默认不记录。
3、日志管理
mysqldumpslow解析MySQL慢日志文件并总结其内容:
-s sort_type:指定输出的排序规则
t,at:按查询时间或平均查询时间排序
l,al:按锁时间或平均锁时间排序
r,ar:按发送的行数或平均行数排序
c:按数量排序
-t N:仅输出前N个查询
#输出示例
Reading mysql slow query log from /usr/local/mysql/data/mysqld80-slow.log
Count: 1 Time=4.32s (4s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
insert into t2 select * from t1
Count: 3 Time=2.53s (7s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
insert into t2 select * from t1 limit N
Count: 3 Time=2.13s (6s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
insert into t1 select * from t1
三、binary log
1、简介
二进制日志包含描述数据库更改(如表结构和数据的更改)的事件,也包含可能导致更改的语句的事件(例如没有删除任何数据的delete语句,除非是ROW格式)。二进制日志还包含每条语句花费的时间。
二进制日志可用于以下场景:
主从复制,用于数据更改的的记录源,发给从服务器;
数据恢复,恢复备份后,需要重新执行记录之后的bin log中的内容
2、配置
binlog_format:指定bin log的格式,可为STATEMENT(基于语句)、ROW(基于行,默认)和MIXED(混合)。如果你正在使用InnoDB表,并且事务隔离级别是READ COMMITTED或READ UNCOMMITTED,那么只能使用基于行的日志记录。
log_bin:binary log开关,默认开启
log_bin_basename:指定bin log文件的前缀,如果不指定则文件前缀为$(hostname)-bin。日志滚动的条件包括日志刷新、重启服务、当前文件大于max_binlog_size大小。
max_binlog_size:如果当前binary log的文件大小大于该值,则自动进行滚动。
log_bin_index:bin log的索引文件名。
binlog_encryption:为binary log和中继日志文件加密
binlog_cache_size:事务处理时,缓存事务语句的大小
max_binlog_cache_size:缓存事务语句的缓存最大总大小
sync_binlog:每次写入日志时是否都进行磁盘刷新
监控
binlog_cache_use:缓存区存储语句的事务数
binlog_cache_disk_use:多少事务使用了磁盘临时文件
3、日志管理
日志滚动:mysqladmin flush-log binary
删除旧文件:PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }
error log
四、error log
1、简介
error log包含mysqld启动和关闭时间的记录,还包含服务器启动和关闭期间以及服务器运行期间发生的错误、警告和注意事项等诊断消息。
error log也可以配置为向table写入,及performance_schema.error_log表(从8.0.22开始),表实现使用固定大小的内存中环形缓冲区,必要时自动丢弃旧事件,为新事件腾出空间。
2、配置
log_error:没有指定的话,会输出到console;如果设置,但没有指定值,则输出到默认值host_name.err;如果指定值,则输出到对应的文件。
Error_log_buffered_bytes:error_log表的大小
Error_log_buffered_events:error_log表中的事件数量
Error_log_expired_events:表中丢弃的事件数量
Error_log_latest_write:上一次写表的时间
五、日志管理
1、日志备份
redhat平台下,可以直接使用mysql-log-rotate进行日志回滚;
2、日志刷新
flush log操作会产生如下影响:
binary log:关闭现有文件,创建一个新的文件并打开
error log:关闭文件,然后打开
general log:关闭文件,然后打开