【运维面试】面试官: 你能说一下MySQL主从的几种方式吗?

运维面试秘籍 专栏收录该内容
87 篇文章 91 订阅 ¥99.00 ¥99.90

一般面试官问这个问题,都伴随着另外一个问题,叫:小伙子,你说一下MySQL主从原理?
当你回答完原理之后,就会问到关于MySQL主从的几种方式的问题。

一般我们的主从同步,分为:半同步复制和异步复制:
MySQL主从复制默认采用的是异步复制的机制进行同步,所谓的异步指的是主库执行完客户端提交的事务之后立即将结果返回给客户端,并不关心从库是否已经接收道binlog并同步。

如果从库还没有接收到binlog的时候主库发生宕机,那么进行主从切换后的从库数据并不能和主库完全一致。为了解决这个问题,从MySQL 5.5开始以插件的形式支持半同步复制(另需要注意由于半同步复制仅与默认复制通道(for channel “”)兼容,不支持与多源复制混用。)。半同步复制中,当一个客户端提交事务时主库执行完事务并不会立即响应该客户端,而是等待至少有一个从库接收到了binlog并将事务写到自己的relay log中,最后收到从库的ACK响应后才返回给客户端。

半同步这边根据存储引擎处理的逻辑不同又分为after-commit和after-sync两种:

  • after-commit

主库未收到从库的ACK消息之前,虽然不会让发起事务的会话收到事务提交结果,但是会在存储引擎层先执行提交。这样一来虽然提交事务的会话无法知道事务结果,但其他会话在主库上却是可以正常查询的。如果发生主从切换,那么原本在主库可以查询到的数据,在从库却丢失了

  • after-sync

也可以叫做增强半同步复制或者无损复制,是MySQL 5.7默认的半同步方式。主库未收到从库的ACK消息之前,发起事务的会话收无法到事务提交结果,存储引擎层也不会执行提交,解决了after-commit的缺陷,保证了数据的严格一致。由于OLTP应用场景大多数是读多写少,读不会产生binlog,所以即便开启无损复制,相比异步复制所损失的性能也并不多

半同步复制发生超时,可以由rel_semi_sync_master_timeout参数设置关闭半同步,转而使用异步。

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p> <span style="font-size:14px;color:#E53333;">限时福利1</span><span style="font-size:14px;">购课进答疑群专享柳峰(刘运强)老师答疑服务</span> </p> <p> <br /> </p> <p> <br /> </p> <p> <span style="font-size:14px;"></span> </p> <p> <span style="font-size:14px;color:#337FE5;"><strong>为什么需要掌握高性MySQL实战</strong></span> </p> <p> <span><span style="font-size:14px;"><br /> </span></span> <span style="font-size:14px;">由于互联网产品用户量大、高并发请求场景多,因此对MySQL、可用性、扩展性都提出了很高要求。使用MySQL解决大量数据以及高并发请求已经是程序员必备技,也是衡量一个程序员力和薪资标准之一。</span> </p> <p> <br /> </p> <p> <span style="font-size:14px;">为了让大家快速系统了解高性MySQL核心知识全貌,我为总结了</span><span style="font-size:14px;">「高性 MySQL 知识框架图」</span><span style="font-size:14px;">,帮梳理学习重点,建议收藏!</span> </p> <p> <br /> </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202006031401338860.png" /> </p> <p> <br /> </p> <p> <span style="font-size:14px;color:#337FE5;"><strong>课程设计</strong></span> </p> <p> <span style="font-size:14px;"><br /> </span> </p> <p> <span style="font-size:14px;">课程分为四大篇章,将为建立完整 MySQL 知识体系,同时将重点讲解 MySQL 底层运行原理、数据库调优、高并发、海量业务处理、面试解析等。</span> </p> <p> <span style="font-size:14px;"><br /> </span> </p> <p> <span style="font-size:14px;"></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;"><strong>一、性优化篇</strong></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;">主要包括经典 MySQL 问题剖析、索引底层原理和事务与锁机制。通过深入理解 MySQL 索引结构 B+Tree ,学员够从根本上弄懂为什么有些 SQL 走索引、有些不走索引,从而彻底掌握索引使用和优化技巧,够避开很多实战中遇到“坑”。</span> </p> <p style="text-align:justify;"> <br /> </p> <p style="text-align:justify;"> <span style="font-size:14px;"><strong>二、MySQL 8.0新特性篇</strong></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;">主要包括窗口函数和通用表表达式。企业中许多报表统计需求,如果不采用窗口函数,用普通 SQL 语句是很难实现。</span> </p> <p style="text-align:justify;"> <br /> </p> <p style="text-align:justify;"> <span style="font-size:14px;"><strong>三、高性架构篇</strong></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;">主要包括主从复制和读写分离。在企业生产环境中,很少采用单台MySQL节点情况,因为一旦单个节点发生故障,整个系统都不可用,后果往往不堪设想,因此掌握高可用架构实现是非常有必要。</span> </p> <p style="text-align:justify;"> <br /> </p> <p style="text-align:justify;"> <span style="font-size:14px;"><strong>四、面试</strong></span> </p> <p style="text-align:justify;"> <span style="font-size:14px;">程序员获得工作第一步,就是高效准备面试面试篇主要从知识点回顾总结角度出发,结合程序员面试高频MySQL问题精讲精练,帮助程序员吊打面试官,获得心仪工作机会。</span> </p>
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值