使用 mysql 路由器照亮数据库连接

Illuminate Database connectivity with mysql router

我正在 laravel 之外与 jessengers mongodb 一起使用 Laravel 的 illuminate 数据库库。

我的要求是通过 illuminate 数据库连接多个数据库。

目前,我添加了两个连接,一个 mysql 和一个 mongodb。

要拆分数据库负载,我需要连接到 mysql 路由器而不是直接连接到 mysql 数据库服务器。另外,因为我只想要一个用于读取操作,一个用于 Read/Write 操作。

请帮我解决这个问题。

提前致谢。

当前连接数

$db = new Capsule;

$db->addConnection([
    'driver'    => 'mysql',
    'host'      => '127.0.0.1',
    'database'  => 'test',
    'username'  => 'test',
    'password'  => 'test@123#',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
], "default");

$db->addConnection([
    'driver'   => 'mongodb',
    'host'     => '127.0.0.1',
    'port'     => 27017,
    'database' => 'test',
    'username' => null,
    'password' => null,
    'options' => []
], "mongodb");

$db->getDatabaseManager()->extend('mongodb', function ($config) {
    return new Connection($config);
});

$db->setEventDispatcher(new Dispatcher(new Container));
$db->setAsGlobal();
$db->bootEloquent();

我需要将一个 mysql 连接替换为两个 mysql 连接以通过 mysql 路由器进行读取和 Read/Write 操作。

您可以使用 mysql host[ 单独定义 read/write 选项=20=] 路由器主机和端口

$db->addConnection([
    'driver'    => 'mysql',
    'read'      => [
        'host'      => '<mysql_router_host_ip>',
        'port'      => '<mysql_router_host_port>'
    ],
    'write'     => [
        'host'      => '<mysql_router_host_ip>',
        'port'      => '<mysql_router_host_port>'
    ],
    'database'  => '<mysql_database>',
    'username'  => '<mysql_database_user>',
    'password'  => '<mysql_database_password>',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
], "mysql");