lyuangg/laravel-umyproxy

关于Laravel mysql读写分离配置使用umyproxy问题请教

Opened this issue · 1 comments

oyrm commented

请教下,Laravel mysql读写分离后,使用umyproxy是否需要针对每个read和write都要创建单独的连接池,或者有其他什么更好的办法和思路,谢谢!

database.php配置:
'mysql' => [//默认数据库连接
'driver' => 'mysql',
'read' => [
[
'host' => env('DB_READ_HOST_1', '127.0.0.1'),
'username' => env('DB_READ_USERNAME_1', 'forge'),
'password' => decryptEnv(env('DB_READ_PASSWORD_1'), env('DB_READ_HOST_1'), env('DB_READ_USERNAME_1')),
],
[
'host' => env('DB_READ_HOST_2', '127.0.0.1'),
'username' => env('DB_READ_USERNAME_2', 'forge'),
'password' => decryptEnv(env('DB_READ_PASSWORD_2'), env('DB_READ_HOST_2'), env('DB_READ_USERNAME_2')),
],
],
'write' => [
[
'host' => env('DB_WRITE_HOST_1', '127.0.0.1'),
'username' => env('DB_WRITE_USERNAME_1', 'forge'),
'password' => decryptEnv(env('DB_WRITE_PASSWORD_1'), env('DB_WRITE_HOST_1'), env('DB_WRITE_USERNAME_1')),
]
],
'sticky' => true,
'database' => env('DB_DATABASE', 'forge'),
'unix_socket' => env('DB_SOCKET', ''),
'port' => env('DB_PORT', '3306'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],

是的, 需要单独创建。

  1. 需要启动两个命令分别代理 read 和 write ,通过命令参数指定 host 等信息。
php artisan umyproxy:serve --host=127.0.0.1 --socket=/tmp/umyproxy-read.socket
php artisan umyproxy:serve --host=127.0.0.1 --socket=/tmp/umyproxy-write.socket
  1. 把 laravel 数据库里面配置的 read 和 write 的 host 改成 代理的 socke 地址即可。
DB_READ_HOST_1=/tmp/umyproxy-read.socket
DB_READ_HOST_2=/tmp/umyproxy-write.socket