MySql-日志

show global variables like '%log%';
查询日志
log-output=FILE
general-log=1
general_log_file="filename.log"

慢查询日志
log_slow_queries=1    //mysql 5.6将此参数修改为了slow_query_log
slow_query_log_file="filename.log"
long_query_time=10    //慢查的时长单位为秒,可以精确到小数点后6位(微秒)

二进制日志 (binlog)
二进制日志记录 MySQL 数据库中所有与更新相关的操作, 不包括数据查询语句。常用于恢复数据库和主从复制
SHOW VARIABLES LIKE 'log_bin%';

启用二进制日志功能
log-bin="filename-bin"

查看所有的二进制文件
show binary logs;
查看当前正在使用的二进制文件
show master status;

二进制日志滚动
flush logs;
定义二进制格式日志
binlog_format= Mixed|Statement|Row

二进制日志的有效天数
expire_logs_days = 5

实时将缓存中数据同步到硬盘中
sync_binlog
sync_binlog 的默认值是0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
当sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。

清除二进制日志
RESET MASTER;
清除指定日志之前的所有日志
PURGE MASTER LOGS TO 'mysql-bin.000003';
清除某一时间点前的所有日志
PURGE MASTER LOGS BEFORE '2015-01-01 00:00:00';
清除 n 天前的所有日志
PURGE MASTER LOGS BEFORE CURRENT_DATE - INTERVAL 10 DAY;

查看日志详细
SHOW BINLOG EVENTS [IN ‘log_name’] [FROM pos] [LIMIT [offset,]row_count]
show binlog events in 'mysql-bin.000059';
mysqlbinlog mysql-bin.000060  |more

事务(重做)日志
事物日志是innodb专用功能,这里只考虑innod存储引擎
事物日志默认情况下会有两个文件,名称分别为ib_logfile0和ib_logfile1
如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.
如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作

 

事物日志buffer大小    innodb_log_buffer_size

事物日志大小     innodb_log_file_size

赞 (0) 评论 分享 ()