Yii2的主从数据库设置

项目做大了,数据库主从还是不可少的。使用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来实现的。

更多详细的可以参考官方文档 http://www.yiichina.com/doc/guide/2.0/db-dao

时间: 2024-11-05 02:33:07

Yii2的主从数据库设置的相关文章

MySQL 主从数据库设置

1.复制的介绍 MySQL 支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引 以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置. 从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新. 请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行.否则,你必须要小心,以避免用户对主服务器

Mysql读写分离与主从数据库设置方案

Mysql读写分离与主从数据库设置方案 亿仁网 18-10-0711:31 Mysql无非四个功能:增,删,改,读.而将增删改和读分离操作.这样有利于提高系统性能.下面是非常直观的操作: 1.配置: 两台服务器同配置的mysql如mysql5.7 PS:如果条件有限,一台也可以,只需要安装两个mysql服务(不同端口如3306,3307),只是这就有点违背效率初衷了 2.代码: 1.一般直接在代码层将mysql操作类的读写如update,insert与select * from进行路由分离.使之

mysql配置主从数据库

1.目的 1.1 实现数据备份 1.2 项目访问时可以实现读写分离,提高访问和操作数据的速度<读写分离好处> 2.背景 这次的主从配置主要实现主库数据的改变可以实现同步到从库中: 此次试验的主库为liunx<ubuntu4.8.2> 下mysql 5.6.19,从库为windows10 下mysql 5.6.24:  3.准备知识 3.1 在liunx下mysql的配置文件为: /etc/mysql/my.conf 3.2 在windows下mysql的配置文件为: mysqlpa

MySQL主从数据库同步延迟问题解决(转)

最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器. MySQL主从同步故障-Slave_SQL_Running: No http://www.linuxidc.com/Linux/2014-0

mysql主从数据库不同步的2种解决方法(转)

今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; 也正常. mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File | Position | Binlog_Do_DB | Binlo

SQL Server 2008 R2 主从数据库同步

一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2    DB: SQL Server 2008 R2 Hostname : CXMasterDB  IP: 192.168.1.224/24    dg: 192.168.1.1 DNS: 192.168.1.19    DNS: 202.96.209.133 从数据库服务器: OS:Windows Server 2008 R2    DB: SQL Server 2008 R2 Hostname : CXSla

SQL Server 2008 R2 主从数据库同步(日志传送的方式 Log Shipping)

注意事项: 1.为主从服务器添加新的系统用户并设置好密码: 2.主从服务器都开启SQL Server的代理服务,并设置为开机自动启动 3.在数据库配置管理其中把SQL Server服务和SQL Server的代理服务的登录信息设置为上边添加的系统用户,并设置好密码.(记得主从服务器都需要这样设置,不要忘记了,我都是忘记了,怎么弄都不行) 4.用户共享的文件目录,共享访问时需要密码,记得要先访问共享并记住凭证,不然会提示失败. 5.SQL Server的备份,是主库的数据库服务器自动备份数据库,生

MySQL数据库设置为只读及测试【转】

转自 mysql只读模式的设置方法与实验 - yumushui的专栏 - CSDN博客http://blog.csdn.net/yumushui/article/details/41645469 在MySQL数据库中,在进行数据迁移和从库只读状态设置时,都会涉及到只读状态和Master-slave的设置和关系. 经过实际测试,对于mysql单实例数据库和master库,如果需要设置为只读状态,需要进行如下操作和设置:      将MySQL设置为只读状态的命令: # mysql -uroot -

Mysql主从数据库架构的复制原理及配置详解

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收