MySql日志--日志概述

MySQL为用户提供了几种日志种类,具体见表

MySql 日志类型 解释说明
错误日志(error log) 记录数据库启动、运行、停止时产生日志
普通查询日志(general query log) 记录客户端连接数据库执行语句时产生该日志
二进制日志(binary log) 记录数据库内容发生改变时产生该日志,也被用来实现主从复制功能
中继日志(relay log) 记录从库上收到主库的数据更新时间产生该日志
慢查询日志(slow query log) 记录SQL语句在数据库查询超过指定时间产生该日志
重做日志(redo log) 通常是物理日志,记录的是数据页的物理修改
回滚日志(undo log) 用来回滚行记录到某个版本,一般是逻辑日志,根据每行记录进行记录
redo log、binlog、undo log 区别与作用
  • 重做日志(redo log)
    作用:确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。
    内容:物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。
  • 回滚日志(undo log)
    作用:保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下(MVCC),也即非锁定读
    内容:逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于redo log的。
  • 二进制日志(binlog):
    作用:用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。 用于数据库的基于时间点的还原。
    内容:逻辑格式的日志,可以简单认为就是执行过的事务中的sql语句。但又不完全是sql语句这么简单,而是包括了执行的sql语句(增删改)反向的信息,也就意味着delete对应着delete本身和其反向的insert;update对应着update执行前后的版本的信息;insert对应着delete和insert本身的信息。

猜你喜欢

转载自blog.csdn.net/jinhf10/article/details/110475387
今日推荐