主题:读写分离,处理主备延迟导致的读写分离问题;
读写分离的主要目标就是分摊主库的压力:
1、可以由客户端来选择连接后端数据库;
2、在MySQL和客户端之间有一个中间代理层proxy,客户端只连接proxy,由proxy根据请求类型和上下文决定请求的分发路由。
客户端直连和带proxy的读写分离架构 特点:
1、客户端直连方案:
优点:
因为少了一层proxy转发,所以查询性能稍微好一点儿;
整体架构简单,排查问题更方便。
缺点:
需要了解后端部署细节;
主备切换、库迁移时,客户端会感知,需要调整数据库连接信息。
2、带proxy的架构:
优点:对客户端比较友好,客户端不需关注后端细节;
缺点:对后端维护团队要求高;架构复杂。
过期读问题
由于主从可能存在延迟,客户端执行完一个更新事物后马上发起查询,如果查询选择的是从库的话,就有可能读取到刚刚的事物更新之前的状态。
处理过期读方案汇总:
1、强制走主库方案;
2、sleep方案;
3、判断主备无延迟方案;
4、配合semi-sync方案;
5、等主库位点方案;
6、等GTID方案;
网友评论