使用Yii2實現主從資料庫設定

NO IMAGE

前言

MySQL主從同步是目前使用比較廣泛的資料庫架構,技術比較成熟,配置也不復雜,特別是對於負載比較大的網站,主從同步能夠有效緩解資料庫讀寫的壓力。以前在使用yii1的時候,主從資料庫的支援沒有那麼方便,只能寫上多個DB的components,然後在AR的getDB中返回相應的db。這樣也可以用來對付主從資料庫

實現方法

Yii2則已經解決這個問題,直接在程式碼中進行處理即可:

PHP程式碼


'db' =>[ 
'class' => 'yii\db\Connection', 
// 配置主伺服器 
'dsn' => 'dsn for master server', 
'username' => 'master', 
'password' => '', 
'charset' => 'utf8', 
'tablePrefix' => 'php_',//預設為空 
// 配置從伺服器 
'slaveConfig' => [ 
'username' => 'slave', 
'password' => '', 
'charset' => 'utf8', 
'tablePrefix' => 'php_', 
'attributes' => [ 
// use a smaller connection timeout 
PDO::ATTR_TIMEOUT => 10, 
], 
], 
]; 

是不是感覺超級方便,而不止是這樣,你還可以配置從伺服器組:

PHP程式碼


'db'=>[ 
//...上面是一些標準配置 
'slaves' => [ 
['dsn' => 'dsn for slave server 1'], 
['dsn' => 'dsn for slave server 2'], 
['dsn' => 'dsn for slave server 3'], 
['dsn' => 'dsn for slave server 4'], 
],  
] 

更值得稱讚的是,主伺服器也是多個主伺服器的配置就是下面這樣,其中字元編碼集,表字首等設定參考上面的。

PHP程式碼


'db'=>[ 
// 配置主伺服器 
'masterConfig' => [ 
'username' => 'master', 
'password' => '', 
'attributes' => [ 
// use a smaller connection timeout 
PDO::ATTR_TIMEOUT => 10, 
], 
], 
// 配置主伺服器組 
'masters' => [ 
['dsn' => 'dsn for master server 1'], 
['dsn' => 'dsn for master server 2'], 
], 
//other ...slaves 
]; 

果然 是輕輕鬆鬆啊。

當然 如果你想更輕鬆的使用,這些,其實就是得用YII2的AR。你就用不著改程式碼了。。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

您可能感興趣的文章:

Yii2實現跨mysql資料庫關聯查詢排序功能程式碼yii2 資料庫讀寫分離配置示例Yii2框架實現資料庫常用操作總結Yii2——使用資料庫操作彙總(增刪查改、事務)yii2.0資料庫遷移教程【多個資料庫同時同步資料】Yii2框架資料庫簡單的增刪改查語法小結YII2資料庫查詢實踐Yii2.0高階框架資料庫增刪改查的一些操作Yii2中SqlDataProvider用法示例Yii除錯SQL的常用方法Yii實現MySQL多資料庫和讀寫分離例項分析Yii除錯檢視執行SQL語句的方法Yii2資料庫操作常用方法小結