我们有一个应用程序向 ProxySQL 发出写入,然后立即读取可能会受到写入的影响。ProxySQL 后面是四台 MySQL 服务器——一台写入器和三个从写入器复制的读取器。
现在,ProxySQL 能够通过记录原始写入的 OK 数据包中发回的 GTID 和读取器的 binlog 提要来确保它选择一个“最新的”读取器,以确保它选择一个已经执行写入的读取器。
我们的问题是,由于我们的拓扑结构,读取实际上可能在与写入不同的连接上到达 ProxySQL。因此,“读取”连接可能持有较旧的 GTID,因此可能会选择尚未发生写入的“非最新”读取器。
如果可以告诉 ProxySQL 确保阅读器使用“指定”GTID(我们自己从 OK 数据包中解析出来的)而不是连接上的 GTID,我们可以看到一个可能的解决方案,但我们没有知道我们是否可以这样做 - 我在文档中看不到任何内容。
任何关于可行解决方案的想法都将受到欢迎!
我们正在使用带有 ProxySQL 版本 2.0.3-29-g00f26d5 的 mySQL 5.7.25。
我们目前的结果是我们经常执行写入然后执行读取,但读取返回写入之前存在的状态。