MySQL复制 - 我应该从客户端代码(PHP)处理负载平衡吗?

时间:2010-05-10 22:49:29

标签: php mysql replication load-balancing

在MySQL主从复制环境中,如果我有4个从属服务器,如何执行负载均衡选择查询?

我应该编写一个PHP类来处理4个从属,还是可以解决MySQL自己的负载均衡器解决方案?有没有MySQL负载均衡解决方案?

我可以使用其他工具分发我的查询吗?在这种情况下,典型的设置是什么?

感谢所有答案!

2 个答案:

答案 0 :(得分:3)

通常的做法是在mysql集群前设置类似ldirectord的东西,以提供虚拟IP作为集群的负载平衡地址,然后可以将查询分发到各种mysql服务器。

这将需要ipvs路由,对于您的特定情况可能/可能不会过度,可能是负载平衡的PHP控制适合您要实现的目标。

答案 1 :(得分:2)

是和否。

有两个问题需要回答:

  1. 此查询是应该转到slave还是master db?
    • 这个逻辑可能应该是PHP。通常情况下,您必须拥有绝对最新的数据,这是从属设备无法获得的。例如,如果用户更改页面,则需要从主数据库构建更新的页面 - 用户的更改可能尚未进入从属dbs。这是特定于应用程序的,因此第三方工具可能无法为您执行此操作。
  2. 此查询应转到哪个奴隶?
    • 这个,您可能不需要自己编写 - 对于您的应用程序而言,哪个特定的从服务器处理请求并不重要。现有工具应该很好地处理这个问题。