第三十三节、读写分离有哪些坑?

主题:读写分离,处理主备延迟导致的读写分离问题;

读写分离的主要目标就是分摊主库的压力:

1、可以由客户端来选择连接后端数据库;

2、在MySQL和客户端之间有一个中间代理层proxy,客户端只连接proxy,由proxy根据请求类型和上下文决定请求的分发路由。



客户端直连和带proxy的读写分离架构 特点:

1、客户端直连方案:

优点:

因为少了一层proxy转发,所以查询性能稍微好一点儿;

整体架构简单,排查问题更方便。

缺点:

需要了解后端部署细节;

主备切换、库迁移时,客户端会感知,需要调整数据库连接信息。

2、带proxy的架构:

优点:对客户端比较友好,客户端不需关注后端细节;

缺点:对后端维护团队要求高;架构复杂。



过期读问题

由于主从可能存在延迟,客户端执行完一个更新事物后马上发起查询,如果查询选择的是从库的话,就有可能读取到刚刚的事物更新之前的状态。

处理过期读方案汇总:

1、强制走主库方案;

2、sleep方案;

3、判断主备无延迟方案;

4、配合semi-sync方案;

5、等主库位点方案;

6、等GTID方案;

你可能感兴趣的:(第三十三节、读写分离有哪些坑?)