MySql主从架构下,如何保证读取到最新的数据?

以上是目前比较主流的数据库架构:一主一备多从。

1.问题

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

2.解决方案

(1)由业务开发自己评估,如果对主从延迟不敏感则读从库,如果对主从延迟敏感,则读主库,这个是平时使用较多的方案;

(2)等主库DTID方案:就是在主库执行完写操作之后会返回一个GTID,然后等从库执行完这个DTID之后再执行查询操作,方案的具体执行步骤如下:

trx1 事务更新完成后,从返回包直接获取这个事务的 GTID,记为 gtid1;

选定一个从库执行查询语句;

在从库上执行 select wait_for_executed_gtid_set(gtid1, 1);

如果返回值是 0,则在这个从库执行查询语句;

否则,到主库执行查询语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值