使用Yii2实现主从数据库设置


Posted in PHP onNovember 20, 2016

前言

MySQL主从同步是目前使用比较广泛的数据库架构,技术比较成熟,配置也不复杂,特别是对于负载比较大的网站,主从同步能够有效缓解数据库读写的压力。以前在使用yii1的时候,主从数据库的支持没有那么方便,只能写上多个DB的components,然后在AR的getDB中返回相应的db。这样也可以用来对付主从数据库

实现方法

Yii2则已经解决这个问题,直接在代码中进行处理即可:

PHP代码

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

是不是感觉超级方便,而不止是这样,你还可以配置从服务器组:

PHP代码

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

更值得称赞的是,主服务器也是多个主服务器的配置就是下面这样,其中字符编码集,表前缀等设置参考上面的。

PHP代码

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

果然 是轻轻松松啊。

当然 如果你想更轻松的使用,这些,其实就是得用YII2的AR。你就用不着改代码了。。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
自己在做项目过程中学到的PHP知识收集
Aug 20 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
php上传中文文件名乱码问题处理方案
Feb 03 PHP
php按单词截取字符串的方法
Apr 07 PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
php 如何获取文件的后缀名
Jun 05 PHP
php封装的验证码工具类完整实例
Oct 19 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
通过源码解析Laravel的依赖注入
Jan 22 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 PHP
php 二维数组时间排序实现代码
Nov 19 #PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 #PHP
php socket通信简单实现
Nov 18 #PHP
php微信开发之自定义菜单实现
Nov 18 #PHP
php微信开发之百度天气预报
Nov 18 #PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 #PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 #PHP
You might like
phpfans留言版用到的install.php
2007/01/04 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
JS 文件传参及处理技巧分析
2010/05/13 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
Python 用户登录验证的小例子
2013/03/06 Python
python的dict,set,list,tuple应用详解
2014/07/24 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
浅谈Python爬虫基本套路
2019/03/25 Python
django中使用POST方法获取POST数据
2019/08/20 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
python开发入门——列表生成式
2020/09/03 Python
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
银行实习生自我鉴定范文
2013/09/19 职场文书
大学生个人总结的自我评价
2013/10/05 职场文书
建筑人员岗位职责
2013/12/25 职场文书
办理退休介绍信
2014/01/09 职场文书
销售人员自我评价
2014/02/01 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
安全生产计划书
2014/05/04 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL