mysql 有哪些日志文件?都有哪些作用?
一、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 持久化到磁盘。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!