有人会用php连接多MYSQL服务器吗?自动分配连接数。
如果有五台a,b,c,d,e mysql服务器,怎么让php自动分配连接数呢?
高手们怎么搞呢?

解决方案 »

  1.   


    呵呵,没有搞过,你可以一个接一个的连接,这个是例子,如:<?php
    //a,b,c,d,e服务器IP分别为192.168.1.1、192.168.1.2等等
    if(!file_exists("mysql.php"))
    {
    file_put_contents("mysql.php","<?php \$mysqlnum=1;?>");//把连接服务器改为第一台,为连接作准备
    }
    require("mysql.php");//载入代码
    mysql_connect("192.168.1.{$mysqlnum}","root","password");
    if($mysqlnum == 5)//如果用了e那台服务器,下一次用第一台a服务器
    {
    $mysqlnum=1;
    }else{
    $mysqlnum++;
    }
    $write_content="<?php \$mysqlnum=".$mysqlnum.";?>";
    file_put_contents("mysql.php",$write_content);//重新写入,把服务器地址改为下一个服务器(如当前用的是第一台服务器,下一次用第二台),为下一次连接作准备
    //操作数据库
    ?>
      

  2.   

    分配规则是什么?根据数据库主机的负载来分配么,还是按一定的Hash规则分配,还是随机分配?
      

  3.   

    1楼的这种做法是可以的.但是有时在实际中有些SQL执行时间过长,如果这种SQL在同一台服务器上出现,那其中的这台服务器就会很快就挂掉了.小流量不会有问题,但大流量可能有时会有这种问题.有没有朋友通过processlist 做过负载呢?
      

  4.   


    要是这样的话我觉得应该放到更底层的程序来负责,PHP搞这个不太现实。
      

  5.   

    mysql proxy: http://forge.mysql.com/wiki/MySQL_Proxy
      

  6.   

    楼主可以研究一下MYSQL5.1的分区,MYSQL6的集群技术
      

  7.   

    我现在是做hash分配。基本能匀衡mysql负载
      

  8.   

    MySQL-Cluster集群,解决同步与负载均衡
      

  9.   


    支持。。
    参考http://www.ibm.com/developerworks/cn/linux/database/mysql-ha/