Mysql - 日志文件
Mysql中一共有6种日志文件
- 重做日志 - redo log
- 回滚日志 - undo log
- 二进制日志 - bin log
- 中继日志 - relay log
- 错误日志 - error log
- 慢查询日志 - slow query log
重做日志 - redo log
- 用途:确保事务的持久性,防止在发生故障的时候,还有脏页未写入磁盘,在重启mysql的时候根据redolog进行重做,从而保证事务的持久性。
- 事务开始的时候就会记录redolog,当事务对应的page写入到磁盘后,redo日志占用的空间就可以释放,被覆盖重用。
- redolog也有日志缓冲区,默认每秒一次刷新到磁盘
回滚日志 - undo log
- 用途:保存事务发生之前的数据版本,主要用于事务回滚,也可以提供多版本并发控制读(MVCC)。
- 事务开始之前,将当期版本的数据生成undo log。
- 当事务提交后,undo log并不立即删除,而是放入待清理链表,由清理线程异步判断是否需要清理。
二进制日志 - bin log
- 用途:用于主从复制,从库利用主库上的binlog进行重播,实现主从同步功能,也可以实现数据基于时间点的数据还原。
- 事务提交的时候,一次性将事务中的sql语句按照一定的格式记录到binlog中。
中继日志 - relay log
- 用途:用于从服务器的sql线程读取relaylog日志内容同步主库数据。
- relaylog与binlog类似,它是从服务器IO线程将主服务器的binlog读取过来记录到从服务器的本地日志文件。
错误日志 - error log
- 用途:用于记录mysql服务的错误信息和服务进程的错误信息
慢查询日志 - slow query log
- 用途:用于记录sql语句执行时长超过配置阈值的sql语句日志
网友评论