首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Galera Mariadb多主机复制

Galera Mariadb多主机复制
EN

Stack Overflow用户
提问于 2020-06-23 01:29:00
回答 1查看 91关注 0票数 2

我正在尝试在3个不同的位置设置一个由3台服务器组成的集群:达拉斯-美国,伦敦-英国,孟买-印度。在每个位置我都设置了一个and服务器和db服务器。在db服务器上,我配置了Galera Mariadb Multi-Master集群,以便在所有三台服务器之间复制数据库。我的每个with服务器都通过本地IP连接到它们的区域数据库服务器。我期望我的达拉斯网络服务器将从达拉斯数据库服务器,伦敦网络服务器从伦敦数据库服务器和孟买网络服务器从孟买数据库服务器获取数据库记录。

一切运行正常,但我发现mysql查询在获取记录时花费了超过100秒的时间。我已经尝试了Mariadb的单实例,它在5秒内获取数据。

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-06-25 01:35:54

可以将Galera配置为单主机。这听起来不像是你做的,但建议仔细检查。

假设所有节点都是可写的,下面是每个事务上发生的事情的简化视图。

  1. 执行存储/更新您所连接到的母版上的数据的所有工作。(假设它是本地计算机。)
  2. 在提交时,对其他节点进行一次往返(可能大约200ms),让它们有机会说“等等!这将导致conflict".
  3. Usually步骤2返回" it 's OK”。此时,COMMIT将成功返回给客户端。

(注意:如果您使用的不是BEGIN...COMMIT,而是auto_commit=ON,那么在每个DML语句的末尾都会有一个隐式的COMMIT。)

对于本地读取,默认操作应返回“立即”。

但是,也许你关心的是“关键读”问题。(cf wsrep_sync_wait)在这种情况下,您需要确保写入已传播到您的服务器。这可能会导致读取延迟200ms,因为它会等待"gcache“被捕获。

如果您可以假设只从它们写入的同一服务器读取数据,那么可以考虑设置wsrep_sync_wait=0。如果任何人进行跨数据中心的写操作,然后进行读操作,他就可能遇到“关键读”问题。(这是他写东西的地方,但在下一次阅读时可能看不到。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62520183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档