暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

测试MySQL8从库的relay_log_recovery参数

原创 M.A.O. 2023-10-19
118

===

结论:

打开的情况下

    断电+丢失中继日志 => 备库数据不会丢

关闭的情况下

    断电+丢失中继日志 => 备库数据丢了

===

版本:

 8.0.34 

relay_log_recovery – > OFF

表:

从状态:

主日志:

关闭relay_log_recovery 实验

  1. 停止SQL slave 应用,主库插入,查询从库

可见数据未同步

  1. 观测从库log状态 数据状态

  1. 观测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相等

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

最后修改时间:2023-10-19 18:24:44
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

目录
  • 关闭relay_log_recovery 实验
    • 模拟断电后消除该log再次观测log情况
    • 实验2:打开参数relay_log_recovery
    • Log情况
    • 停止sqlthread
    • 插进去数据:
    • 中继日志已经存在插入
    • 模拟服务器崩溃丢失中继日志
    • 开启服务器可 见重新生成了个空的,和一个新的
    • 旧的日志破坏后生成了一个旧的和+1序号的新的log