一、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三种状态分别是:
2)redo log 的写入策略
InnoDB 提供了 innodb_flush_log_at_trx_commit 参数,它有三种可能取值:
InnoDB 有一个后台线程,每隔 1 秒,就会把 redo log buffer 中的日志,调用 write 写到文件系统的 page cache,然后调用 fsync 持久化到磁盘。