设为首页 加入收藏

TOP

为什么MySQL默认事务隔离级别是RR
2023-07-26 08:18:04 】 浏览:191
Tags:MySQL 别是

部署一套主从架构的集群,创建过程较简单,可以参考历史文章部署 MySQL主从复制搭建 部署一主一从即可。



在主库中创建表及测试数据


MySQL默认的隔离级别为 RR(Repeatable Read),在此隔离级别下,对比binlog格式为ROW、STATEMENT是否会造成主从数据不一致


其实不用测试大家也应该对RR级别下ROW格式的binlog有信心,但是,万事皆需实践检验。


步骤说明如下:


具体步骤如下:


 


为了和之前的步骤一致,先初始化数据


再将binlog日志格式改为STATAMENT格式(全局及会话级都改一下,或者修改全局变量后重新登录也行,当然 只改会话级别的也可以测试),然后 再次进行测试。


步骤说明如下:


也就是此时主从结果也是一致的,原因在于,binlog里存储的语句顺序如下:


与主库执行的顺序是一致的,因此,主从的结果是一致的。


为了和之前的步骤一致,先初始化数据


再将binlog日志格式改为STATAMENT格式(全局及会话级都改一下,或者修改全局变量后重新登录也行,当然 只改会话级别的也可以测试),然后 再次进行测试。


步骤说明如下:


也就是此时主从结果也是一致的。


因为当前版本已经不支持RC+STATEMENT组合下数据的操作,否则将报如下错误:


因此单纯根据步骤讲解


因为binlog是按照commit时间的顺序保存,因此上述步骤在binlog里会以如下顺序存储:


从库通过binlog应用后,最终的结果将导致主库的数据不一样(具体案例后续安装低版本后演示)。


因而,此种场景下很容易导致数据不一样。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇KV型内存数据库Redis 下一篇MySQL 5.7配置GTID主从

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目