28 | 读写分离有哪些坑?

Page content

28 | 读写分离有哪些坑?

读写分离,以及怎么处理主备延迟导致的读写分离问题

读写分离的架构

客户端自己做负载均衡

  • 优点
    • 少了一层,查询性能更优
    • 架构简单,排查问题方便
  • 缺点
    • 客户端要处理的问题变多,麻烦

通过代理层 proxy 做负载均衡

  • 优点
    • 客户端友好,客户端不需要关注后端细节
  • 缺点
    • 对运维团队要求高

如何避免读到的数据不是最新的

强制走主库

将请求分类,对于那些需要立马获取最新数据的请求,强制走主库查询

sleep方案

大多数情况下,主备延迟在 1s 内,可以在查询数据时,sleep 1s,这样有很大概率拿到最新数据

判断主备无延迟方案

每次在备库查询时,需要判断 seconds_behind_master 是否等于0,如果不等于0,需要等待

配合 semi-sync 方案

等主库位点方案

等 GTID 方案