[PHP]Larval主從讀寫分離配置
在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];
}
/**
* 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`]);
}
工廠類通過隨機獲取讀DB配置來進行讀取操作,由此可推出DB的配置應該如下
`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` => ``,
]
加強版,支援多主多從,支援獨立使用者名稱和密碼,配置如下
`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變化來確定配置是否生效
相關文章
- 配置\清除 MySQL 主從 讀寫分離MySql
- MySQL主從同步讀寫分離的叢集配置MySql主從同步
- MYSQL 主從 + ATLAS 讀寫分離 搭建MySql
- MySQL主從複製讀寫分離MySql
- MySQL主從複製與讀寫分離MySql
- 搭建MySQL主從實現Django讀寫分離MySqlDjango
- Mysql-主從複製與讀寫分離MySql
- mysql讀寫分離(PHP類)MySqlPHP
- MySQL從庫卡主了--讀寫分離也不能亂讀MySql
- Amoeba for MySQL讀寫分離配置MySql
- Mycat中介軟體實現Mysql主從讀寫分離MySql
- 資料庫讀寫分離,主從同步實現方法資料庫主從同步
- MySQL運維15-一主一從讀寫分離MySql運維
- MySQL運維16-雙主雙從讀寫分離MySql運維
- Mycat讀寫分離、主從切換、分庫分表的操作記錄
- linux 安裝mysql和主從配置 + Spring 基於註解配置mysql讀寫分離LinuxMySqlSpring
- Mycat讀寫分離配置實踐
- SQL Server AlwaysOn讀寫分離配置SQLServer
- MySQL 高可用架構:主從備份及讀寫分離MySql架構
- Spring+Hibernate框架下MySql讀寫分離,主從資料庫配置 (轉)Spring框架MySql資料庫
- MySQL主從複製架構搭建及讀寫分離測試MySql架構
- Linux系統MySQL配置主從分離LinuxMySql
- 帶貨直播系統,透過主從同步實現讀寫分離主從同步
- MySQL怎麼實現主從同步和Django實現MySQL讀寫分離MySql主從同步Django
- springboot+mybatis+druid實現mysql主從讀寫分離(五)Spring BootMyBatisUIMySql
- 搭建Redis簡易叢集實現主從複製和讀寫分離Redis
- 寶塔 liunx redis 設定讀寫分離主從複製 + 哨兵自動值守Redis
- Redis哨兵模式(sentinel)學習總結及部署記錄(主從複製、讀寫分離、主從切換)Redis模式
- Redis的讀寫分離Redis
- Laravel讀寫分離原理Laravel
- MySQL Amoeba讀寫分離MySql
- Amoeba for mysql讀寫分離MySql
- MySQL讀寫分離AtlasMySql
- mongodb的讀寫分離MongoDB
- mycat結合MySQL的雙主實現讀寫分離MySql
- MyCat分庫分表、讀寫分離
- Mycat 讀寫分離+分庫分表
- Spring配置RoutingDataSource實現mysql讀寫分離SpringMySql