单机存储引擎到mysql的思考三

·  阅读 166

上一篇我们阐述mysql锁机制以及MCVV多版本并发控制消除 读写阻塞本篇我们看看redo log、undo log以及bin log

标题 网址
单机存储引擎到mysql的思考一 blog.csdn.net/xk4848123/a…
单机存储引擎到mysql的思考二 blog.csdn.net/xk4848123/a…
单机存储引擎到mysql的思考三 blog.csdn.net/xk4848123/a…

redo log

redo中的re是重新,do是做,字面上来看是重做日志,没错事实上也就是重做日志。redo log在数据库重启恢复的时候被使用,因为其属于物理日志的特性,恢复速度远快于逻辑日志。

1.Write Ahead Log策略 Write-Ahead Log (WAL 预写式日志):对数据文件的修改(它们是表和索引的载体)必须是只能发生在这些修改已经记录了日志之后,也就是说,在描述这些变化的日志记录冲刷到永久存储器之后 这是事务ACID中D(Durability持久性)的要求。

2.CheckPoint技术和作用 a.缩短数据库的恢复时间 当数据库宕机时,数据库不需要重做所有日志,因为CheckPoint之前的页都已经刷新回磁盘。只需对CheckPoint后的重做日志进行恢复,从而缩短恢复时间 b.缓冲池不够用时,将脏页刷新到磁盘 当缓存池不够用时,LRU算法会溢出最近最少使用的页,若此页为脏页,会强制执行CheckPoint,将该脏页刷回磁盘 c.重做日志不可用时,刷新脏页 不可用是因为对重做日志的设计是循环使用的。重做日志可以被重用的部分,是指当数据库进行恢复操作时不需要的部分。若此时这部分重做日志还有用,将强制执行CheckPoint,将缓冲池的页至少刷新到当前重做日志的位置 d.CheckPoint做的事 将缓存池中的脏页刷回磁盘 3.LSN(Log Sequence Number) LSN是用来标记版本的 LSN是8字节的数字 每个页有LSN,重做日志也有LSN,CheckPoint也有LSN CheckPoint技术通过比对数据页和重做日志的LSN(版本)来进行恢复

undo log

1.Undo Log 保证事务的原子性,比如某一时刻数据库 DOWN 机了,一个事务正在处理。数据库重启的时候就要根据日志进行回滚,把未提交事务的更改恢复到事务开始前的状态。即,当数据 crash-recovery 时,所有已经 prepared 但是没有 commit 的 transactions 将会应用 undo log 做 roll back。 2.在 InnoDB 引擎中,用 Undo Log 来实现 MVCC 思考二中我们已经讲到了MVCC,这是还要做个补充 每张表的每一行还有一个隐式的列就是 undo log ptr(指向undo log的指针),这样RR隔离级别下就能找到相应版本的快照,保证可重复读。

binlog及主从复制

binlog是什么

binlog是mysql的逻辑日志,记录的是逻辑sql修改语句。

主从复制

介绍一下mysql主从是异步复制过程。master开启bin-log功能,日志文件用于记录数据库的读写增删需要开启3个线程,master IO线程,slave开启 IO线程 SQL线程,Slave 通过IO线程连接master,并且请求某个bin-log,position之后的内容。MASTER服务器收到slave IO线程发来的日志请求信息,io线程去将bin-log内容,position返回给slave IO线程。slave服务器收到bin-lo日志内容,将bin-log日志内容写入relay-log中继日志,创建一个master.info的文件,该文件记录了master ip 用户名 密码 master bin-log名称,bin-log position。slave端开启SQL线程,实时监控relay-log日志内容是否有更新,解析文件中的SQL语句,在slave数据库中去执行。那什么是半同步复制,又是哪个版本开始支持的呢。

分类:
阅读
标签:
分类:
阅读
标签: