【面试官来袭】MySQL容灾篇

小白debug 2023-08-09 08:02
大家好,我是牛牛。

大家催更的【面试官来袭】系列又和大家见面啦!

认真看过之前文章的小伙伴一定已经知道了,今天我们要讲的就是MySQL的容灾。



容灾一直是后台开发中的重点,如果是线上服务出了问题,没有合适的容灾机制,那么对业务来说一定会是个沉重的打击,但是容灾同时也是拉开能力差距的难点,需要有强劲的实力才能把握住。

不知道阿柴能不能经受住这样的考验。

现在,就让我们继续开启这场沉浸式面试吧。



容灾热身



容灾有几种方式

从冷热来说,分为冷备和热备。从距离来说,分为同城和异地。


一般而言,大的维度划分就是两者的正交:同城冷备,异地冷备,同城热备,异地热备。





MySQL如果挂了怎么办呢

MySQL可以主从模式部署,如果主挂了,可以将从升级为主。当然,为了节约资源,如果业务允许,在平时运行正常的时候,也可以将部分读请求分流到从节点。



那主从模式按部署方式又分为哪几种

常见的主从模式有几种,具体的模式也得看实际的业务需要。根据实际的情况,选择合适的一种架构模式。


1.一主一从模式:一个大佬带一个小弟,大佬挂了小弟上位。



2.一主多从模式:一个大佬带一群小弟,只要不全挂,就还能翻盘。




3.级联主从模式:一个大佬培养了一个亲信骨干,其它小弟都由亲信骨干培养。





嗯,比喻得不错,那主节点和从节点怎么保证一致呢

两种方式,一种是双写两个db,还有就是主从复制。前者需要耗费大量成本去保证双写的最终一致性。所以更常见的是主从复制。



那主从复制,Master做了哪些工作

当主节点上进行写操作时,会按照时间先后顺序写入到binlog中。主从复制就是基于binlog进行的,具体流程有两部分。


首先,当从节点连接到主节点时,主节点会创建一个叫做dump的线程,有多少个从节点,就会创建多少个dump线程;


然后,当主节点的binlog发生变化的时候,dump线程就会通知从节点,并将相应的binlog内容发送给从节点。



主从复制,Slave又做了哪些工作呢

当开启主从同步的时候,从节点会创建两个线程用来完成数据同步工作:


I/O线程连接到主节点,主节点上的dump线程会将binlog的内容发送给I/O线程。它接收到内容后,再将其写入到本地的relay log。


SQL线程读取I/O线程写入的relay log,并且根据relay log的内容对从数据库做对应的操作。





数据复制



主从复制有几种模式

主要有三种模式:异步模式、半同步模式、全同步模式。


异步模式:这种模式下,主节点不关心dump线程同步情况,直接返回成功给客户。




半同步模式下,主节点只需要接收到其中一台从节点的返回信息,就会给用户返回成功,否则需要等待直到超时回滚。


这样做性能比异步模式会差一些,但可靠性会高一些,保证了binlog至少传输到了一个从节点上,不过没有保证从节点立刻将此事务更新到存储中。




全同步模式是指主节点和从节点全部执行并提交了,才会向客户端返回成功。


注意,是提交,而不只是从节点写入到relay log,这样主从是强一致性的,但性能损耗非常大,必须在网络良好的情况下使用。





那全同步模式下,性能会不会很差,有优化空间吗

全同步主要性能损耗在于同步等待返回,业界有一个方案叫MAR,即异步多线程强同步复制,只有当备机数据完步后,才由主机给予应用事务应答,保障数据不丢失,同时还用多线程思路保证了性能。


MAR可以说是半同步和全同步的折中,经常被称为强同步。腾讯的明星产品TDSQL,就是使用的MAR做同步。



详细说一下强同步细节吧。

Master上事务写到binlog就算结束,将会话保存到session中。接着执行下一轮循环去处理其它请求,这样就避免让线程阻塞等待应答了。


然后负责主备同步的dump线程会将binlog立即发送给slave,slave的IO线程收到binlog并写入到relay log之后,再给主机一个应答。


在Master,会有一组线程来处理应答,收到应答之后找到对应的会话,还可以批量执行commit,并且给客户端应答。



综合来看,MAR强同步复制的特点保证了节点间数据的较强一致性,又将串行同步操作异步化,还引入线程池能力,保证同城情况下TPS几乎不会下降。

能了解强同步说明对业界先进实践是有了解的,妥妥加分。


MySQL一般会使用哪种模式的复制呢

根据业务需求,如果要求实时性高的话,可以搞同城容灾,同城可以选择全同步模式。


如果要求进一步降低风险的话,异地容灾也得搞起来,异地通常会采取异步模式。





业界容灾方案



同城容灾和异地容灾的区别是什么

同城容灾是在相近区域建立两个数据中心 : 一个负责日常生产运行 ; 一个负责在灾难发生后的重建。同城之间的同步速度比较快,可以支持全同步模式。


异地容灾主备中心之间的距离较远, 因此一般采用异步同步,灾难情况下会有少量的数据丢失。异地灾难备份可以有效防范地震、水灾等各类风险。


由于同城灾难备份和异地灾难备份各有所长,为达到最理想的防灾效果,数据中心应考虑采用同城和异地各建立一个灾难备份中心。




你有了解过两地三中心吗?

两地三中心即同城双中心➕一个异地中心。同城双中心由于距离近,数据可以完全同步。异地灾备中心因为距离远,会有一定程度的数据延迟。


同城双中心具有投资成本低、建设速度快、运维管理相对简单、可靠性更高等优点。


异地灾备中心则具有抗风险能力强的作用,当同城中心因为自然灾害等原因而发生故障时,异地灾备中心可以用备份数据进行业务恢复。





那灾难发生时MySQL该怎么切换呢

如果是同城强同步的节点,直接切换主从即可。如果是跨城市,这种主要是灾难之后的止损,灾难地的数据不一定能恢复。


平时事故时间较短,不一定要切到异地冷备。如果时间预期比较长,比如光纤断了要等几小时以上的,就需要考虑切到异地冷备,此时会丢失一部分数据,等到恢复之后,再做数据迁移。



MySQL异地双活怎么做

前面说的异地冷备其实也是异地双活的一种。异地双活是说两个不同城地域,同时进行服务,并且互相容灾。


既然能相互容灾,那么两地数据都需要是完整的,至少是最终完整,所以有个同步的过程。





如果出现异常,可以将流量切到另一个地域,快速恢复。



那你能说说异地双活的适用场景吗?

异地双活非常困难,主要涉及到跨城的网络存在较大延迟。要做异地双活,需要对业务场景进行考虑。


如果要完全数据同步,那么两端需要相互同步数据,一般需要数据冲突较少,并且要接受一定的查询延时。


还有一种场景,如果增量数据不受存量影响,比如任务表,那么也可以不双向同步数据,如果一地挂了,可以将用户的新任务调度到异地,等恢复之后,再迁移回来,缺点就是损失一些记录。





MySQL是后台开发中非常重要的领域,容灾更是面试环节的高频考点。


一方面是日常故障怎么做到快速恢复,另一方面,如果真的发生了大型事故 (比如2015年8月,天津爆炸导致腾讯机房受损),怎么把影响降低到最小,这些都是我们需要考虑的问题,若是连冷备兜底都没有,那么这个项目基本可以说拜拜了。


当然,在面试中,要是问到容灾,你能对答如流,甚至拔高,绝对是一个加分项!


下期预告:牛牛面试官将携带MySQL性能篇继续考验阿柴



点击下方链接查看往期精彩文章

●  校招进腾讯,二本也可以?

●【腾讯面试题】兔子试毒

●【面试官来袭】第一弹之Redis连击

●【面试官来袭】第二弹之MySQL基础篇

●【面试官来袭】第三弹之MySQL原理篇




END

关注公众号,免费领取学习资料
你好,我是牛牛,普通二本毕业。
本科进腾讯,去过外企,肝过头条。
目前回腾讯担任高级工程师。
想来腾讯的朋友,可以找我内推哦!


点个“赞”和“在看”鼓励一下嘛~
评论
  • 艾迈斯欧司朗全新“样片申请”小程序,逾160种LED、传感器、多芯片组合等产品样片一触即达。轻松3步完成申请,境内免费包邮到家!本期热荐性能显著提升的OSLON® Optimal,GF CSSRML.24ams OSRAM 基于最新芯片技术推出全新LED产品OSLON® Optimal系列,实现了显著的性能升级。该系列提供五种不同颜色的光源选项,包括Hyper Red(660 nm,PDN)、Red(640 nm)、Deep Blue(450 nm,PDN)、Far Red(730 nm)及Ho
    艾迈斯欧司朗 2024-11-29 16:55 157浏览
  • 学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&
    youyeye 2024-11-30 14:30 63浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 60浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 71浏览
  • 在电子技术快速发展的今天,KLV15002光耦固态继电器以高性能和强可靠性完美解决行业需求。该光继电器旨在提供无与伦比的电气隔离和无缝切换,是现代系统的终极选择。无论是在电信、工业自动化还是测试环境中,KLV15002光耦合器固态继电器都完美融合了效率和耐用性,可满足当今苛刻的应用需求。为什么选择KLV15002光耦合器固态继电器?不妥协的电压隔离从本质上讲,KLV15002优先考虑安全性。输入到输出隔离达到3750Vrms(后缀为V的型号为5000Vrms),确保即使在高压情况下,敏感的低功耗
    克里雅半导体科技 2024-11-29 16:15 119浏览
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 88浏览
  • 光耦合器作为关键技术组件,在确保安全性、可靠性和效率方面发挥着不可或缺的作用。无论是混合动力和电动汽车(HEV),还是军事和航空航天系统,它们都以卓越的性能支持高要求的应用环境,成为现代复杂系统中的隐形功臣。在迈向更环保技术和先进系统的过程中,光耦合器的重要性愈加凸显。1.混合动力和电动汽车中的光耦合器电池管理:保护动力源在电动汽车中,电池管理系统(BMS)是最佳充电、放电和性能监控背后的大脑。光耦合器在这里充当守门人,将高压电池组与敏感的低压电路隔离开来。这不仅可以防止潜在的损坏,还可以提高乘
    腾恩科技-彭工 2024-11-29 16:12 117浏览
  • 国产光耦合器正以其创新性和多样性引领行业发展。凭借强大的研发能力,国内制造商推出了适应汽车、电信等领域独特需求的专业化光耦合器,为各行业的技术进步提供了重要支持。本文将重点探讨国产光耦合器的技术创新与产品多样性,以及它们在推动产业升级中的重要作用。国产光耦合器创新的作用满足现代需求的创新模式新设计正在满足不断变化的市场需求。例如,高速光耦合器满足了电信和数据处理系统中快速信号传输的需求。同时,栅极驱动光耦合器支持电动汽车(EV)和工业电机驱动器等大功率应用中的精确高效控制。先进材料和设计将碳化硅
    克里雅半导体科技 2024-11-29 16:18 157浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 57浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 58浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