问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL 主从,5 分钟带你掌握

发布网友 发布时间:2022-10-19 19:55

我来回答

1个回答

热心网友 时间:2024-12-11 17:11

MySQL 主从一直是面试常客,里面的知识点虽然基础,但是能回答全的同学不多。

比如楼哥之前面试小米,就被问到过主从复制的原理,以及主从延迟的解决方案,因为回答的非常不错,给面试官留下非常好的印象。你之前面试,有遇到过哪些 MySQL 主从的问题呢?

所谓 MySQL 主从,就是建立两个完全一样的数据库,一个是主库,一个是从库, 主库对外提供读写的操作,从库对外提供读的操作 ,下面是一主一从模式:

对于数据库单机部署,在 4 核 8G 的机器上运行 MySQL 5.7 时,大概可以支撑 500 的 TPS 和 10000 的 QPS, 当遇到一些活动时,查询流量骤然,就需要进行主从分离。

大部分系统的访问模型是读多写少,读写请求量的差距可能达到几个数量级,所以我们可以通过一主多从的方式, 主库只负责写入和部分核心逻辑的查询,多个从库只负责查询,提升查询性能,降低主库压力。

MySQL 主从还能做到服务高可用,当主库宕机时,从库可以切成主库,保证服务的高可用,然后主库也可以做数据的容灾备份。

整体场景总结如下:

MySQL 的主从复制是依赖于 binlog 的,也就是记录 MySQL 上的所有变化并以二进制形式保存在磁盘上二进制日志文件。

主从复制就是将 binlog 中的数据从主库传输到从库上,一般这个过程是异步的,即主库上的操作不会等待 binlog 同步的完成。

详细流程如下:

当主库和从库数据同步时,突然中断怎么办?因为主库与从库之间维持了一个长链接,主库内部有一个线程,专门服务于从库的这个长链接的。

对于下面的情况,假如主库执行如下 SQL,其中 a 和 create_time 都是索引:

我们知道,数据选择了 a 索引和选择 create_time 索引,最后 limit 1 出来的数据一般是不一样的。

所以就会存在这种情况:在 binlog = statement 格式时,主库在执行这条 SQL 时,使用的是索引 a,而从库在执行这条 SQL 时,使用了索引 create_time,最后主从数据不一致了。

那么我们改如何解决呢?

可以把 binlog 格式修改为 row,row 格式的 binlog 日志记录的不是 SQL 原文,而是两个 event:Table_map 和 Delete_rows。

Table_map event 说明要操作的表,Delete_rows event用于定义要删除的行为,记录删除的具体行数。 row 格式的 binlog 记录的就是要删除的主键 ID 信息,因此不会出现主从不一致的问题。

但是如果 SQL 删除 10 万行数据,使用 row 格式就会很占空间的,10 万条数据都在 binlog 里面,写 binlog 的时候也很耗 IO。但是 statement 格式的 binlog 可能会导致数据不一致。

设计 MySQL 的大叔想了一个折中的方案,mixed 格式的 binlog,其实就是 row 和 statement 格式混合使用, 当 MySQL 判断可能数据不一致时,就用 row 格式,否则使用就用 statement 格式。

有时候我们遇到从数据库中获取不到信息的诡异问题时,会纠结于代码中是否有一些逻辑会把之前写入的内容删除,但是你又会发现,过了一段时间再去查询时又可以读到数据了,这基本上就是主从延迟在作怪。

主从延迟,其实就是“从库回放” 完成的时间,与 “主库写 binlog” 完成时间的差值, 会导致从库查询的数据,和主库的不一致

谈到 MySQL 数据库主从同步延迟原理,得从 MySQL 的主从复制原理说起:

总结一下主从延迟的主要原因 :主从延迟主要是出现在 “relay log 回放” 这一步,当主库的 TPS 并发较高,产生的 DDL 数量超过从库一个 SQL 线程所能承受的范围,那么延时就产生了,当然还有就是可能与从库的大型 query 语句产生了锁等待。

我们一般会把从库落后的时间作为一个重点的数据库指标做监控和报警,正常的时间是在毫秒级别,一旦落后的时间达到了秒级别就需要告警了。

