使用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扩展图文教程
Dec 12 PHP
php 图片加水印与上传图片加水印php类
May 12 PHP
php URL验证正则表达式
Jul 19 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
PHP实现验证码校验功能
Nov 16 PHP
PHP xpath提取网页数据内容代码解析
Jul 16 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 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
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
Python中对列表排序实例
2015/01/04 Python
python生成器表达式和列表解析
2016/03/10 Python
详解Python文本操作相关模块
2017/06/22 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
实习求职信
2013/12/01 职场文书
教师实习自我鉴定
2013/12/11 职场文书
影子教师研修方案
2014/06/14 职场文书
旷课检讨书500字
2014/10/14 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
《社戏》教学反思
2016/02/22 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python