前言

许多数据库支持数据库复制来获得更好的数据库可用性,以及更快的服务器响应时间,减少数据库的压力。通过数据库复制功能,数据从所谓的主服务器被复制到从服务器。主服务器做增删改,而从服务器做查询。

读写分离前提条件:linux数据库主从同步配置

两个服务器的数据同步是读写分离的前提条件,但这不在yii2读写分离教程内,yii2的数据库读写分离配置,仅仅实现了在主库读写,在从库查询,那么我们首先要配置主从服务器的数据同步。详情查看linux数据库主从同步配置

附:配置同步成功,后因误操作或者其他原因导致的同步失效,如何排查问题? 查看:mysql数据主从同步失败解决方案

读写分离配置

linux主从服务器数据库同步完成之后,我们就可以开始yii2的读写分离配置,官方也有这方面的文档,但说的并不清楚,也没有实际的例子,我在这里加以完善。

1、打开我们的数据库配置文件common\config\main-local.php在db属性中做如下配置:

'db' => [
    'class' => 'yii\db\Connection',
     
    // 配置主服务器
    'dsn' => 'mysql:host=192.168.0.1;dbname=hyii2',
    'username' => 'root',
    'password' => 'root',
    'charset' => 'utf8',
     
    // 配置从服务器
    'slaveConfig' => [
        'username' => 'root',
        'password' => 'root',
        'attributes' => [
            // use a smaller connection timeout
            PDO::ATTR_TIMEOUT => 10,
        ],
        'charset' => 'utf8',
    ],
     
    // 配置从服务器组
    'slaves' => [
            ['dsn' => 'mysql:host=192.168.0.2;dbname=hyii2'],
        ],
],

如上配置就能实现yii2数据库读写分离的操作,很简单,只要一个配置就ok了,读写分离的功能由后台代码自动完成,调用者无须关心。

上面只是一个一主一从的配置,如果要一主多从,或者多主多从,参考此例以及官方文档即可完成。 官方文档


zacklee
704 声望56 粉丝