我正在尝试在3个不同的位置设置一个由3台服务器组成的集群:达拉斯-美国,伦敦-英国,孟买-印度。在每个位置我都设置了一个and服务器和db服务器。在db服务器上,我配置了Galera Mariadb Multi-Master集群,以便在所有三台服务器之间复制数据库。我的每个with服务器都通过本地IP连接到它们的区域数据库服务器。我期望我的达拉斯网络服务器将从达拉斯数据库服务器,伦敦网络服务器从伦敦数据库服务器和孟买网络服务器从孟买数据库服务器获取数据库记录。
一切运行正常,但我发现mysql查询在获取记录时花费了超过100秒的时间。我已经尝试了Mariadb的单实例,它在5秒内获取数据。
我做错了什么?
发布于 2020-06-25 01:35:54
可以将Galera配置为单主机。这听起来不像是你做的,但建议仔细检查。
假设所有节点都是可写的,下面是每个事务上发生的事情的简化视图。
COMMIT将成功返回给客户端。(注意:如果您使用的不是BEGIN...COMMIT,而是auto_commit=ON,那么在每个DML语句的末尾都会有一个隐式的COMMIT。)
对于本地读取,默认操作应返回“立即”。
但是,也许你关心的是“关键读”问题。(cf wsrep_sync_wait)在这种情况下,您需要确保写入已传播到您的服务器。这可能会导致读取延迟200ms,因为它会等待"gcache“被捕获。
如果您可以假设只从它们写入的同一服务器读取数据,那么可以考虑设置wsrep_sync_wait=0。如果任何人进行跨数据中心的写操作,然后进行读操作,他就可能遇到“关键读”问题。(这是他写东西的地方,但在下一次阅读时可能看不到。)
https://stackoverflow.com/questions/62520183
复制相似问题