Home > php教程 > PHP开发 > Use Yii2 to implement master-slave database settings

Use Yii2 to implement master-slave database settings

高洛峰
Release: 2016-12-12 09:52:40
Original
1850 people have browsed it

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,
    ],
    
  ],
];
Copy after login

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'],
  ], 
]
Copy after login

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
];
Copy after login

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. .


Related labels:
source:php.cn
Statement of this Website
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
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template