溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

利用Yii2怎么配置一個(gè)主從數(shù)據(jù)庫(kù)

發(fā)布時(shí)間:2020-12-11 15:35:46 來(lái)源:億速云 閱讀:237 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

利用Yii2怎么配置一個(gè)主從數(shù)據(jù)庫(kù)?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

前言

MySQL主從同步是目前使用比較廣泛的數(shù)據(jù)庫(kù)架構(gòu),技術(shù)比較成熟,配置也不復(fù)雜,特別是對(duì)于負(fù)載比較大的網(wǎng)站,主從同步能夠有效緩解數(shù)據(jù)庫(kù)讀寫(xiě)的壓力。以前在使用yii1的時(shí)候,主從數(shù)據(jù)庫(kù)的支持沒(méi)有那么方便,只能寫(xiě)上多個(gè)DB的components,然后在AR的getDB中返回相應(yīng)的db。這樣也可以用來(lái)對(duì)付主從數(shù)據(jù)庫(kù)

實(shí)現(xiàn)方法

Yii2則已經(jīng)解決這個(gè)問(wèn)題,直接在代碼中進(jìn)行處理即可:

PHP代碼

'db' =>[ 
   'class' => 'yii\db\Connection', 
 
  // 配置主服務(wù)器 
  'dsn' => 'dsn for master server', 
  'username' => 'master', 
  'password' => '', 
  'charset' => 'utf8', 
  'tablePrefix' => 'php_',//默認(rèn)為空 
 
  // 配置從服務(wù)器 
  'slaveConfig' => [ 
    'username' => 'slave', 
    'password' => '', 
    'charset' => 'utf8', 
   'tablePrefix' => 'php_', 
    'attributes' => [ 
      // use a smaller connection timeout 
      PDO::ATTR_TIMEOUT => 10, 
    ], 
   
  ], 
];

是不是感覺(jué)超級(jí)方便,而不止是這樣,你還可以配置從服務(wù)器組:

PHP代碼

'db'=>[ 
  //...上面是一些標(biāo)準(zhǔn)配置 
  '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'], 
  ],  
]

更值得稱(chēng)贊的是,主服務(wù)器也是多個(gè)主服務(wù)器的配置就是下面這樣,其中字符編碼集,表前綴等設(shè)置參考上面的。

PHP代碼

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

關(guān)于利用Yii2怎么配置一個(gè)主從數(shù)據(jù)庫(kù)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI