本篇是系列性,由浅入深,主要是为了本人日后回看时再学习,如果道友对Mysql也是零基础的话,强烈建议从头开始看
Mysql日志
1. 查询日志:query log
log_output = {TABLE|FILE|NONE}
log_output = TABLE,FILE
FILE: gerenal_log
general_log = {ON|OFF}:是否启用查询日志;
general_log_file=www.log:当log_output有file类型时,日志信息的记录位置;
2. 慢查询日志;
执行时长超出指定时长的查询操作;
slow_query_log={ON|OFF}:是否启用慢查询日志;
slow_query_log=/path/to/somefile:日志文件路径;
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_queries = OFF
log_slow_rate_limit = 1
log_slow_verbosity =
3. 错误日志;
Mysqld启动和关闭过程中输出的信息;
Mysqld运行中产生的错误信息;
Event scheduler运行一个event时产生的日志信息;
在主从复制架构中的从服务器上启动从服务器线程时产生的日志信息;
log_error = /path/to/somefile
log_warings={ON|OFF}:是否记录警告信息于错误日志中;
4. 二进制日志;
记录导致数据改变或潜在导致数据改变的SQL语句;
功能:用于通过"重放"日志文件中的事件来生成数据副本
SHOW {BINARY|MASTER} LOGS:查看主服务器端处于由mysqld维护状态中的二进制日志文件;
SHOW MASTER STATUS:查看使用中的二进制日志文件
SHOW BINLOG EVENTS [IN ‘log_name’] [FROM pos] [LIMIT [offset,] row_count]:显示指定的二进制日志文件中的相关事件;
日志记录格式:
基于“语句”记录:statement
基于“行”记录:row
“混合”:mixed 让系统自行判定该基于那种方式进行
二进制日志文件的构成:
日志文件:文件名前缀.文件名后缀;mysql-bin.
索引文件:文件名前缀.index mysql-bin.index
服务器变量:
log_bin=/path/to/somefile 记录的文件位置 ;通常为OFF
binlog_format =STATEMENT|ROW|MIXED 二进制日志记录的格式
sql_log_bin=ON|OFF 是否记录二进制日志
max_binlog_size=1073741824 单个二进制日志文件的最大体积,默认为1G
注意:(1)到达最大值会自动滚动;(2)文件达到上限时的大小未必为指定的精确值
二进制日志文件的单文件上限;
Max_binlog_cache_size=18446744073709547520
max_binlog_stmt_cache_size = 18446744073709547520
sync_binlog=0:设定多久同步一次二进制日志文件;0表示不同步;任何正值都表示记录多少个语句后同步一次;
二进制日志的格式:
# at 19364
#140829 15:50:07 server id 1 end_log_pos 19486 Query thread_id=13 exec_time=0 error_code=0
SET TIMESTAMP=1409298607/*!*/;
GRANT SELECT ON tdb.* TO tuser@localhost/*!*/;
# at 19486
事件发生的日期和时间:(140829 15:50:07)
事件发生在服务器的标识(server id)
事件的结束位置:(end_log_pos 19486)
事件的类型:(Query)
事件发生时所在的服务器执行此事件的线程的id:(thread_id=13)
语句的时间戳与将其写入二进制文件中的时间差:(exec_time=0)
错误代码:(error_code=0)
事件内容:(SET TIMESTAMP=1409298607/*!*/;GRANT SELECT ON tdb.* TO tuser@localhost)
GTID事件专属:事件所属的全局事务的GTID:(GTID 0-1-2)
二进制日志的查看命令:
Mysqlbinlog 客户端
-j, --start-position=#:从指定的事件位置查看
--stop-position=#:只显示到指定的时间位置;
--start-datetime=name
--stop-datetime=name
YYYY-MM-DD hh:mm:ss
5. 中继日志:reley log
复制架构中,从服务器用于保存从主服务器的二进制日志中读取到的事件;
6. 事务日志(innodb存储引擎) transaction log
事务型存储引擎自行管理和使用;
redo log
undo log