一主多从就是数据库读写分离结构。
无代理结构
有代理结构
两个各有优势
因为主从延迟,客户端更新数据立即读,从库里读到的是更新前的数据,这是过期读。
为了读到从库的数据是新的,采用以下方案
- 强制走主库方案:金融系统需要实时知道最新数据情况,只有走主库。
- sleep方案:读从库前先等一会
- 判断主备无延迟方案;
- 判断位点一致;
- 对比GTID集合

- 配合semi-sync方案;主库确认备库收到了这个日志

- 等主库位点方案;从库执行一条命令,如果结果大于0就在从库查,否则就到主库查

- 等GTID方案:事务执行完返回的gtid,根据这个gtid判断从库是否可以查询。

过期读和不过期读,选择哪个就看业务需求。