mysql 有哪些日志文件?都有哪些作用?

发布时间:2023年12月17日

一、mysql数据库内各类日志文件如下:

? ? ? ? 1、 二进制日志(binlog日志)(归档日志)

? ? ? ? 2、error日志

? ? ? ? 3、查询日志

? ? ? ? 4、慢查询日志

? ? ? ? 5、undo 日志(回滚日志)

? ? ? ? 6、中继日志

? ? ? ? 7、redo日志(重做日志,事务日志)

二、二进制日志()

? ? ? ? 主要用于实现mysql的主从复制功能,日志以二进制形式存储,存储了mysql执行的所有的DDL,DML信息。同时还可以用户进行数据备份、数据恢复使用。

三、错误日志

? ? ? ? 记录mysql运行过程中的所有错误信息,查询错误,运行错误等等

四、查询日志

? ? ? ? 记录mysql所有的查询语句,包含insert,update,delete等语句信息。同时记录所有的信息包含敏感信息(有的公司就不会开启查询日志功能,防止敏感信息外泄)。

五、慢查询日志

? ? ? ? 记录执行时间要过一定值的sql语句。

六、中继日志

? ? ? ? 主要记录从服务器从主服务器拷贝binlog日志时的信息(拷贝过程中的给类参数、语句等等信息)。

七、undo日志

? ? ? ? 记录所有数据的增删改查的日志信息,里面包含undo里面需要的三个特殊字段,最新事务id,回滚指针,数据隐性id。主要用于事务回滚信息,mysql实现mvcc功能主要手段。

八、redo日志

????????redo日志本质上只是记录了一下事务对数据库做了哪些修改。记录的是数据库中每个页的修改,而不是某一行或某几行修改成怎样,可以用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置,因为修改会覆盖之前的)。

1)redo log三种状态分别是:

  • 存在 redo log buffer 中,物理上是在 MySQL 进程内存中;
  • 写到磁盘 (write),但是没有持久化(fsync),物理上是在文件系统的 page cache 里面,
  • 持久化到磁盘,对应的是 hard disk
  • 2)redo log 的写入策略

    InnoDB 提供了 innodb_flush_log_at_trx_commit 参数,它有三种可能取值:

  • 设置为 0 的时候,表示每次事务提交时都只是把 redo log 留在 redo log buffer 中 ;
  • 设置为 1 的时候,表示每次事务提交时都将 redo log 直接持久化到磁盘;
  • 设置为 2 的时候,表示每次事务提交时都只是把 redo log 写到 page cache。

InnoDB 有一个后台线程,每隔 1 秒,就会把 redo log buffer 中的日志,调用 write 写到文件系统的 page cache,然后调用 fsync 持久化到磁盘。

文章来源:https://blog.csdn.net/zhen340417593/article/details/135044537
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。