版本:
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相等
、
为什么会出现那个等待事件呢?