使用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 强制性文件下载功能的函数代码(任意文件格式)
May 26 PHP
PHP多线程抓取网页实现代码
Jul 22 PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 PHP
一致性哈希算法以及其PHP实现详细解析
Aug 24 PHP
javascript some()函数用法详解
Nov 13 PHP
浅谈PHP中Stream(流)
Jun 08 PHP
php基于session实现数据库交互的类实例
Aug 03 PHP
php使用正则验证中文
Apr 06 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
Jun 21 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
Dec 05 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 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
Terran建筑一览
2020/03/14 星际争霸
利用PHP实现短域名互转
2013/07/05 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
AngularJS内置指令
2015/02/04 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
Python实现FM算法解析
2019/06/18 Python
Django如何实现上传图片功能
2019/08/16 Python
Python使用python-docx读写word文档
2019/08/26 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
领导党性分析材料
2014/02/15 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
校本研修个人总结
2015/02/28 职场文书
预备党员考察意见范文
2015/06/01 职场文书
春风化雨观后感
2015/06/11 职场文书
羊脂球读书笔记
2015/06/30 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
在redisCluster中模糊获取key方式
2021/07/09 Redis
Python使用永中文档转换服务
2022/05/06 Python