从一个PHP页面负载平衡两个MySQL数据库?

这是一个非常愚蠢的问题,但是这里。

  1. 我有一个Web服务器,运行一个简单的PHP应用程序。
  2. 我有两个MySQL服务器,一个复制数据库,PHP应用程序的权力。 我正在使用两个MySQL数据库来处理需求。

我怎么能(而且事实上,我能)得到PHP应用程序来replace它使用的MySQL服务器?

我连接到数据库的PHP行目前是这样的:

$con = mysql_connect('10.0.0.2:3306','name','password') or die('Could not connect to the server!'); 

有没有办法可以与10.0.0.2和我的其他服务器负载平衡? 谢谢。

一个非常简单的方法:你可以使用一个随机数来select两个连接string,如下所示(这是伪代码,我不会说PHP):

  $ran = gen_random(); // assuming range from 0..1 if (ran < 0.5) then $con = database1; else $con = database2; 

真正的负载平衡也是可能的,当然,你将不得不检查加载你的数据库服务器,并select较低的负载。

你要非常小心你在这里做什么。 MySQL复制是一个主从过程。 写入从站的任何更新都不会返回给主站,最终会导致数据库不一致。 事实上,迟早你可能最终会破坏复制,然后开始真正的乐趣。 你可以尝试设置某种循环复制,但是最后我读到这个没有人设法让它在生产环境中工作。

无论如何,我可以告诉你,经过正确configuration和优化的单个MySQL数据库服务器可以轻松处理多个Web服务器的stream量(除非Web服务器是真正的动物,而数据库服务器是小型服务器)。

如果您需要一个适当的多主数据库集群,则必须查看其他解决scheme。 AFAIK市场上只有一个适当的多主数据库解决scheme,那就是oracle。

MySQL使用NBCLuster组。 并非所有数据库都支持NBCluster数据库types。 您可以尝试在testing环境中迁移数据以查看会发生什么情况? 然后您可以使用群集环境。

在5.3查看新的mysql驱动程序(mysqlnd)。

或者你可以使用MySQL代理,而不是在PHP中。

干杯