美文网首页
innodb-undo-logs,innodb-redo-log

innodb-undo-logs,innodb-redo-log

作者: BenjaminCool | 来源:发表于2019-12-21 16:21 被阅读0次

    腾讯工程师带你深入解析 MySQL binlog

    image.png image.png
    主从复制

    MySQL异步复制
    a.Master将数据改变记录到二进制日志(binary log)中
    b.Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容
    c.Master接收到来自Slave的IO进程的请求后,负责复制的IO进程会根据请求信息读取日志指定位置之后的日志信息,返回给Slave的IO进程。
    返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置
    d.Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的
    文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master从某个bin-log的哪个位置开始往后的日志内容
    e.Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行

    MySQL半同步复制 需要安装插件支持
    https://dev.mysql.com/doc/refman/5.6/en/replication-semisync.html

    不存在同步复制的实现;

    数据恢复

    恢复,就是让mysql将保存在binlog日志中指定段落区间的sql语句逐个重新执行一次而已

    MySQL5.6

    innodb-undo-logs

    innodb-redo-log

    InnoDB Checkpoints

    The Binary Log

    image.png

    MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结

    image.png image.png image.png

    undo log与redo log原理分析

    undo log是把所有没有COMMIT的事务回滚到事务开始前的状态,系统崩溃时,可能有些事务还没有COMMIT,在系统恢复时,这些没有COMMIT的事务就需要借助undo log来进行回滚。

    redo log是指在回放日志的时候把已经COMMIT的事务重做一遍,将未落盘的已提交的事务落盘;
    对于没有commit的事务按照abort处理,不进行任何操作。

    你只需要直到undo log, redo log用来做啥的就行了, 无需深入运行机制了解。

    相关文章

      网友评论

          本文标题:innodb-undo-logs,innodb-redo-log

          本文链接:https://www.haomeiwen.com/subject/piygnctx.html