首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
常用软件
运维软件
办公软件
书籍资源
日知录
招聘信息
读书计划
智码微课
关于我们
首页 运维面试【运维面试】面试官:mysql主从延迟是怎么处理的

【运维面试】面试官:mysql主从延迟是怎么处理的

前言

运维关于mysql的面试题,最常见的就是mysql主从同步,对于主从同步这一块稍微深入一点的就是mysql主从延迟怎么产生的,怎么解决的。

现阶段的互联网公司,一般都是读多写少,一个主库配几个从库来读取数据,减轻高并发读的压力。

关于mysql延迟

导致mysql主从延迟的原因有很多,其中一个最主要的就是高并发场景下的延迟。
从库需要从主库拷贝日志以及串行执行SQL,所以在高并发的场景下,从库的数据一定会比主库慢一些,经常会出现刚写入的数据,在从库上找不到,需要经过几十毫秒才能读取到,有时候甚至是几百毫秒。

mysql 的复制分为半同步复制和并行复制,这两种方式其实就是来解决数据丢失和主从同步延时的问题的。

半同步复制:

主库写入binlog日志后,就会强制立即将数据同步到从库,从库将日志写入自己本地的relay log之后,会发挥一个响应给主库,主库接收到至少一个从库的响应之后才会认为写入已经完成了。

并行复制:

从库开启多个线程,并行读取 relay log 中不同库的日志,然后并行重放不同库的日志,这是库级别的并行。

主从延迟产生的原因

  • 网络抖动导致的主从延迟
  • 主库上有大的事务,导致从库延时
  • 主库上有慢查询语句,锁等待等原因,从库个数较多
  • 从库上发生的大的事务,阻塞了后续的所有事务的运行
  • 从库并发量比较大,导致延迟
  • binlog格式没有设置row格式

主从延迟的解决方案

一般排查思路先排查是否是网络抖动及外在原因,如果不是外在原因在排查主库,主库没有问题在对从库进行排查。

介绍几个常见的解决主从延迟的方案:

  • 分库,将一个主库拆分成多个主库,每个主库的写并发减少了之后,延迟就小了
  • 打开mysql的并行复制,多个库并行复制。
  • 重写代码,写完代码之后不要立即查询,很可能会查询不到。
  • 提升从库的硬件配置(有很多公司从库的配置不高)
  • 设置从库为只读模式
  • 开启5.7 增强半同步避免数据丢失
  • 开启binlog raw格式

一个注意的点: 从库raid卡 ,设置成write back的写策略。

总结

对于面试来说,从这里面随便说几条就可以,因为运维对于数据库的熟练程度并没有运维自己想象的那么差,同时也没有公司想象的那么好。
所以面试的时候如果遇到数据库的问题,尽量往自己会的上引导把。

本文链接:http://www.geekyunwei.com/1315.html

网友评论comments

发表评论

邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 备案号: 京ICP备2021004281号
扫二维码
扫二维码
返回顶部