首頁  >  文章  >  php教程  >  使用Yii2實現主從資料庫設置

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

高洛峰
高洛峰原創
2016-12-12 09:52:401761瀏覽

前言

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
];

   

PHP碼不只這樣,你還可以設定從伺服器群組:

PHP程式碼
rrreee

   

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

PHP代碼

rrreee

   


果然 是輕輕鬆鬆啊。 🎜🎜當然 如果你想更輕鬆的使用,這些,其實就是得用YII2的AR。你就用不著改程式碼了。 。 🎜🎜🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn