GreatSQL社区

搜索

[讨论中] binlog异常写入后恢复情况探讨

331 11 2024-11-7 12:57
本帖最后由 greatSQL_user01 于 2024-11-10 11:24 编辑

关于binlog完整性校验的参数binlog_checksum作用:控制二进制日志 (Binlog) 文件的校验和机制。启用 CRC32 校验和,以确保 Binlog 文件的数据完整性和正确性。

咨询一下各位大佬:

我看这个参数可以检验binlog,行复制时,如果写redo之后在写binlog时宕机,有没有可能binlog写了一半的情况然后MySQL启动时也认为redo和binlog一致了?毕竟binlog里面也有同一个xid了吧,这当中这个参数是怎么起作用的?



全部回复(11)
yejr 2024-11-7 17:56:15
greatSQL_user01 2024-11-7 20:34:08
yejr 发表于 2024-11-7 17:56
可以先看下文档中的这两篇内容

- https://greatsql.cn/docs/8.0.32-26/2-about-greatsql/4-3-greatsql-bin ...

好像没看到2PC机制的描述,另外binlog刷盘流程那个图是不是画错了?一开始不是应该先将events写入binlog cache吗,怎么先写入binlog了。。

还有redo log那一章节也有点写错,如下图,应该想描述的是innodb_log_file_size:
1730981719612.png

yejr 2024-11-8 09:20:42
greatSQL_user01 发表于 2024-11-7 20:34
好像没看到2PC机制的描述,另外binlog刷盘流程那个图是不是画错了?一开始不是应该先将events写入binlog  ...

谢谢您的反馈,非常细心。

1、binlog & redo 的 2PC 描述在文档中确实没有,后面考虑补充。

2、写binlog的流程图的确画错了,是要先写入binlog cache。

3、redo那章中您框出来的参数名写错了。

以上的问题 2&3 会马上修复,再次感谢。
yejr 2024-11-8 14:44:28
yejr 发表于 2024-11-8 09:20
谢谢您的反馈,非常细心。

1、binlog & redo 的 2PC 描述在文档中确实没有,后面考虑补充。

2PC相关内容也已更新 https://greatsql.cn/docs/8.0.32- ... %8F%90%E4%BA%A4-2pc
reddey 2024-11-8 16:35:26
greatSQL_user01 发表于 2024-11-7 20:34
好像没看到2PC机制的描述,另外binlog刷盘流程那个图是不是画错了?一开始不是应该先将events写入binlog  ...

看得非常仔细,说明你是认真阅读了的。
一个学艺不精的国产数据库爱好者
greatSQL_user01 2024-11-10 11:11:32
reddey 发表于 2024-11-8 16:35
看得非常仔细,说明你是认真阅读了的。

因为带着疑惑尝试来寻找答案,所以大佬说让我看那里我就尝试认真看看,虽然以前看过了
greatSQL_user01 2024-11-10 11:17:53
yejr 发表于 2024-11-8 09:20
谢谢您的反馈,非常细心。

1、binlog & redo 的 2PC 描述在文档中确实没有,后面考虑补充。

客气了,顺带的事,我现在理了一下思路,有binlog_checksum这个参数的存在,如果存在redo写完、binlog写一半就宕机的情况,那故障恢复的时候应该还是会将事务回滚的吧?毕竟binlog不完整,即使有一样的xid存在?再次感谢大佬~
yejr 2024-11-10 17:33:05
greatSQL_user01 发表于 2024-11-10 11:17
客气了,顺带的事,我现在理了一下思路,有binlog_checksum这个参数的存在,如果存在redo写完、binlog写 ...

不会的。
因为不会只简单判断是否有binlog,也要看是否有commit状态。
greatSQL_user01 2024-11-11 17:18:11
yejr 发表于 2024-11-10 17:33
不会的。
因为不会只简单判断是否有binlog,也要看是否有commit状态。

嗯,我描述的就是redo里面只标记prepare状态,但是binlog里面数据不完整的情况,这个时候应该是要结合binlog_checksum一起判断决定是否回滚吧?有时候有点懵,不知道这样理解对不对
12下一页
greatSQL_user01

3

主题

0

博客

36

贡献

注册会员

Rank: 2

积分
55

助人为乐(铜)

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-11-21 17:48 , Processed in 0.021766 second(s), 19 queries , Redis On.
快速回复 返回顶部 返回列表