前言
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。你就用不著改代碼了。。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。