本文介绍: 在执行更新语句时,会记录到redo log和binlog两块日志,以基本事务为单位,redo log在事务的执行过程中能够不断写入,binlog只能在事务提交的时候写入为了解决两份日志之间逻辑一致问题,innodb存储引擎采用了两阶段提交方案,将redo log写入拆成了prepare和commit两个阶段,这就是两阶段提交。
聊聊BINLOG
binlog记录什么?
MySQL server中所有的搜索引擎发生了更新(DDL和DML)都会产生binlog日志,记录的是语句的原始逻辑
为什么需要binlog?
binlog主要有两个应用场景,一是数据复制,在MySQL主从复制的场景下我们通过master来写binlog,slaver
读取master的binlog来完成数据一致性。二是数据恢复,通过mysqlbinlog工具来恢复数据,通过确定start–position和end–position来执行
binlog的记录格式
设置为statement记录的是语句SQL语句原文,同步数据时会执行记录的SQL语句,但是有一些语句直接执行会和原语句不同,比如(UUID,update_time = now()等)所以这种简单的记录形式无法保证数据的一致性,我们有row格式
binlog的写入机制
什么是两阶段提交?
binlog和redo log的区别
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。