前言
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'], ], ]
'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 ];
PHP程式碼
rrreee
PHP代碼
rrreee