后端存储实战课
李玥
美团高级技术专家
44005 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
结束语 (1讲)
后端存储实战课
15
15
1.0x
00:00/00:00
登录|注册

13 | MySQL主从数据库同步是如何实现的?

其他计算机技术领域中的复制状态机应用
应用于其他存储系统
全量备份和Binlog
配置注意事项
半同步复制
同步复制
异步复制
应对高并发
解决MySQL服务高可用问题
解决数据可靠性问题
思考题
复制状态机
配置MySQL的主从同步
主从同步的重要性
MySQL主从数据库同步是如何实现的?

该思维导图由 AI 生成,仅供参考

你好,我是李玥。
回顾我们之前讲 MySQL 相关的几节课程,你会发现主从同步有多重要。解决数据可靠性的问题需要用到主从同步;解决 MySQL 服务高可用要用到主从同步;应对高并发的时候,还是要用到主从同步。
我们在运维 MySQL 集群时,遇到的很多常见的问题,比如说,为什么从节点故障会影响到主节点?为什么主从切换之后丢数据了?为什么明明没有更新数据,客户端读到的数据还是变来变去的?这些都和主从同步的配置有密切的关系。
你不但要理解 MySQL 主从同步的原理,还要掌握一些相关配置的含义,才能正确地配置你的集群,知道集群在什么情况下会有什么样的行为,可能会出现什么样的问题,并且知道该如何解决。
今天这节课我们就来详细讲一下,MySQL 的主从同步是怎么实现的,以及如何来正确地配置主从同步。

如何配置 MySQL 的主从同步?

当客户端提交一个事务到 MySQL 的集群,直到客户端收到集群返回成功响应,在这个过程中,MySQL 集群需要执行很多操作:主库需要提交事务、更新存储引擎中的数据、把 Binlog 写到磁盘上、给客户端返回响应、把 Binlog 复制到所有从库上、每个从库需要把复制过来的 Binlog 写到暂存日志中、回放这个 Binlog、更新存储引擎中的数据、给主库返回复制成功的响应。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

MySQL主从数据库同步是数据库运维中的关键技术,涉及数据可靠性、高可用性和高并发等方面。本文详细介绍了MySQL主从同步的原理和配置方法,包括配置时序、异步和同步复制的区别,以及半同步复制的优势和配置注意事项。此外,文章还介绍了复制状态机的概念,并指出了其在其他存储系统中的类似应用。强调了学习新技术的同时需要总结和沉淀经验。 总的来说,本文内容涵盖了MySQL主从同步的原理、配置和应用,并指出了这一套方法在其他存储系统中也有类似应用,强调了技术的持久性和理论基础。读者可以通过本文了解MySQL主从同步的基本原理和配置方法,并且可以将这些方法应用到其他存储系统中。文章以抽象总结的方式解释了复制状态机的概念,强调了其在数据库备份和复制以外在计算机技术领域的其他应用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《后端存储实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(30)

  • 最新
  • 精选
  • 李玥
    置顶
    Hi,我是李玥。 这里回顾一下上节课的思考题: 课后请你对照你现在负责开发或者维护的系统来分享一下,你的系统实施读写分离的具体方案是什么样的?比如,如何分离读写数据库请求?如何解决主从延迟带来的数据一致性问题?欢迎你在留言区与我讨论。 课后很多小伙伴在留言区对这个问题做了回复,分离读写请求大多数采用的是代理或者Sharding-JDBC这两种方案。那解决主从延迟,没有完全避免延迟的方法,但至少要做到能够监控主从延迟,当延迟太大的时候,采用一些降级方案。比如说,把重要业务的读请求切回主库,暂停一些不重要的业务,甚至限流等等。
    2020-03-26
    1
    34
  • 渐渐迷失
    老师你好 之前学mq的时候您课讲完了,我才进入学习的,有好些问题还不会,追过来问问可以吗

    作者回复: 建议你还是在MQ的课程中去提问,这样也便于其它同学查看。虽然课程已经更新完结,但我还是会关注并回答留言区的问题。

    2020-03-26
    7
  • 夏目
    redis在重启时现在也可以采用这种策略,RDB快照加上aof日志恢复数据
    2020-04-09
    24
  • leslie
    最典型的应当是VMware:其实复制技术不仅仅在linux系统的中间件存储 mysql、redis、ES上使用,Windows的sql server同样适用了此技术。
    2020-03-26
    17
  • MySQL 启用半同步复制,需要登录MySQL安装插件(或者修改配置文件) Linux: install plugin rpl_semi_sync_master soname 'semisync_master_so' (window 是 dll) 从库使用的是 semisync_slave.so 文件 这时候MySQL 会自动去 安装目录的 lib/plugin 文件夹下去找
    2020-03-26
    10
  • Wiggins
    读完mysql实战45讲再读老师的文章感觉又复习了一遍 老师的文章很清晰 更加偏向实战中的配置了
    2020-03-27
    2
    9
  • 渔夫
    目前主流前端技术的状态管理也是这个状态机机制:state + action = next state
    2020-03-31
    8
  • image
    fork and write,典型有docker镜像,linux fork都和复制状态机有关系,这也是一种基本的构建模式
    2020-03-26
    4
  • 基于事件朔源的应用程序,就是用snapshot + 事件来快速恢复对象的状态。
    2020-05-03
    3
  • Ling
    - rpl_semi_sync_master_timeout 为了防止半同步复制在没有收到确认的情况下发生堵塞,如果主库在`rpl_semi_sync_master_timeout`毫秒超时之前没有收到确认,将恢复到异步复制 以毫秒为单位,默认值是10000(10秒)。 - rpl_semi_sync_master_wait_for_slave_count 在继续处理事务之前,必须接收的副本确认的数量; 越小,需要等待确认的从节点越少,性能越好; MySQL默认值是`1`;阿里云的一主一备高可用版RDS,配置该值为`1` - rpl_semi_sync_master_wait_no_slave 当前存活从节点数小于`rpl_semi_sync_master_wait_for_slave_count`中配置的值时,是否还需要等待`rpl_semi_sync_master_timeout`中配置的超时时间; 环境:如果配置的`rpl_semi_sync_master_wait_for_slave_count`是2,但是当前只有一个从节点 如果配置为`ON`:主库还是会等待`rpl_semi_sync_master_timeout`秒后超时,然后切换为`异步复制` 如果配置为`OFF`:立刻变为`异步复制` MySQL默认该值为`ON`,阿里云的一主一备高可用版RDS,配置该值为`OFF`
    2021-05-27
    2
收起评论
显示
设置
留言
30
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部