1、查询日志:一般来说不开开启(会产生额外压力,并且不一定有价值),query log
记录查询操作:可以记录到文件(file)中也可记录到表(table)中
general_log=ON|OFF
general_log_file=HOSTNAME.log
log_output=TABLE|FILE|NONE
2、慢查询日志:slow query log
执行时长超出指定时长的查询操作:
SHOW GLOBAL VARIABLES LIKE 'long_query_time';
SELECT @@GLOBAL.long_query_time;
SET GLOBAL long_query_time=10
是否开启慢查询日志
slow_query_log=ON|OFF
慢查询日志的位置
slow_query_log_file=hostname-slow.log
log_slow_filter=admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
log_slow_rate_limit=1
log_slow_verbosity
3、错误日志:error log
mysqld启动和关闭过程中输出的事件信息;
mysqld运行中产生的错误信息;
event scheduler运行一个event时产生的日志信息;
在主从复制架构中的从服务器上启动从服务器线程时产生的信息;
log_error=/PATH/TO/LOG_ERROR_FILE
log_warning
4、二进制日志:binary log
功能:
用于通过"重放"日志文件中的事件来生成数据副本;
记录导致数据改变或潜在导致数据改变的SQL语句
SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS IN 'mysql-bin.000002'G;
SHOW MASTER STATUS;查看正在使用的二进制日志
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
二进制日志的记录格式:
基于"语句"记录:statement;
基于"行"记录:row(数据量较大);
混合模式:mixed,让系统自行判定该基于那种方式进行;
二进制日志文件的构成(两类文件):
日志文件:mysql-bin.文件名后缀,二进制格式
索引文件:mysql-bin.index,文本格式
二进制日志的服务器变量:
sql_log_bin=ON|OFF:是否记录二进制日志;
log_bin=/PATH/TO/BIN_LOG_FILE:记录的文件位置,并制定文件名前缀;(二进制日志经过滚动方式记录)
binlog_format=STATEMENT|ROW|MIXED:二进制日志记录格式,默认为MIXED
max_binlog_size=1073741824:单个二进制日志文件的最大体积,默认为1G;
注意:(1)到达最大值会自动滚动
(2)文件达到上限时的大小未必为指定的精确值
sync_binlog=0|1:设定是否启动二进制日志同步功能,自行选择
等于0会影响数据
等于1会影响性能
mysqlbinlog命令:客户端命令工具
mysqlbinlog [OPTIONS] logfile
按位置:(两个文件可能会出现位置相同的编号)
--start-position
--stop-position
按时间:(可以跨文件查看)
--start-datetime=YYYY-MM-DD hh:mm:ss
--stop-datetime=YYYY-MM-DD hh:mm:ss
二进制日志格式:
#171113 18:41:18 server id 1 end_log_pos 517 CRC32 0x314e769d GTID 0-1-51 ddl
/*!100001 SET @@session.gtid_seq_no=51*//*!*/;
# at 517
#171113 18:41:18 server id 1 end_log_pos 626 CRC32 0x147c0b49 Query thread_id=9 exec_time=0 error_code=0
use `fansik`/*!*/;
SET TIMESTAMP=1510569678/*!*/;
create table user(id int, name char(30))
/*!*/;
事件发生的日期和时间:171113 18:41:18
事件发生的服务器标识:server id 1
事件的结束位置:end_log_pos 517
事件的类型:Query
事件发生时所在服务器执行此事件的线程的ID:thread_id=9
语句的时间戳与将其写入二进制文件中的时间差:exec_time=0
错误代码:error_code=0
事件内容:create table user(id int, name char(30))
GTID:Global Transaction ID(全局事务ID号):避免复制中的事务冲突:GTID 0-1-51 ddl
5、中继日志:relay log
复制架构中,从服务器用于保存主服务器的二进制日志读取到的内容;
6、事务日志:transaction log
事务型存储引擎自行管理和使用;
redo log
undo log