众所周知,当每次刷盘 redo log 记录到日志文件组中,write pos 位置就会后移更新。 每次 MySQL 加载日志文件组恢复数据时,会清空加载过的 redo log 记录,并把 checkpoint 后移更新。 write pos 和 checkpoint 之间的还空着的部分可以用来写入新的 redo log 记录。
如果 write pos 追上 checkpoint ,表示日志文件组满了,这时候不能再写入新的 redo log 记录,MySQL 得停下来,把 checkpoint 推进一下,清空一些记录。
问题来了:如果 write pos 追上 checkpoint 时,新的记录无法进入需要等待 checkpoint 推进,那么此时 MySQL 宕机了,是不是说此时正在等待进入 write pos 的记录就会消失?