使用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维护文件系统
Oct 09 PHP
杏林同学录(一)
Oct 09 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
php抓取页面的几种方法详解
Jun 17 PHP
php实现获取及设置用户访问页面语言类
Sep 24 PHP
Yii框架登录流程分析
Dec 03 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
实例讲解php数据访问
May 09 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 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 表单验证实现代码
2009/03/10 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
js实现点赞效果
2020/03/16 Javascript
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
python super的使用方法及实例详解
2019/09/25 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python 简单的调用有道翻译
2020/11/25 Python
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
药物学专业学生的自我评价
2013/10/27 职场文书
副厂长岗位职责
2014/02/02 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
老师对学生的寄语
2014/04/09 职场文书
煤矿安全承诺书
2014/05/22 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
争先创优心得体会
2014/09/12 职场文书
村委会贫困证明范本
2014/09/17 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
中学教师教学工作总结
2015/08/13 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书