使用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
一个PHP+MSSQL分页的例子
Oct 09 PHP
第一节--面向对象编程
Nov 16 PHP
珊瑚虫IP库浅析
Feb 15 PHP
一些被忽视的PHP函数(简单整理)
Apr 30 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
May 08 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
php中通用的excel导出方法实例
Dec 30 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 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
如何使用GDB调试PHP程序
2015/12/08 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
PHP学习笔记之session
2018/05/06 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
vuex的使用步骤
2021/01/06 Vue.js
python中的全局变量用法分析
2015/06/09 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
python实现随机漫步算法
2018/08/27 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
python实现图片压缩代码实例
2019/08/12 Python
Python PIL图片添加字体的例子
2019/08/22 Python
python__name__原理及用法详解
2019/11/02 Python
市场部专员岗位职责
2013/11/30 职场文书
年度考核自我评价
2014/01/25 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
python爬虫--selenium模块
2021/03/31 Python