mysql 日志
mysql日志是管理mysql的重要一环,需要mysql功能都是通过日志来进行工作的,常被用的日志文件如下:
- 查询日志:query log
- 慢查询日志:slow query log
- 错误日志:error log
- 二进制日志:binary log
- 中继日志:relay log
- 事务日志:transaction log
查询日志
查询日志即对数据进行的查询(Query)操作,此日志一般不要开启,避免无谓的io浪费。
记录查询操作可以是文件和表,受如下常用的数据库变量控制:
general_log=ON|OFF #控制是否开启查询日志
general_log_file=HOSTNAME.log #查询日志的文件格式
log_output=TABLE|FILE|NONE #查询日志输出的存储单元
慢查询日志
查询时长超过指定时长的查询操作,建议开启,并根据实际业务需求设定查询超时时间,以便作出分析。
自定义查询时长记录慢查询日志的变量:long_query_time
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 #慢查询日志的详细级别
错误日志
错误日志主要记录以下的过程中产生的日志:
- mysqld启动和关闭过程中输出的事件信息
- mysqld运行中产生的错误信息
- event scheduler运行一个event时产生的日志信息
- 在主从复制架构中的从服务器上启动从服务器线程时产生的信息
log_error=/PATH/TO/LOG_ERROR_FILE
log_warnings=1|0 是否记录警告信息至错误日志文件中
二进制日志
必须开启,为了可以还原数据及错误重复等一系列分析操作,这个日志的产生为导致数据改变或潜在导致数据改变的sql语句。
核心功能:用于通过重放的机制来生成数据的文件副本
show {binary|master} logs: 查看mariadb自行管理使用的二进制日志文件列表
show master status: 查看使用中的二进制日志文件
show binary events [in ‘log_name’] [form pos] [limit [offset,] row_count] 查看二进制日志
二进制日志记录格式:
- 基于‘语句’记录:statement
- 基于‘行’记录:row
- 混合模式:mixed,让系统自动判定该基于哪种方式进行
服务器变量:
log_bin=ON|OFF:
sql_log_bin=ON|OFF:是否记录二进制日志
log_bin=/PATH/TO/BIN_LOG_FILE:记录的文件位置,通常为OFF
binlog_format=STATEMENT|ROW|MIXED: 二进制日志记录的格式
max_binlog_size= 单个二进制日志文件的最大体积,默认1g:
注意:(1)到达最大值会自动滚动(2)文件达到上限时的大小未必为指定的精确值
sync_binlog=1|0: 设定是否启动二进制日志同步功能
mysqlbinlog:客户端命令工具
mysqlbinlog [options] log_file
–start-position
–stop-position
–start-datetime YYYY-MM-DD hh:mm:ss
–stop-datetime YYYY-MM-DD hh:mm:ss
二进制日志事件的格式
1 | # at 4 |
2 | #170524 15:00:36 server id 1 end_log_pos 431 Query thread_id=1 exec_time=0 error_code=0 |
3 | use `mydb`/*!*/; |
4 | SET TIMESTAMP=1446712300/*!*/; |
5 | CREATE TABLE tb1 (id int,name char(20)) |
6 | '/*!*/; |
- 事件发生的日期和时间:170524 15:00:36
- 事件发生的服务器标识:server id 1
- 事件结束的位置:end_log_pos 106
- 事件的类型:Query
- 事件发生时所在服务器执行此事件的线程的ID:thread_id=1
- 语句的时间戳与将其写入二进制文件中的事件差:exec_time=0
- 错误代码:error_code=0
- 事件内容:
中继日志
复制架构中,从服务器用于保存从主服务器的二进制日志中读取到的事件。
事务日志
事务日志存储引擎自行管理和使用