关于分库分表数据库中间件

请教下 laravel 中如何配置数据库中间件,如:mycat 中间件之类。搜了百度一下没有相关配置,有没有用过的大佬指点一下

Keep-Alive
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案
'mysql' => [
    'read' => [
        'host' => [
            '192.168.1.1',
            '196.168.1.2',
        ],
    ],
    'write' => [
        'host' => [
            '196.168.1.3',
         ],
    ],
    'sticky'    => true,
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix'    => '',
],

注意在以上的例子中,配置数组中增加了三个键,分别是 read, write 和 sticky。 read 和 write 的键都包含一个键为 host 的数组。而 read 和 write 的其他数据库都在键为 mysql 的数组中。

如果你想重写主数组中的配置,只需要修改 read 和 write 数组即可。所以,这个例子中: 192.168.1.1192.168.1.2 将作为 「读」 连接主机,而 192.168.1.3 将作为 「写」 连接主机。这两个连接会共享 mysql 数组的各项配置,如数据库的凭据(用户名 / 密码),前缀,字符编码等。

4年前 评论
讨论数量: 4

mycat是在数据库mysql里面去设置的,laravel设置读写分离,只要在laravel配置文件database.php的mysql里面分别设置一个read和write就可以啦

4年前 评论
'mysql' => [
    'read' => [
        'host' => [
            '192.168.1.1',
            '196.168.1.2',
        ],
    ],
    'write' => [
        'host' => [
            '196.168.1.3',
         ],
    ],
    'sticky'    => true,
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix'    => '',
],

注意在以上的例子中,配置数组中增加了三个键,分别是 read, write 和 sticky。 read 和 write 的键都包含一个键为 host 的数组。而 read 和 write 的其他数据库都在键为 mysql 的数组中。

如果你想重写主数组中的配置,只需要修改 read 和 write 数组即可。所以,这个例子中: 192.168.1.1192.168.1.2 将作为 「读」 连接主机,而 192.168.1.3 将作为 「写」 连接主机。这两个连接会共享 mysql 数组的各项配置,如数据库的凭据(用户名 / 密码),前缀,字符编码等。

4年前 评论

这个我不知道该如何说。
如果使用的是各种中间件,Atlas 之类的,不需要 laravel 配置读写分离。这也是为什么你百度不到。
中间件的功能就是对应用1,对数据库N。中间分表分库读写分离主从复制跨区join等等全是中间件的活。不需要 laravel 干什么。只要配置一个数据源就行了。中间件自己会处理这些。

所以,不用配置 readwrite 。直接指向服务IP即可。
mycat理论上也是一样。如果有疑问,可以问你们的运维或者 DBA 。

4年前 评论
wjxx 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!