1. 程式人生 > >【Laravel】一主多從讀寫分離配置

【Laravel】一主多從讀寫分離配置

錯誤範例

最近要配置laravel的讀寫分離,找了半天資料都是類似下面的這種形式。

'mysql' => array(
    'read' => array(
        'host' => '192.168.1.1',
     'host' => '192.168.1.3',
    ),
    'write' => array(
        'host' => '196.168.1.2',
'host' => '192.168.1.4',
    ),
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

一個array配置兩個相同的key也是醉了,而且各個網站都是這麼寫的,爬資料能不能走點心。

求根溯源

無奈只能扒程式碼

在DB的連線工廠中找到以下程式碼

 .../vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php

/**
 * 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];
}
工廠類通過隨機獲取讀DB配置來進行讀取操作,由此可推出DB的配置應該如下
'mysql' => [
    'driver'   => 'mysql',
    'write'    => [
        'host' => '192.168.1.180',
    ],
    'read'     => [
        ['host' => '192.168.1.182'],
        ['host' => '192.168.1.179'],
    ],
    ...
]

驗證

開啟MySQL的general-log,通過tail -f的方式監控log變化來確定配置是否生效。

相關推薦

Laravel分離配置

錯誤範例 最近要配置laravel的讀寫分離,找了半天資料都是類似下面的這種形式。 'mysql' => array( 'read' => array( 'host' => '192.168.1.1',      'host' =

003.MMM雙-雙分離部署

一 前期規劃 1.1 主機規劃

MMM雙-雙分離部署

row 有一個 二進制 cti dia status 接管 list time 目錄 一 前期規劃 1.1 主機規劃 1.2 虛擬IP規劃 1.3 用戶列表 1.4 整體架構 1.4 hosts修改 1.5 NTP配置 二 部署MySQL 2.1 安裝MySQL

MyCAT主要作用、分離、負載均衡、垂直切分、水平切分概述

主要作用: 1作為分散式資料庫中間層使用。 MyCAT由Java開發,理論上說所有可以使用JDBC連線的關係型資料庫和非關係型資料庫都能使用MyCAT。 2.對主從資料庫的讀寫分離、讀的負載均衡。 如果不用MyCAT,在每一個訪問這套資料庫的應用中都要實現讀寫分離的邏

資料庫資料庫負載均衡、分離技術

隨著網際網路應用的廣泛普及,海量資料的儲存和訪問成為了系統設計的瓶頸問題。對於一個大型的網際網路應用,每天百萬級甚至上億的PV無疑對資料庫造成了相當高的負載。對於系統的穩定性和擴充套件性造成了極大的問題。 一、負載均衡技術 負載均衡叢集是由一組相互獨立的計算機系統構成,通過

EF通用數據層封裝類(支持分離

dto cte 功能 pes getc mes 工廠 好的 靈活 淺談orm 記得四年前在學校第一次接觸到 Ling to Sql,那時候瞬間發現不用手寫sql語句是多麽的方便,後面慢慢的接觸了許多orm框架,像 EF,Dapper,Hibernate,ServiceSta

MySQL主從(MySQL proxy Lua分離設置,同步配置,分庫分表方案)

否則 count user username 2個 ons 基礎 zxvf 路徑 Mysql Proxy Lua讀寫分離設置一.讀寫分離說明讀寫分離(Read/Write Splitting),基本的原理是讓主數據庫處理事務性增、改、刪操作(INSERT、UPDATE、DE

EF通用資料層封裝類(支援分離

原文: EF通用資料層封裝類(支援讀寫分離,一主多從) 淺談orm   記得四年前在學校第一次接觸到 Ling to Sql,那時候瞬間發現不用手寫sql語句是多麼的方便,後面慢慢的接觸了許多orm框架,像 EF,Dapper,Hibernate,ServiceStack.OrmLite 等。當

cool-2018-03-10-windows下實現mysql5.6分離、主從複製和

mysql壓縮包移步下載:mysql5.6--主從資料庫的安裝第一步:複製mysql到自定義目錄中,我現在放的是 E:\cool\mysql,資料庫叫3380第二步: 刪除3380\logs目錄下的所有日誌檔案第三步驟: 刪除3380\datas所有的log檔案(注意不是所有

使用spring實現分離(mysql主從複製)五:的實現

很多實際使用場景下都是採用“一主多從”的架構的,使用輪詢演算法實現,目前只需要修改DynamicDataSource即可。   1.1. 實現 import java.lang.reflect.Field; import java.util.ArrayList; impo

Mysql分離配置簡記

近期開發的系統中使用MySql作為資料庫,由於資料涉及到Money,所以不得不慎重。同時,使用者對最大訪問量也提出了要求。為了避免Mysql成為效能瓶頸並具備很好的容錯能力,特此實現主從熱備和讀寫分離。在此簡做紀要,以備日後所用! 一、配置主從 條件:兩臺PC,IP分別為1

資料庫MYSQL分離

近期開發的系統中使用MySql作為資料庫,由於資料涉及到Money,所以不得不慎重。同時,使用者對最大訪問量也提出了要求。為了避免Mysql成為效能瓶頸並具備很好的容錯能力,特此實現主從熱備和讀寫分離。在此簡做紀要,以備日後所用! 一、配置主從 條件:兩臺P

Mysql DBA 高級運維學習筆記-宕機庫切換繼續和庫同步過程

復制 導入數據 之間 pro vim 庫服務器 chan mas 優點 1.主庫master 宕機 登錄從庫show processlist\G 看兩個線程的更新狀態 mysql> show processlist\G ************************

Mysql復制數據

sock 是否 art str cor term 數據庫 啟動 ado 應用場景:外部僅僅訪問主數據庫(Mysql_Master),多個從數據庫(Mysql_Slave)做數據庫熱備份。一旦主數據庫宕機,從服務器負責處理數據實驗拓補圖: 實驗環

搭建MySQL————VMware Workstation 虛擬機nat網絡配置

VMware Workstation 虛擬機 虛擬網絡 nat連接 運行 VMware Workstation Pro 在桌面找到該圖標,雙擊運行即可,如果沒有安裝請下載安裝。流程編輯 ==》虛擬網絡編輯器 ==》 VMnet0 如果沒有 添加網絡 最後設置完後,點擊確定即可。 配置虛

MySQL

MySQL主192.168.65.128上配置/etc/my.cnf[root@localhost ~]# /etc/init.d/mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL.. SUCCESS!備份數據從1、192.168.65.

CentOS6.5配置MYSQL詳解

ali ati In restart 配置文件 left 主庫 vim 數據庫 一、環境 1 操作系統 :CentOS 6.5 2 數據庫版本:MySQL 5.6.27 3 主機A:192.168.1.1 (Master) 4 從機B:192.168.1.2 (

Centos7配置mysql主從:

表結構 .cn single 讀取 entos body 分享 posit bin-log mysql主從復制原理1.首先master將數據更新記錄到二進制binlog文件2.slave通過I/O線程向master請求binlog日誌文件指定位置之後的內容3.master接

mysql主從配置實現分離

配置文件 狀態 main ado man datadir lai community more 主從介紹 定義 Mysql主從又叫Replication、AB復制。簡單講就是A與B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,實現數據實時同步 mysql主從是

mysql 配置說明

背景 mysql 一主多從的場景是經常見的,具體的業務場景裡我們一般讀的壓力遠遠是大於寫的壓力,master我們可以用來做寫操作,slave用來做讀操作、備份,可以做到資料庫的負載均衡。 同步複製過程說明  (1) master將改變記錄到二進位制日誌(binary log)中(這些記