本篇文章给大家带来的内容是关于laravel学习:主从读写分离配置的实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
在db的连接工厂中找到以下代码
.../vendor/laravel/framework/src/illuminate/database/connectors/connectionfactory.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
protected function getreadconfig( array $config )
{
$readconfig = $this ->getreadwriteconfig( $config , 'read' );
return $this ->mergereadwriteconfig( $config , $readconfig );
}
protected function getreadwriteconfig( array $config , $type )
{
if (isset( $config [ $type ][0])) {
return $config [ $type ][ array_rand ( $config [ $type ])];
}
return $config [ $type ];
}
protected function mergereadwriteconfig( array $config , array $merge )
{
return array_except( array_merge ( $config , $merge ), [ 'read' , 'write' ]);
}
|
工厂类通过随机获取读db配置来进行读取操作,由此可推出db的配置应该如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
'mysql' => [
'write' => [
'host' => '192.168.1.180' ,
],
'read' => [
[ 'host' => '192.168.1.182' ],
[ 'host' => '192.168.1.179' ],
],
'driver' => 'mysql' ,
'database' => 'database' ,
'username' => 'root' ,
'password' => '' ,
'charset' => 'utf8' ,
'collation' => 'utf8_unicode_ci' ,
'prefix' => '' ,
]
|
加强版,支持多主多从,支持独立用户名和密码,配置如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
'mysql' => [
'write' => [
[
'host' => '192.168.1.180' ,
'username' => '' ,
'password' => '' ,
],
],
'read' => [
[
'host' => '192.168.1.182' ,
'username' => '' ,
'password' => '' ,
],
[
'host' => '192.168.1.179' ,
'username' => '' ,
'password' => '' ,
],
],
'driver' => 'mysql' ,
'database' => 'database' ,
'charset' => 'utf8' ,
'collation' => 'utf8_unicode_ci' ,
'prefix' => '' ,
]
|
验证
开启mysql的general-log,通过tail -f的方式监控log变化来确定配置是否生效
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
-
-
-
-
-
-
-
-
管理后台无限级菜单
管理后台菜单遍历很久就想做一个通用的管理后台出来,一直太懒没做,今天开始粗略搞了一下,只是先把框架搭建好,菜单栏...
[阅读全文]
-
桥接模式学习总结
桥接模式引言假如一个系统需要加入报表模块,主要的开发点是数据的获取和报表的显示方式。数据的获取可能是从系统数据库...
[阅读全文]
网友评论