说说MySQL里面的日志种类

  • redo log(重做日志)

    • 作用:防止事务提交的数据未写入磁盘,可以根据redo日志进行重做,保持事务一致性。

    • 内容:记录物理页需要修改的信息

    • 开始:随着事务的产生而产生

    • 结束:当事务提交后,脏页数据被写入磁盘则完成了任务

    • 文件形式:ib_logfile1&ib_logfile2

    • 相关配置:

      • innodb_log_group_home_dir 指定日志文件组所在的路径,默认./ ,表示在数据库的数据目录下。

      • innodb_log_files_in_group 指定重做日志文件组中文件的数量,默认2

      • innodb_log_file_size 重做日志文件的大小。

      • innodb_mirrored_log_groups 指定了日志镜像文件组的数量,默认1

    • 执行流程:事务开始之后逐步写入重做日志文件,重做日志有一个缓存区Innodb_log_buffer,Innodb_log_buffer的默认大小为8M(这里设置的16M),Innodb存储引擎先将重做日志写入innodb_log_buffer中。

    • 日志刷盘情况

      • Master Thread 每秒一次执行刷新Innodb_log_buffer到重做日志文件。
      • 每个事务提交时会将重做日志刷新到重做日志文件。
      • 当重做日志缓存可用空间 少于一半时,重做日志缓存被刷新到重做日志文件
        在这里插入图片描述
        在这里插入图片描述
  • undo log(撤销日志)

    • 作用:保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

    • 内容:逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于redo log的。

    • 开始:事务开始之前,将当前是的版本生成undo log,undo 也会产生 redo 来保证undo log的可靠性

    • 结束:当事务提交之后,判断是否有别的事务正在使用对应的MVCC记录有的话就继续保留。

    • 文件形式:ibdata1,注意该日志文件还记录了以下其他内容

      • 数据字典,也就是 InnoDB 表的元数据
      • 变更缓冲区
      • 双写缓冲区
      • 撤销日志
    • 相关配置:

      • innodb_undo_directory = /data/undospace/ –undo独立表空间的存放目录
      • innodb_undo_logs = 128 –回滚段为128KB
      • innodb_undo_tablespaces = 4 –指定有4个undo log文件
    • 如果undo使用的共享表空间,这个共享表空间中又不仅仅是存储了undo的信息,共享表空间的默认为与MySQL的数据目录下面,其属性由参数innodb_data_file_path配置。

    • 执行流程:undo是在事务开始之前保存的被修改数据的一个版本,产生undo日志的时候,同样会伴随类似于保护事务持久化机制的redolog的产生。默认情况下undo文件是保持在共享表空间的,也即ibdatafile文件中,当数据库中发生一些大的事务性操作的时候,要生成大量的undo信息,全部保存在共享表空间中的。因此共享表空间可能会变的很大,默认情况下,也就是undo 日志使用共享表空间的时候,被“撑大”的共享表空间是不会也不能自动收缩的。

在这里插入图片描述

这里写图片描述

  • binlog

    • 作用:用户主从复制中,从库利用主库上的binlog进行重播,实现主从同步。用户数据基于时间点的还原

    • 格式:参见https://blog.csdn.net/hayre/article/details/109082486

    • 开始:当事务提交的时候记录到binlog

    • 结束:记录完成的时候则结束

    • 文件形式:mysql-bin

    • 与redo日志的区别:redo日志主要记录的是物理层的数据变动信息,支持从物理层面做数据库还原数据库。而binlog主要是从逻辑层面去回滚数据。关于事务提交时,redo log和binlog的写入顺序,为了保证主从复制时候的主从一致(当然也包括使用binlog进行基于时间点还原的情况),是要严格一致的,MySQL通过两阶段提交过程来完成事务的一致性的,也即redo log和binlog的一致性的,理论上是先写redo log,再写binlog,两个日志都提交成功(刷入磁盘),事务才算真正的完成
      在这里插入图片描述

  • errorlog

    • mysql的错误日志,主要用来定位排查MySQL启动报错,内存泄漏的等问题
  • slow query log

    • 慢查询日志,用于定位系统中慢查询的SQL语句
  • general log

    • 一般查询日志
  • relay log

    • 中继日志,在从库上面出现,用户同步主库binlog拷贝到本地的relaylog中

参考:

https://blog.csdn.net/u012834750/article/details/79533866

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值