因为从库是通过binlog来复制同步主库数据的,万一redolog和binlog数据不一致怎么办,redolog更新主库。实际上可以通过二阶段提交来保证redo log和binlog的数据是一致的。
阶段1:InnoDB redo log 写盘,InnoDB 事务进入 prepare 状态
阶段2:binlog 写盘,InooDB 事务进入 commit 状态
每个事务binlog的末尾,会记录一个 XID event,标志着事务是否提交成功,也就是说,恢复过程中,binlog 最后一个 XID event 之后的内容都应该被 purge。
当binlog没有正常关闭,那可能就是mysql server挂了,那就找到最后一个合法的event,删除后面无效的binlog.
mysql主从同步保证数据一致性
最新推荐文章于 2024-09-26 11:05:30 发布
本文探讨了在数据库复制中如何通过二阶段提交来保证RedoLog和Binlog之间的数据一致性。在阶段1,InnoDB RedoLog写盘并进入prepare状态;在阶段2,binlog写盘后,事务正式提交。当binlog异常时,可通过查找最后一个合法event来清除无效的binlog,确保数据恢复的准确性。
摘要由CSDN通过智能技术生成