Mysql日志体系-创新互联
- bing log :在server记录mysql所有的DDL和DML语句,主要用来做主从复制和数据恢复。内容追加,没有固定大小限制。
- redo log :
- undo log :
binlog记录所有的DDL和DML语句,用来做主从复制和数据恢复。内容可以追加,没有固定大小限制。
创新互联公司主营昆明网站建设的网络公司,主营网站建设方案,成都App制作,昆明h5微信平台小程序开发搭建,昆明网站营销推广欢迎昆明等地区企业咨询在开启了binlog功能的情况下,我们可以把binlog导出sql语句,把所有的操作重放一遍,来实现数据恢复。
3.2、redo logredo log 位于/var/lib/mysql目录下的ib_logfile0
和ib_logfile1
,默认2个文件,每个48M。
由于Buffer Pool刷脏不是实时的,如果出现数据库宕机、或者重启就会有丢失数据的风险。在数据写入BufferPool的同时,我们记录redo Log日志。用于出现上面的情况,恢复数据的作用,保证数据 的持久性。
3.2.2、写日志文件和数据文件区别?同样是写到日志文件,也是写到磁盘,为什么Buffer Pool不直接写到数据文件(磁盘)?
写数据文件是随机IO,效率低。
写redo log日志文件是顺序IO,效率高。
3.2.3、redo log特点- InnoDB存储引擎特有,支持奔溃恢复的一个特性。
- redo log记录的不是数据页更新之后的状态,而是记录的在某个数据页上做了修改。
- redo log大小固定,内容写满直接覆盖之前的内容,一旦写满就触发buffer pool的磁盘同步。
跳转2.1.4
undo log(撤销日志或者回滚日志)记录了事务发生之前的数据状态,分为insert undo log
和update undo log
。如果修改数据时出现异常,可以用undo log来实现回滚操作。
一般情况下,事务提交涉及redo log 和 binlog。当commit 命令执行时,
- prepare 阶段:这个阶段事务中新生成的redo log 会被刷到磁盘,并设置为prepared状态。
- commit阶段:innodb释放锁,释放回滚段,设置redo log提交状态,binlog持久化到磁盘,然后存储引擎层提交。
为了保证数据的一致性,redo log
和bin log
要么都成功,要么都失败。
- 时间点1
- prepare阶段
- 时间点2
- commit阶段
- 时间点3
时间点1出问题:redo log
和bin log
都在内存里,没有刷盘,所以就相当于回滚了。不会影响数据的一致性。
时间点2出问题:这个时候redo log
已经刷盘,binlog
没有保存下来。服务器故障恢复的时候,先读取redo log
,发现数据在prepare
阶段,查看binlog
日志。如果binlog
数据完整,则提交数据;如果binlog
日志不完整,就回滚数据。
时间点3出问题:这个时候redo log
和binlog
都已经存磁盘,服务器从redo log恢复就好了。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前题目:Mysql日志体系-创新互联
路径分享:http://azwzsj.com/article/cddsos.html