Undo log、Bin log、Slow log、Redo log等一些日志文件

共码了1144个字
文内使用到的标签:

Undo log

  • 记录数据被修改前的状态,例如,update 操作会产生大量的 Undo log。是逻辑日志
  • Undo Log 保证事务的原子性(在 InnoDB 引擎中,还用 Undo Log 来实现 MVCC)

bin log

  • 记录了对 MySQL 数据库(Server 层维护)执行更改的所有操作(不包括 select/show 等,因为这类操作没有修改数据)
  • bin log 作用
    • 通过 bin log 的 poin-in-time 恢复数据库数据
    • 主从复制数据库(Master/primary slave/standby),原理与恢复类似
    • 审计,判断是否有注入攻击等

slow log

  • 定位可能存在问题的 SQL 语句
  • 一些参数
    • long_query_time 默认为10,如果为 On, 超过这个数值的 SQL 语句都被记录
    • long_queries_using_indexes,如果为 On, 没有使用索引的语句被记录
    • slow_query_io,默认为100,及逻辑读取次数超过 100 的语句被记录

Redo log

  • 默认情况, InnoDB 存储引擎的数据目录下会有 ib_logfile0 、ib_logfile1 文件,官方手册中将其称为 InnoDB 存储引擎的日志文件,重做日志,记录了对于 InnoDB 存储引擎的事务日志
  • 每个 InnoDB 存储引擎至少有 1 个重做日志文件组,每个文件组下至少有 2 个重做日志文件,为了提高高可用,可以设置多个镜像日志组,放在不同磁盘上
  • 当实例或者介质失败(主机掉电等),innoDB 会使用 redo log 恢复到掉电前的时刻,保证数据的完整性。
  • 与二进制日志的区别
    • bin log 记录所有与 MySQL 有关的日志记录,包括所有引擎。而 Redo log 只记录 InnoDB 本身的事务日志
    • bin log 记录一个事务的具体操作,是逻辑日志。redo log 记录关于每个页的更改的物理情况,是物理日志
  • 写入 redo log
    • 先写入 redo log buffer,再按一定顺序写入 redo log files
      • 如图
    • 进行磁盘写入时,是按照 512 字节(及一个扇区大小)进行写入,保证写入的成功(一般来说,现代硬盘自身的电源足够完成断电后一个扇区的写入操作以此来保证原子写),不需要 doublewrite
  • 重做日志文件参数
    • innodb_log_file_size
      • 设置过大,恢复时间长
      • 设置过小,需要多次切换 redo log, 也会导致频繁的 async checkpoint,性能抖动
    • innodb_log_file_in_group
    • innodb_mirrored_loog_groups
    • innodb_log_group_home_dir

查询日志

  • 记录了所有对 MySQL 数据库的请求,无论请求是否成功。
  • 默认文件名:主机名.log

材料

redo/undo log、binlog 的详解及其区别
《Mysql 技术内幕 – InnoDB 存储引擎》

Prev:
Next:

《“Undo log、Bin log、Slow log、Redo log等一些日志文件”》 有 2 条评论

  1. 大峰说道:

    大侠,你的wordpress主题我很喜欢啊,可不可以分享一下?谢谢!!发我一份,跪求

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注