使用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 相关文章推荐
杏林同学录(一)
Oct 09 PHP
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 PHP
生成静态页面的php函数,php爱好者站推荐
Mar 19 PHP
攻克CakePHP系列二 表单数据显示
Oct 22 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
PHP针对多用户实现更换头像功能
Sep 04 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 PHP
PHP预定义接口――Iterator用法示例
Jun 05 PHP
PHP基于ip2long实现IP转换整形
Dec 11 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
php5中类的学习
2008/03/28 PHP
php数组编码转换示例详解
2014/03/11 PHP
如何使用php实现评委评分器
2015/07/31 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
Js基础学习资料
2010/11/23 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
python 递归相关知识总结
2021/03/03 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
厂长岗位职责
2014/02/19 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
采购员岗位职责
2015/02/03 职场文书
世界文化遗产导游词
2015/02/13 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
Win11开始菜单添加休眠选项
2022/04/19 数码科技