使用proxySQL和MySQl集群插入/更新后的小延迟问题



我们使用MySQL集群和proxySQL,设置如下:

  • 服务器1是托管主数据库的主服务器,位于欧洲
  • Server 2是一个位于亚洲的服务器,用于服务本地用户,该服务器包含一个只读版本的数据库,当发生更改时由Server 1更新。

问题是:服务器2上的用户触发SQL UPDATE, UPDATE customers SET name= 'New name ' WHERE id = 123。(此更新被发送到服务器1,然后服务器2更新)

在同一个代码块中,如果我们选择记录(select name FROM customers WHERE id =123),这个查询将被发送到本地服务器,结果将是"旧名称";除非我们暂停代码1秒(测试)。

我们考虑的一个解决方案是改变连接(PHP),并直接转到服务器1来处理剩余的代码块,但这有点违背目的,而且远非理想(需要更新的代码库非常大)。

是否有涉及到proxySQL的解决方案?

为了防止查询路由到具有高复制延迟的slave,可以在表mysql_server列中设置最大复制延迟阈值max_replication_lag。Ref: max_replication_lag

max_replication_lag -如果大于0,ProxySQL将退出定期监视复制延迟,以及是否超出了配置阈值,它将暂时避开主机,直到复制赶上。

还可以创建查询规则来分割查询的读写。ref: ProxySQL Split Read/Write

重要如果你使用的是Mysql 5.7.5或更新的版本,这可能会解决你的问题。

最新更新