使用mysql复制时的性能/延迟

时间:2015-06-16 06:06:36

标签: php mysql replication

我计划使用mysql复制,有1个master和1个slave。我的应用程序是用PHP编写的。我添加了一个层,它将所有写入重定向到master,所有读取重定向到slave服务器。我担心这里的延迟。我的应用程序是一个订单管理系统。这样一个架构会出现什么问题,我该怎么做呢。

1 个答案:

答案 0 :(得分:0)

根据您使用主服务器的方式(以及基础架构的加载方式),会出现复制延迟,没有办法避免这种情况。即使它是“仅”100毫秒,也可能足以让你惹恼一个或多个综合浏览量。

有很多技术可以尝试避免在第一时间引起延迟,例如this article,但是如果它发生并且你的代码还没有准备好,它仍会让你陷入困境。

如果来自从站的提取失败,您将必须实现一些能够从主站临时选择新添加的数据的方法。因此,如果select无法返回数据,但会话中存在(例如)新数据的指示符,则会尝试查询主数据。如果select成功并且交换机在那里,请将其删除。这将从主站中选择新数据,直到在从站上确认为止。

显然,这只需要发生非常重要的记录(例如,用户注册,否则他们将在下一个网页浏览中注销)。用户帐户中的单个订单并不足以保证这一点。这不是一个问题,它只会在几秒钟后出现在概述中。

但有一件事:如果您决定将用户会话存储在数据库中:双重问题!如果复制滞后,则在下一页重新加载时,添加的变量将不存在。

总的来说,新添加的数据会出现一些问题,但只要您的代码假定它不会“存在一段时间”,您应该没问题。 IMO的优势仍然大于问题,特别是对于访问量很大的网站。