跳转到主要内容

分类: 数据库

  • 读写分离后为什么会读到旧数据:MaxScale 的一致性读

    发布于 文章 1464 字 3 分钟

    数据库MaxscaleMariaDBMySQL读写分离一致性读

    问题 读写分离最容易让人困惑的一幕是:写请求已经返回成功,紧接着发起查询,却没有看到刚写入的数据。这里不一定是事务没有提交,而是写落在主库后,读被路由到了尚未追上复制进度的副本。 那么,有什么办法可以解决这个问题呢?那就是本文要分析的 MaxScale,它解决了这个问题。 MaxScale 的解决方案 MaxScale 的一致性读思路是把“这次写已经产生到哪里”的 GTID 获取到,再让之后的读请求以这个位置为边界:要么等待只读节点追上,要么直接选择已经追上的只读节点。 源码中将因果读(就是一致 …

    问题 读写分离最容易让人困惑的一幕是:写请求已经返回成功,紧接着发起查询,却没有看到刚写入的数据。这里不一定是事务没有提交,而是写落在主库后,读被路由到了尚未追上复制进度的副本。 那么,有什么办法可以解决这个问题呢?那就是本文要分析的 MaxScale,它解决了这个问题。 MaxScale 的解决方案 MaxScale 的一致性读思路是把“这次写已经产生到哪里”的 GTID 获取到,再让之后的读请求以这个位置为边界:要么等待只读节点追上,要么直接选择已经追上的只读节点。 源码中将因果读(就是一致 …