使用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 09 PHP
php 使用post,get的一种简洁方式
Apr 25 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
本地计算机无法启动Apache故障处理
Aug 08 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
apache和PHP如何整合在一起
Oct 12 PHP
php文件上传、下载和删除示例
Aug 28 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
Laravel利用gulp如何构建前端资源详解
Jun 03 PHP
PHP预定义超全局数组变量小结
Aug 20 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
php设计模式 Proxy (代理模式)
2011/06/26 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
学习jquery之一
2007/04/27 Javascript
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS