MySQL日志

MySQL日志

错误日志

mysqld启动和关闭过程中输出的事件信息、运行中产生的错误信息、event scheduler运行一个event时产生的日志信息、在主从复制架构中的从服务器上启动从服务器线程时产生的信息

错误日志相关配置:

mysql> show global variables like 'log_error';
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| log_error     | stderr |
+---------------+--------+
1 row in set (0.00 sec)

错误日志文件路径:

[mysqld]
log_error=/data/logs/mysql.log

是否记录警告信息至错误日志文件:

[mysqld]
log_warnings=1|0 默认值1

通用日志

记录对数据库的通用操作,包括错误的SQL语句:存储在文件file、表table,默认值文件

通用日志相关配置:

show global variables like 'general%';

general_log=ON|OFF 默认值OFF
general_log_file=HOSTNAME.log
show global variables like 'log_output';

log_output=TABLE|FILE|NONE 记录方式,默认文件file

开启通用日志,表形式

[mysqld]
log_output=table
general_log

慢查询日志

记录执行查询时长超出指定时长的操作

慢查询日志相关配置:

slow_query_log=ON|OFF 开启或关闭慢查询
long_query_time=number 慢查询的阀值,单位秒
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
上述查询类型且查询时长超过long_query_time,则记录日志


log_queries_not_using_indexes=ON 不使用索引或使用全索引扫描,不论是否达到慢查询阀值的语句是否记录日志,默认OFF,即不记录
log_slow_rate_limit = 1 多少次查询才记录,mariadb特有
log_slow_verbosity= Query_plan,explain 记录内容
log_slow_queries = OFF 同slow_query_log 新版已废弃

开启慢查询日志

[mysqld]
slow_query_log
long_query_time=3 超过3秒记录

查询慢在哪里的原因-profiling

show variables like 'profiling'; 查询是否开启
set profiling=on;
show profiles; 查看有多少个慢查询记录在内
show profile for query 2; 查看Query_ID=2的查询过程

二进制日志

记录导致数据改变或潜在导致数据改变的SQL语句

记录已提交的日志

不依赖于存储引擎类型

功能:通过“重放”日志文件中的事件来生成数据副本

注意:建议二进制日志和数据文件分开存放

二进制日志记录格式

  • 基于“语句”记录:statement,记录语句
  • 基于“行”记录:row,记录数据,日志量较大
  • 混合模式:mixed, 让系统自行判定该基于哪种方式进行

查看格式当前: show variables like 'binlog_format';

二进制日志文件的构造

两类文件:

  • 日志文件: mysql|mariadb-bin.文件名后缀(mysql-bin.000001),二进制格式

  • 索引文件:mysql|mariadb-bin.index,文本格式。

二进制文件相关配置

sql_log_bin=ON|OFF:是否记录二进制日志,默认ON
log_bin=/PATH/BIN_LOG_FILE:指定文件位置;默认OFF,表示不启用二进制日志功能
上述两项都开启才可以

binlog_format=STATEMENT|ROW|MIXED:二进制日志记录的格式
max_binlog_size=1073741824:单个二进制日志文件的最大体积,到达最大值会自动滚动,默认为1G
说明:文件达到上限时的大小未必为指定的精确值

sync_binlog=1|0:设定是否启动二进制日志即时同步磁盘功能,默认0,由操作系统负责同步日志到磁盘
expire_logs_days=N:二进制日志可以自动删除的天数。 默认为0,即不自动删除
开启,建议二进制日志和数据文件分开存放
[mysqld]
log-bin=/data/logbin/mysql-bin

查看mariadb自行管理使用中的二进制日志文件列表,及大小

show  {BINARY | MASTER}  logs 

查看使用中的二进制日志文件

SHOW MASTER STATUS

查看二进制文件中的指定内容

SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]

show binlog events in 'mysql-bin.000001';
show binlog events in 'mysql-bin.000001' from 6516;
show binlog events in 'mysql-bin.000001' from 6516 limit 2,3;

二进制日志的客户端命令工具

二进制日志的客户端命令工具:mysqlbinlog

命令格式:mysqlbinlog [OPTIONS] log_file

​ --start-position=# 指定开始位置

​ --stop-position=#

​ --start-datetime=

​ --stop-datetime=

​ 时间格式:YYYY-MM-DD hh:mm:ss

​ --base64-output[=name]

​ -v -vvv

示例:

mysqlbinlog --start-position=6787 --stop-position=7527 /var/lib/mysql/mariadb-bin.000003 -v

mysqlbinlog --start-datetime="2018-01-30 20:30:10" --stopdatetime="2018-01-30 20:35:22" mariadb-bin.000003 -vvv

mysqlbinlog /var/lib/mysql/mariadb-bin.000003 -v > test.sql

每天进步一点点
原文地址:https://www.cnblogs.com/Otiger/p/14545032.html