mysql日志:
mysql> show global variables like'%log%';
1、查询日志
记录查询操作
文件:file
表:table
general_log=on|off 是否启用查询日志
general_log_file=HOSTNAME.log
默认:/var/run/mysqld/mysqld.log
log_output=TABLE|FILE|NONE
2、慢查询日志
执行时长超出指定时长的查询操作;
slow_query_log+ON|OFF 是否启用慢查询日志 |
slow_query_log_file =HOSTNAME.log
/var/run/mysqld/mysqld-slow.log
log_slow_queries=ON|OFF 是否启用慢查询日志
log_slow_rate_limit = 1 限制查询速率
log_slow_verbosity
SHOW GLOBAL VARIABLES LIKE'long_query_time';
SELECT @@GLOBAL.long_query_time;查看单个参数的值
SET GLOBAL long_query_time=
mysql> show global variables like'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
mysql> SELECT@@GLOBAL.long_query_time;
+--------------------------+
| @@GLOBAL.long_query_time |
+--------------------------+
| 10.000000 |
+--------------------------+
1 row in set (0.01 sec)
3、错误日志
mysqld启动和关闭过程中输出的事件信息
mysqld运行中产生的错误信息
event scheduler运行一个event时产生的日志信息;
在主从复制架构中的从服务器上启动从服务器线程时产生的信息;
log_error=/PATH/TO/LOG_ERROR_FILE
/var/log/mysqld.log
log_warnings =0|1: 是否记录警告信息至错误日志文件中
4、二进制日志
导致数据改变或潜在导致数据改变的SQL语句;
SHOW {BINARY | MASTER} LOGS :查看MySQL自行管理使用中的二进制日志文件列表;
SHOW MASTER STATUS:查看使用中的二进制日志文件
SHOW BINLOG EVENTS [IN 'log_name'] [FROMpos] [LIMIT [offset,] row_count]
二进制日志记录格式:
基于“语句”记录:statement
基于“行”记录:row
混合模式:mixed,让系统自行判断该基于哪种方式进行;
二进制日志文件的构成:
两类文件:
日志文件:mysql-bin.文件名后缀,二进制格式
索引文件:mysql-bin.index 文本格式
服务器变量:
sql_log_bin =OFF|ON 是否记录二进制日志
log_bin =/PATH/TO/BIN_LOG_FILE:记录的文件位置,通常为OFF,必须为ON才能启动二进制日志记录
binlog_format=STATEMENT|ROW|MIXED: 二进制日志记录的格式
max_binlog_size= 1073741824 :单个二进制文件的最大体积
注意:(1)、到达最大值会自动滚动;
(2)、文件达到上限时的大小未必为指定的精确值
sync_binlog =0|1 设定是否启动二进制日志同步功能
mysqlbinlog:客户端命令工具:查看二进制日志文件
mysqlbinlog [OPTION] log_file
--start-position
--stop-position
--start-datetime=
--stop-datetime=
YYYY-MM-DD hh:
[root@www ~]#./mysqlbinlog --start-position=328 /data/mysql/mysql-bin.000004
二进制日志事件的格式:
# at 106
#171123 0:28:52 server id 1 end_log_pos 177 Query thread_id=2 exec_time=0 error_code=0
SETTIMESTAMP=1511368132/*!*/;
SET@@session.pseudo_thread_id=2/*!*/;
SET@@session.foreign_key_checks=1, @@session.sql_auto_is_null=1,@@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET@@session.sql_mode=0/*!*/;
SET@@session.auto_increment_increment=1, @@session.auto_incremen
/*!*/
事件发生的日期和时间:171123 0:28:52
事件发生的服务器标志:server id 1
时间的结束位置:end_log_pos 177
事件的类型: Query
事件发生时所在服务器执行此事件的线程的ID:thread_id=2
语句的时间戳与将其写入二进制文件中的时间差:exec_time=0
错误代码:error_code=0
事件内容:
SET TIMESTAMP=1511368132/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;…….
GTID:Global Transaction ID;
专属属性:GTID
5、中继日志
复制架构中,从服务器用于保存从主服务器的二进制日志中读取到的事件;
6、事务日志:transaction log
事务型存储引擎自行管理和使用;
| innodb_flush_log_at_trx_commit | 1 |
| innodb_locks_unsafe_for_binlog | OFF |
| innodb_log_buffer_size | 1048576 |
| innodb_log_file_size | 5242880 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_mirrored_log_groups | 1
redo log 事务走完提交了,重做日志,日志做完了重走一遍。
undo log 事务走一半撤销日志,未走完日志撤销,根据撤销日志可以把修改日志还原回原来日志