如何使用PHP / Mysql使用备份数据库连接

时间:2013-09-27 14:50:41

标签: php mysql

我有一个处理数据库连接的函数。在casse我的主DB不可用我想使用备份。 我尝试使用下面的代码这样做,但它不起作用......

$host = 'xxx';
$database = 'xxx';
$login = 'xxx';
$pass = 'xxx';

if (! mysql_connect( $host, $login, $pass ) )
{
    // try to connect to backup db
    $host = 'yyy';
    $database = 'yyy';
    $login = 'yyy';
    $pass = 'yyy';
mysql_connect ( $host, $login, $pass ) or die ( "Failed to connect to the database: " . mysql_error());
}
mysql_select_db ( $database ) or die ( "Failed to find the database" . mysql_error());
mysql_query("SET NAMES 'utf8'");

我确定我的连接参数,所以问题不存在

编辑: 我使用的是旧版本的php,所以我只限于Mysql_ * 我的第一台服务器当前已关闭,我收到'警告:mysql_connect()[function.mysql-connect]:太多连接...'错误

实际上我的问题是,如果第一次连接失败,我不需要打印此警告消息......

3 个答案:

答案 0 :(得分:2)

请注意不推荐使用Mysql_ *,使用更安全的mysqli_或PDO。

您是否尝试过输出错误?我在你的代码中没有看到它。

我很长时间没有使用mysql _ ,但尝试使用以下方法输出错误:* mysql_error()

如上所述,可能存在各种问题:

  • 未启动Mysql
  • 防火墙阻止连接
  • 不使用默认端口
  • ...

编辑: 此外,您可能需要考虑为DB故障等事件设置重新设置。

答案 1 :(得分:1)

请勿在您的代码中执行此操作,只需使用类似MySQL Proxy的内容即可为您执行此操作。

答案 2 :(得分:0)

当php无法连接时,它会生成一个警告,停止执行php。 您可以使用@mysql_connect(函数名称前缀为“@”)来避免警告。即使第一个sql server没有响应,你的代码也会继续执行。蹩脚,但工作。