Yii2的主从数据库设置

原创
2016-06-23 13:01:34 682浏览

项目做大了,数据库主从还是不可少的。使用Yii框架开发,如何设置数据库的主从呢?其实很简单。

先说一个主数据库服务器和多个从数据库服务器的情况,修改配置文件 config/db.php ,其中 slaveConfig 里的为从服务器的公共部分,也可以设置到 slaves 里的各个从服务器的配置里。

'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,        ],        ],    // 配置从服务器组    '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'],    ],

还可以主服务器也是多个的那主服务器的配置就是下面的样子,其中字符编码集,表前缀等设置参考上面的。

// 配置主服务器    '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'],    ],

配置好了,那么如何使用呢,Yii这点做的特别好,因为你几乎不用修改你的代码,不用考虑你代码里的数据库操作如何使用主服务器配置还是从数据库配置,框架本身已经实现了。默认系统里 execut()函数操作的是主库,其他情况都操作从库,比如queryAll()。而且对于AR操作也是如此,因为他就是基于Yii::$app->db来实现的。

在Yii2中使用Pjax导致Yii2内联脚本载入失败的问题 http://www.linuxidc.com/Linux/2016-03/128949.htm

Yii2 实现修改密码功能 http://www.linuxidc.com/Linux/2015-07/120137.htm

Yii 用户登陆机制 http://www.linuxidc.com/Linux/2015-01/111602.htm

Yii中引入js和css文件 http://www.linuxidc.com/Linux/2015-01/111603.htm

Yii 不完全解决方案 http://www.linuxidc.com/Linux/2015-01/111606.htm

Yii CGridView 基本使用 http://www.linuxidc.com/Linux/2015-01/111607.htm

Yii框架分布式缓存的实现方案 http://www.linuxidc.com/Linux/2015-02/113828.htm

Yii 的详细介绍: 请点这里

Yii 的下载地址: 请点这里

本文永久更新链接地址: http://www.linuxidc.com/Linux/2016-06/132339.htm

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。