[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變化來確定配置是否生效
相關文章
- discuz 配置讀寫分離(主寫從讀)
- 配置\清除 MySQL 主從 讀寫分離MySql
- MYSQL 主從 + ATLAS 讀寫分離 搭建MySql
- MySQL主從複製讀寫分離MySql
- [Mysql]主從複製和讀寫分離MySql
- Mycat2+Mysql一主一從實現讀寫分離配置MySql
- Mysql-主從複製與讀寫分離MySql
- 搭建MySQL主從實現Django讀寫分離MySqlDjango
- 從節點崩了,還怎麼「主從讀寫分離」?
- MySQL從庫卡主了--讀寫分離也不能亂讀MySql
- 資料庫讀寫分離,主從同步實現方法資料庫主從同步
- MySQL運維15-一主一從讀寫分離MySql運維
- MySQL運維16-雙主雙從讀寫分離MySql運維
- Mycat中介軟體實現Mysql主從讀寫分離MySql
- Mycat讀寫分離、主從切換、分庫分表的操作記錄
- ShardingSphere(七) 讀寫分離配置,實現分庫讀寫操作
- MySQL 高可用架構:主從備份及讀寫分離MySql架構
- springboot+mybatis+druid實現mysql主從讀寫分離(五)Spring BootMyBatisUIMySql
- Linux系統MySQL配置主從分離LinuxMySql
- 搭建Redis“主-從-從”模式叢集並使用 RedisTemplate 實現讀寫分離Redis模式
- 帶貨直播系統,透過主從同步實現讀寫分離主從同步
- DM8配置讀寫分離叢集
- Mariadb之主從複製的讀寫分離
- MySQL怎麼實現主從同步和Django實現MySQL讀寫分離MySql主從同步Django
- 搭建Redis簡易叢集實現主從複製和讀寫分離Redis
- Linux下MySQL主從複製(GTID)+讀寫分離(ProxySQL)-實施筆記LinuxMySql筆記
- 搭建基於springmvc,ibatis的工程實現讀寫分離,配置分離SpringMVCBAT
- Redis哨兵模式(sentinel)學習總結及部署記錄(主從複製、讀寫分離、主從切換)Redis模式
- 寶塔 liunx redis 設定讀寫分離主從複製 + 哨兵自動值守Redis
- springboot多資料來源配合docker部署mysql主從實現讀寫分離Spring BootDockerMySql
- shardingjdbc + jpa 完成讀寫分離配置及資料分片JDBC
- Redis的讀寫分離Redis
- KunlunBase 讀寫分離方案
- Laravel讀寫分離原理Laravel
- MyCat分庫分表、讀寫分離
- (7)資料庫讀寫分離,主從同步實現方法(資料庫設定)資料庫主從同步
- 使用proxysql 1.4.14中介軟體實現mysql 5.7.26主從的讀寫分離MySql
- MySQL主從分離實現MySql
- 資料讀寫壓力大,讀寫分離