测试MySQL8从库的relay_log_recovery参数
版本:
8.0.34
relay_log_recovery – > OFF
表:

从状态:

主日志:

关闭relay_log_recovery 实验
- 停止SQL slave 应用,主库插入,查询从库

可见数据未同步
- 观测从库log状态 数据状态

- 观测relay日志

可见已经写入
模拟断电后消除该log再次观测log情况

模拟丢失这个log

打开mysql服务器

可见生成一个新的relay日志且没有之前内容,观测slave状态

可见主从状态是正常的,但是EXEC_MASTER_LOG_POS并没有和Read_MASTER_LOG_POS相等于,尝试切换主机log,发现从库表数据没有更新,丢失了两条插入数据。

符合预期。
实验2:打开参数relay_log_recovery

Log情况

停止sqlthread

插进去数据:

中继日志已经存在插入

模拟服务器崩溃丢失中继日志

开启服务器可 见重新生成了个空的,和一个新的

旧的日志破坏后生成了一个旧的和+1序号的新的log

观测新的log可以发现,旧的为空,而内容追加到了新的日志里面,进入数据库观测
反复卡在这个等待事件,尝试重启…
Waiting for handler commit


重启后发现日志到了07号,且数据已经加载到备库表

观察中继日志7,发现存在insert,且Read_Master_Log_Pos已经和Exec_Master_Log_Pos相等

、
为什么会出现那个等待事件呢?