本篇文章给大家带来的内容是关于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

/**

 * Get the read configuration for a read / write connection.

 *

 * @param  array  $config

 * @return array

 */

protected function getReadConfig(array $config

    $readConfig = $this->getReadWriteConfig($config, 'read'); 

      

    return $this->mergeReadWriteConfig($config, $readConfig); 

  

/**

 * Get a read / write level configuration.

 *

 * @param  array   $config

 * @param  string  $type

 * @return array

 */

protected function getReadWriteConfig(array $config, $type

    if (isset($config[$type][0])) { 

        return $config[$type][array_rand($config[$type])]; 

    

  

    return $config[$type]; 

}

/**

 * Merge a configuration for a read / write connection.

 *

 * @param  array  $config

 * @param  array  $merge

 * @return array

 */

protected function mergeReadWriteConfig(array $config, array $merge)

{

    return array_except(array_merge($config, $merge), ['read', 'write']);

}

链接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取码:x2p5

免费分享,但是X度限制严重,如若链接失效点击链接或搜索加群 群号518475424

工厂类通过随机获取读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变化来确定配置是否生效

laravel学习:主从读写分离配置的实现的更多相关文章

  1. CentOS系统 Amoeba+MySql主从读写分离配置 适合新手傻瓜式教程!-----仅供参考!

    废话不说,直接开始: 一.安装mysql的三种方式,这里采用第2种(安装方式不再详解,请参照) http://www.cnblogs.com/babywaa/articles/4837946.html ...

  2. laravel实现数据库读写分离配置或者多读写分离配置

    config\database.php里 读写分离:'mysql' => array( 'read' => array( 'host' => '192.168.1.1', ), 'w ...

  3. Amoeba实现mysql主从读写分离

    Amoeba实现mysql主从读写分离 这段在网上看了下关于amoeba的文章,总体感觉好像要比mysql-proxy好的多,也参考了不少的资料,此文章可能与其他文章作者会有雷同的地方,请谅解,但是此 ...

  4. CRL快速开发框架4.4版发布,支持主从读写分离

    经过一些调整和优化,4.3已经运行在生产环境,对于不久将会遇到的查询性能,读写分离需求列上日程 读写分离需求 对于一个数据库作了主从发布/订阅,主库为DB1,从库为DB2 所有写入通过DB1,所有查询 ...

  5. MySQL主从同步、读写分离配置步骤、问题解决笔记

    MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经 ...

  6. MySQL主从及读写分离配置

    <<MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,B也会跟着写数据,两者数据实时同步>> MySQL主从是基于binlo ...

  7. linux中MySQL主从配置(Django实现主从读写分离)

    一 linux中MySQL主从配置原理(主从分离,主从同步) mysql主从配置的流程大体如图: 1)master会将变动记录到二进制日志里面: 2)master有一个I/O线程将二进制日志发送到sl ...

  8. Amoeba搞定mysql主从读写分离

    前言:一直想找一个工具,能很好的实现mysql主从的读写分离架构,曾经试用过mysql-proxy发现lua用起来很不爽,尤其是不懂lua脚本,突然发现了Amoeba这个项目,试用了下,感觉还不错,写 ...

  9. Mysql一主多从和读写分离配置简记

    近期开发的系统中使用MySQL作为数据库,由于数据涉及到Money,所以不得不慎重.同时,用户对最大访问量也提出了要求.为了避免Mysql成为性能瓶颈并具备很好的容错能力,特此实现主从热备和读写分离. ...

随机推荐

  1. asp.net mvc4 bundle添加带min的js问题

    今天在用ScriptBundle的时候发现js文件有min的,无法bundle进去,具体我也不知道怎么回事. @Tony Tan 回复:bundles.IgnoreList可以设置 去除min.js的 ...

  2. C#下的时间测试(用于计算方法执行时间)

    public class Timing { private TimeSpan m_StartTime; private TimeSpan duringTime; public Timing() //构 ...

  3. linux内核级同步机制--futex

    在面试中关于多线程同步,你必须要思考的问题 一文中,我们知道glibc的pthread_cond_timedwait底层是用linux futex机制实现的. 理想的同步机制应该是没有锁冲突时在用户态 ...

  4. 3-美团 HTTP 服务治理实践

    参考: 美团 HTTP 服务治理实践 Oceanus:美团HTTP流量定制化路由的实践

  5. jdk8 HashMap tableSizeFor

    今天读jdk8  HashMap源码,构造函数中 根据initialCapacity初始化threshold public HashMap(int initialCapacity, float loa ...

  6. csp201809-2 买菜

    问题描述 小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁边的一个广场把菜装上车,两人都要买n种菜,所以也都要装n次车.具体的,对于小H来说有n个不相交的时间段 ...

  7. 面向对象的六大原则之 单一职责原则——SRP

    SRP = Single Responsibility Principle   定义:就一个类而言,应该只有一个能引起他变化的原因.通俗的说,即一个类只负责一项职责.   作用: 1.减少了类之间的耦 ...

  8. E203译码模块(3)

    下面的代码译码出指令的立即数,不同的指令有不同的立即数编码形式. //I类型指令的imm,[31:20],符号位扩展成32位. wire [31:0] rv32_i_imm = { {20{rv32_ ...

  9. 在使用 Fortify进行源码扫描时需要做对项目需要做什么?

    1.一般我们的项目都是svn 或git 进行管理的,为了扫出异常的问题 做好把   “” .svn    “”  文件删除 2.把我们的项目需要的jar 文件放到一个文件夹内同项目一起进行扫描.这样为 ...

  10. linux下oracle无法删除用户

    Oracle删除用户的提示无法删除当前已连接用户.且无法kill掉用户进程的两种解决方法如下: 1.先锁定用户.然后查询进程号,最后删除对应的进程.在删除对应的用户 SQL>alter user ...