如何解决 MySQL 主从延时问题?( 二 )

也可以从业务场景考虑:

  • 使用缓存:我们在同步写数据库的同时,也把数据写到缓存,查询数据时,会先查询缓存,不过这种情况会带来 MySQL 和 redis 数据一致性问题 。
  • 查询主库:直接查询主库,这种情况会给主库太大压力,核心场景可以使用,比如订单支付 。
如果能把上面基本回答出来,就已经非常厉害了,还有么?
其实还可以在 MySQL 架构上来考虑 。
主库对数据安全性较高,设置配置如下:
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
而 slave 不需要这么高的数据安全 , 完全可以将 sync_binlog 设置为 0,或者关闭 binlog,innodb_flushlog 也可以设置为 0,来提高 sql 的执行效率 。
  • 架构方案:使用多台 slave 来分摊读请求,再从这些 slave 中取一台专用的服务器,只作为备份用,不进行其他任何操作,比如设置 sync_binlog 为0,或者关闭 binglog 等,提升从库查询性能 。
再问一下,还有么?可以在评论区讨论~
四、后记
再回过头来看这个问题,估计很多同学能回答出一二,但是这个不能成为你的加分项 。
面对如此激烈的竞争环境,同样一个问题,你就需要比别人掌握得更多,回答得更全面,面试官才能对你刮目相看 。
其实笔者当年面试小米时,也面试过这个问题,当时就是基于上面回答的 。
后来的一次 MySQL 分享 , 讲得还不错,当时主管就说 , 笔者的 MySQL 掌握得挺好的,记得当时面试时问过一个 MySQL 主从复制问题 , 他都能回答到非常底层 。
没想到,这都一年多了 , 当时的那场面试 , 居然给主管留下那么深刻的印象 。
作者丨楼仔
来源丨公众号:楼仔(ID:gh_8de52dba3fda)




推荐阅读