MySQL日志文件简记

发布时间 2023-07-25 20:36:39作者: 懵逼的程序小白

日志文件

binlog

binlog主要记录了MySQL数据库执行了更改的所有操作,主要用来做主从复制,数据恢复
记录模式:

  • Statement模式:每一条回修改数据的sql都会被记录在日志中
  • Row模式:每一行具体变更是俺都会被记录在binlog中
  • 混合模式
    刷盘时机选择
  • 0:由系统自行判断何时刷盘
  • 1:每次提交事务的时候将binlog刷盘
  • N:每N个事务将binlog写入磁盘
    什么情况下会重新生成binlog
  1. 服务器停止或重启
  2. 使用flaush logs命令后
  3. binlog文件大小超过max_binlog_size变量的阈值后

redolog

保证事务的持久性
刷盘策略

  • 0:每隔一秒把redo log buffer刷到磁盘文件系统中去,1s前的日志都存在缓冲区,如果此时服务器宕机,将可能丢失1s的数据 延迟写,效率最高,最不安全
  • 1:每次提交事务的时候,会把redolog buffer刷到磁盘文件中去,并立即调用文件系统的flush操作将缓存刷新到磁盘 实写实刷,效率最低,最安全
  • 2:每次提交事务的时候,会把redolog buffer刷到磁盘文件中去但不会立即刷写到磁盘 实时写,延迟刷,效率,安全都折中

undolog

撤销日志

binlog和redolog的区别

  • binlog主要用作数据库还原,属于数据级别的数据恢复,redolog主要用于保证事务的持久性,属于事务级别的数据恢复
  • redolog是InnoDB引擎特有的,binlog属于存储引擎共有的
  • redolog属于物理日志,抓哟记录某个页的修改,binlog属于逻辑日志,主要记录数据库执行的所有DDL和DML语句
  • binloog使用追加的方式写入,大小无限制,redolog采用循环的方式进行写入,大小固定,写到结尾时,回到开头继续写