Home  >  Article  >  php教程  >  Use Yii2 to implement master-slave database settings

Use Yii2 to implement master-slave database settings

高洛峰
高洛峰Original
2016-12-12 09:52:401813browse

Foreword

MySQL master-slave synchronization is a widely used database architecture at present. The technology is relatively mature and the configuration is not complicated. Especially for websites with heavy loads, master-slave synchronization can effectively alleviate the pressure of database reading and writing. When using yii1 in the past, the support of master-slave database was not so convenient. You could only write components of multiple DBs, and then return the corresponding db in AR's getDB. This can also be used to deal with the master-slave database

Implementation method

Yii2 has solved this problem and can be processed directly in the code:

PHP code

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

Isn’t it super convenient? Not only that, you can also configure the slave server group:

PHP code

'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'],
  ], 
]

What’s more commendable is that the master server is also a configuration of multiple master servers, which is as follows, including character encoding set, table prefix Please refer to the settings above.

PHP code

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

It’s really easy.

Of course, if you want to use it more easily, you actually need to use the AR of YII2. You don't need to change the code. .


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn