【问题标题】:Laravel 4 - mirror database?Laravel 4 - 镜像数据库?
【发布时间】:2017-03-22 00:55:45
【问题描述】:

我们创建了镜像数据库,它是我们应用程序主数据库的副本。目标是在不可用的情况下在两个数据库之间跳转。

我想知道如何在 Laravel 4 中实现这样的事情?假设我有

 'mysql' => array(
        'driver'    => 'mysql',
        'host'      => '172.22.22.22',
        'port'      => '3306',
        'database'  => 'db',
        'username'  => 'username',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => '172.22.22.23',
        'port'      => '3306',
        'database'  => 'db',
        'username'  => 'username',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

基本上不同的主机但相同的凭据。如果其中一个不可用,我如何配置这些数据库之间的切换?任何来源或文档将不胜感激。

【问题讨论】:

  • 在我看来,最好的选择是让负载均衡器完成故障转移选择的繁琐工作。

标签: php mysql database laravel laravel-4


【解决方案1】:

您可以编写一个帮助函数,根据连接与否来设置连接。我会这样做的方式是这样的:

配置文件:

  # Our primary database connection
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'host1',
        'database'  => 'database1',
        'username'  => 'user1',
        'password'  => 'pass1'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    # Our secondary database connection
    'mysql2' => array(
        'driver'    => 'mysql',
        'host'      => 'host2',
        'database'  => 'database2',
        'username'  => 'user2',
        'password'  => 'pass2'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

辅助函数文件:

function db($modelName){
try {
//Get underlaying PDO connection.
DB::connection()->getPdo();
$m = new $modelName;
$m->setConnection('mysql');
}
catch(\Exception $e)
{
 $m = new $modelName;
$m->setConnection('mysql2');
}
}

然后在每个模型文件中设置:

protected $connection = HelperClass::db('mymodelname');

我确实认为这样的某种方法会奏效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多