mysql 中的日志类型
- 普通日志(general log)
- 开启后会记录所有执行的 sql,开启后很容易导致磁盘爆满,一般只是用于临时使用的时候开启,使用完后关闭
- 慢查询日志(slow query log)
- sql 查询时间超过设置阈值时间,则记录为慢查询 sql,主要用于优化,性能排查等
- 查看慢查询的阈值
show global variables like ‘long_query_time’; - 设置慢查询时间
set global long_query_time = 5; - 查看是否开启慢查询
show variables like ‘slow_query_log’; - 开启慢查询
set global slow_query_log=on; - 查询慢日志输出格式
show variables like ‘log_output’; - 查看慢查询的相关配置
show variables like ‘%slow%’;
- 查看慢查询的阈值
- sql 查询时间超过设置阈值时间,则记录为慢查询 sql,主要用于优化,性能排查等
- 错误日志(errorlog)
- 记录执行过程的错误信息,告警信息,mysql 启动,关闭过程信息,复制的一些 IO 信息,事件调度器运行事件产生的信息
- 查看错误日志存储位置
show variables like ‘log_error’; - 查看 log_warnings 的配置
show variables like ‘log_warnings’;- log-error:定义错误日志的功能和错误日志的存储位置
- log-warnings:定义是否将警告信息记录在错误日志,在 8.0 版本之后该参数被移除
- 0:表示不记录警告信息
- 1:表示警告信息一并记录到错误日志中
- 大于1:表示"失败的连接"的信息和创建新连接时"拒接访问"类的错误信息也会被记录到错误日志中。
- log_error_verbosity:系统变量,从 5.7.2 版本开始,主要首选该参数,而不是 log-warnings
- 1:错误信息
- 2:错误信息和告警信息
- 3:错误信息,告警信息和通知信息
- 错误日志如果不清理或删除,则会一直增长,v5.5.7 之前可以通过命令 mysqladmin flush-logs 命令删除,v5.5.7 版本之后可以通过 mv 备份进行删除
- 查看错误日志存储位置
- 记录执行过程的错误信息,告警信息,mysql 启动,关闭过程信息,复制的一些 IO 信息,事件调度器运行事件产生的信息
- 二进制日志(binlog)
- 记录对 mysql 数据库执行更改的所有操作,但不包括 select 和 show 这类的操作,主要的作用是复制,恢复,审计
- binlog 的三种模式
- statement:基于语句
- 优点:日志记录量较小,节约磁盘及网络 I/O
- 缺点:必须要记录上下文信息,保证在从服务器上执行结果和主服务器上相同对一些非确定性函数无法进行正确复制,如 UUID(),USER() 等可能造成 mysql 复制的主备服务器数据不一致
- row:基于行
- 优点:使 mysql 主从复制更加安全,对每一行数据的修改比基于段的复制高效,有利于数据恢复
- 缺点:日志量较大
- mixed:mysql 判断选择合适的方式基于语句或基于行记录日志
- statement:基于语句
- 重写日志(redo log)
- redo log 是一种基于磁盘的数据结构,用来在 mysql 宕机情况下将不完整的事务执行数据纠正,redo 日志记录事务执行后的状态
- 当事务开始后,redo log 就开始产生,并且随着事务的执行不断写入redo log file 中
- redo log file 中记录某一页做什么修改的信息,我们都知道数据库的更新操作会在内存中先执行,最后刷入磁盘
- redo log 就是为了恢复更新了内存但是由于宕机等原因没有刷入磁盘中的那部分数据
- 回滚日志(undo log)
- undo log 主要用来回滚到某一个版本,是一种逻辑日志
- undo log 记录的是修改之前的数据,比如:当 delete 一条记录时,undolog 中会记录一条对应的 insert 记录,从而保证能恢复到数据修改之前
- 在执行事务回滚的时候,就可以通过 undo log 中的记录内容并以此进行回滚
- 中继日志(relay log)
- relay-log 中继日志是连接 master 和 slave 的核心
- relay-log 的结构和 binlog 非常相似,只不过他多了一个 master.info 和 relay-log.info 的文件
- master.info 记录了上一次读取到 master 同步过来的 binlog 的位置,以及连接 master 和启动复制必须的所有信息
- relay-log.info:记录了文件复制的进度,下一个事件从什么位置开始,由 sql 线程负责更新