我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL45讲之主备数据一致性 - flowers

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL45讲之主备数据一致性 - flowers

MySQL45讲之主备数据一致性 - flowers

本文主要介绍 MySQL 主备数据同步的重要日志 binlog 的三种格式,和双 M 结构的循环复制问题。

前言

本文主要介绍 MySQL 主备数据同步的重要日志 binlog 的三种格式,和双 M 结构的循环复制问题。

binlog三种格式

1. statement格式

直接存储了执行的 SQL 语句,并且存储了时间戳,大部分情况下不会出现主从不一致的情况。但是,还是存在某些特殊情况下,比如主从库执行语句时使用的索引不一样(因为存在统计模糊量,所以执行代价评估的时候结果可能不同),最后导致更新的结果不一致。

总结:statement的优点在于占用的存储空间较小,但是可能会出现主从数据不一致的情况,所以基本不采用statement格式。

2. row格式

row 格式下,binlog 中记录了执行前后的行记录字段值,方便数据回滚。binlog_row_image 默认配置为 FULL,所以 binlog 中会记录行的全字段值,如果修改为 MINIMAL,则只会记录一些必要的字段值。

总结:因为 row 格式下记录了修改的字段值,所以主从同步时不会发生数据不一致。但是因为会记录更新前后的字段值,占用的存储空间会大很多。

3. mixed格式

既然有了 row 格式,为什么还要 mixed 格式呢?

mixed 格式就是 statement 格式和 row 格式的混合。MySQL 会判断当语句不会导致主从数据不一致时,就采用 statement 格式记录,否则采用 row 格式节省存储空间。即 mixed 格式结合了 statement 和 row 格式的优点。


虽然 mixed 格式看着比 row 格式更有优势,但是当前更多的场景下还是使用 row 格式。其中,一个比较明显的原因就是 row 格式恢复数据很方便。

循环复制问题

生产环境中使用较多的是双 Master 的结构,即一台主机和一台备机之间互为主备。这样存在一个问题,主机更新后的 binlog 同步到备机后,备机的 binlog 也会更新然后又同步到主机,这样不就发生循环复制了么?

这个问题的解决办法是,row 格式的 binlog 中记录了 server id,备机同步 binlog 时会继续使用主机传过来的 server id,这样从机将 binlog 传回主机时,主机判断 binlog 中的 server id 和本机一致,就会终止 binlog 的同步,从而打断循环复制。

参考

  • [1] MySQL是怎么保证主备一致的

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL45讲之主备数据一致性 - flowers

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL45讲之主备数据一致性 - flowers

本文主要介绍 MySQL 主备数据同步的重要日志 binlog 的三种格式,和双 M 结构的循环复制问题。 前言本文主要介绍 MySQL 主备数据同步的重要日志 binlog 的三种格式,和双 M 结构的循环复制问题。binlog三种格式1. state
MySQL45讲之主备数据一致性 - flowers
2019-06-13

MySQL45讲之函数转换导致不使用索引 - flowers

本文介绍三种因为函数转换导致不使用索引的问题。 前言本文介绍三种因为函数转换导致不使用索引的问题。注意,不使用索引指的是不使用树搜索,而是全表扫描索引树。显式使用函数比如 select count(*) from tradelog where month
MySQL45讲之函数转换导致不使用索引 - flowers
2022-02-20

oracle主备库数据不一致如何解决

要解决Oracle主备库数据不一致的问题,可以采取以下措施:1. 检查网络连接:确保主备库之间的网络连接正常,没有延迟或丢包等问题。2. 检查主备库配置:确认主备库的配置是否正确,包括日志传输模式、归档模式等。3. 检查归档日志传输:检查主
2023-09-25

MySQL怎么保证备份数据的一致性

这篇文章主要讲解了“MySQL怎么保证备份数据的一致性”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL怎么保证备份数据的一致性”吧!前言为了数据安全,数据库需要定期备份,这个大家都懂
2023-06-30

MyBatis视图在数据备份恢复中的数据一致性验证

在数据备份恢复过程中,确保数据一致性至关重要。MyBatis视图可以通过一系列策略和方法来验证数据的一致性,以下是一些建议和实践:数据一致性验证方法时间戳处理:由于时间戳在备份和恢复过程中可能会发生变化,需要确保比较时考虑这些因素。可以使
MyBatis视图在数据备份恢复中的数据一致性验证
2024-10-15

redis系列之数据库与缓存数据一致性解决方案

场景一一般来说,只要你用到了缓存,不管是Redis还是memcache,就可能会涉及到数据库缓存与数据的一致性问题,这里我们以Redis为例。我们该如何保证Redis与数据库的一致性呢? So easy:更新的时候,先更新数据库,然后再删除缓存。读的时候,先读
redis系列之数据库与缓存数据一致性解决方案
2020-08-13

MyBatis视图在数据备份恢复中的数据一致性校验策略

MyBatis 视图本身并不直接涉及数据备份恢复的数据一致性校验策略,因为视图是基于 SQL 语句的预编译结果,用于简化复杂的 SQL 查询。然而,在数据备份恢复过程中,确保数据一致性是一个重要环节,以下是一些通用的数据一致性校验策略:数
MyBatis视图在数据备份恢复中的数据一致性校验策略
2024-10-14

深入解析数据库事务隔离级别:揭示数据一致性之谜

事务隔离级别是数据库系统中一个重要的概念,通过了解数据库事务隔离级别,可以更轻松地保证数据库数据的安全性与一致性。
深入解析数据库事务隔离级别:揭示数据一致性之谜
2024-02-25

编程热搜

目录