解决该问题的方法,除了缩短主从延迟的时间,还有一些其它的方法,基本原理都是尽量不查询从库。

具体解决方案如下:

在实际应用场景中,对于一些非常核心的场景,比如库存,支付订单等,需要直接查询从库,其它非核心场景,就不要去查主库了。

两台机器 A 和 B,A 为主库,负责读写,B 为从库,负责读数据。

如果 A 库发生故障,B 库成为主库负责读写,修复故障后,A 成为从库,主库 B 同步数据到从库 A。

一台主库多台从库,A 为主库,负责读写,B、C、D为从库,负责读数据。

如果 A 库发生故障,B 库成为主库负责读写,C、D负责读,修复故障后,A 也成为从库,主库 B 同步数据到从库 A。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网上到底有没有钢《铁侠侠3》的高清完整版呀? 有木有下载[钢铁侠3BD1280真正高清收藏版][161电影网种子的网址_百度知 ... 苏州甪直怎样坐车去上海虹桥?要快的! 从吴江自驾去上海虹桥机场T2航站楼怎么走?大约要多久?有停车场不?第一... 从甪直开车到上海虹桥机场T1航站楼怎么走? 甪直到虹桥机场多长时间? 柴油暖风机多少钱一台_柴油暖风机什么牌子好 国务院关于加快发展现代保险服务业的若干意见 国发2019 29号_百度知 ... 八万的那个夏天是什么意思? 北京BW007有什么安全配置 大学法律专业学什么 主要课程有哪些 小孩流鼻涕感冒的应对方法 和尚吃馒头,正常能吃三天,每天少吃两个,就能吃五天,问有多少 13岁男孩用胶布粘掉部分胡须会怎么样? 用胶带把自己下巴的胡子粘下来 还会长么如果会的话有什么办法让胡子变的... 12岁男孩可以用胶布拔胡子吗? 挂壁的空调左右导风板怎么? 那个卡西欧SGW-400H-1BVDR怎么调 买房能不能自己付一部分 贷款一部分 没出马弟子梦见红色旗子 有凤凰旗和龙的标准是什么意思 没出马的梦见君临天下印在纸上 延安必康信号怎么样?延安必康 股吧东方财富网?延安必康 2021年年度分红... 东方财富网股吧论坛盛新锂能 延安必康是怎么样?东方财富网延安必康股吧?2021年延安必康会分红? ...目标股价是多少?药明康德股票股吧东方财富网?药明康德股票分红2021... l两千元买什么智能触屏手机好? 哪些食物最有利于排毒 十年前买了一套新科音响现在功放遥控器丢了怎么办请哪位高人指点一下... 开淘宝一定要开网银吗 在淘宝卖东西用不用开通网上银行吗? 正职排挤副职,副职该如何反击?大家能分享些建议吗? 小米充电宝可以在110V环境下充电吗 请问在国外110v电压的环境下,可以给移动电源充电吗? 请问在国外110v电压的环境下,可以给品胜移动电源充电吗? 移动电源在110v能用吗 小米充电宝,上面写输入DC 5.0V/2.0A,可以在110V的地方充电吗 问:小米充电宝,上面写输入DC 5.0V/2.0A,可以在110V的地方充电吗 秋季天气变化大,龙眼秋季栽培技术有哪些? 足迹软件里的照片怎么下载到自己上? 梦见身上有个铁箱子压住 同一个可以登录两个手机吗 如何能一个微信账号两个手机登陆 一个可以两个手机登录吗? 一个可以同时用两部手机登陆吗? 42岁女有服装经验不懂电脑学电脑打版难度大吗? 加牛奶的鲜虾鱼板面怎么做如何 八个月的宝宝应该用什么样的枕头 眼睛结膜炎没好就吃海鲜了 眼睛上起了包肿的很大怎么办 油电混动还是插电混动好 ...屏蔽7天还要考试屏蔽期结束,不考试屏蔽期结束可以发布宝贝吗,请看清... 淘宝处罚我了,让我到时参加在线考试,还给我限权,一直到2999年,这是什么...