使用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下使用SMTP发邮件的代码
Jan 10 PHP
php中的数组操作函数整理
Aug 18 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
PHP实现的堆排序算法详解
Aug 17 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 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环境搭建最新方法
2006/09/05 PHP
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
php的字符串用法小结
2010/06/08 PHP
php 字符串替换的方法
2012/01/10 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
PHP进程同步代码实例
2015/02/12 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
js 模拟气泡屏保效果代码
2010/07/10 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
聚美优品的广告词
2014/03/14 职场文书
2014年环保工作总结
2014/11/26 职场文书
体育教师个人总结
2015/02/09 职场文书
单独二胎证明
2015/06/24 职场文书
获奖感言怎么写
2015/07/31 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL