ThinkPHP的主从数据库配置

Thinkphp 框架本身是支持读写分离的,如何做呢?

最简单的做法是在配置文件中修改:

PHP代码

  1. ‘DB_TYPE‘=> ‘mysql‘,
  2. ‘DB_DEPLOY_TYPE‘ => 1,  //开打支持多服务器
  3. ‘DB_RW_SEPARATE‘=>true, //读写<strong>分离</strong>分开
  4. ‘DB_HOST‘=> ‘192.168.100.78,192.168.100.60‘, // 数据库服务器地址 master(写)/slave(读)
  5. ‘DB_NAME‘=>‘test‘,
  6. ‘DB_USER‘=>‘root‘,
  7. ‘DB_PWD‘=>‘root‘,
  8. ‘DB_PREFIX‘ => ‘fav_‘,

默认第一台数据库78是主数据库,负责写入操作,第二台60负责读操作,Thinkphp 会自动识别读和写,然后分配链接对应的数据库,来达到读写分离的效果。

注意事项:

1. 如果要设置分布式数据库,暂时不支持DB_DSN方式配置。

2.如果你当前采用了分布式数据库,并且设置了读写分离的话,query方法始终是在读服务器执行,因此query方法对应的都是读操作,而不管你的SQL语句是什么。

3.如果你当前采用了分布式数据库,并且设置了读写分离的话,execute方法始终是在写服务器执行,因此execute方法对应的都是写操作,而不管你的SQL语句是什么。

因此,‘DB_DSN‘=> ‘mysql:host=192.168.100.60;dbname=51fanli_cang‘, 这种方式不支持主从分离,需要改。

当采用原生态的sql语句进行写入操作的时候,要用execute,读操作要用query,切记,否则乱掉了。

时间: 2024-11-02 09:15:34

ThinkPHP的主从数据库配置的相关文章

mysql主从数据库配置

在这里吧昨天做的主从数据库配置记录下来,免得以后折腾 数据库主从配置心得: master : 192.168.16.247 slave1 : 192.168.16.248 1 修改配置文件 /etc/mysql/my.cnf(如果my.cnf已有该配置项,则相应的进行修改) 主数据库: server-id = 1 log-bin = mysql-bin log-bin-index = mysql-bin.index #log_bin = /var/log/mysql/mysql-bin.log

ThinkPHP连接主从数据库

config.php文件设置如下: return array( 'URL_MODE'=>0,   'DB_TYPE'=>'mysql',   'DB_HOST'=>'localhost,192.168.1.2',//两台数据库服务器   'DB_PORT'=>'3306',   'DB_NAME'=>'thinkphptest',//如果数据库名相同,不用定义多个,如果不相同与服务器依次对应   'DB_USER'=>'root',   'DB_PWD'=>'pa

Spring JDBC主从数据库配置

通过昨天学习的自定义配置注释的知识,探索了解一下web主从数据库的配置: 背景:主从数据库:主要是数据上的读写分离: 数据库的读写分离的好处? 1. 将读操作和写操作分离到不同的数据库上,避免主服务器出现性能瓶颈: 2. 主服务器进行写操作时,不影响查询应用服务器的查询性能,降低阻塞,提高并发: 3. 数据拥有多个容灾副本,提高数据安全性,同时当主服务器故障时,可立即切换到其他服务器,提高系统可用性: 读写分离的基本原理就是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELE

Sql Server 主从数据库配置

网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求:这时候我们可以考虑使用主从库.主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的查询操作;从库负责查询较旧数据,做一些对实效性要求较小的分析,报表生成的工作.这样做将数据库的压力分担到两台服务器上从而保证整个系统响应的及时性.如果还无法满足业务需求,我们就要考虑创建服务器群,这里我们不做考虑! 1. 打开sql server企业管理器,在对象资源管理器里面选择复制à本地发布,右

[转]Sql Server 主从数据库配置

本文转自:http://www.cnblogs.com/yukaizhao/archive/2010/06/02/sql-server-master-slave-mode.html 网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求:这时候我们可以考虑使用主从库.主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的查询操作;从库负责查询较旧数据,做一些对实效性要求较小的分析,报表生成的工作.这样做将数据库的压力分担到两台服务器上从

spring-spring mvc-mybatis 实现主从数据库配置

一.配置文件 1.spring-mybatis.xml master_driverUrl=jdbc:mysql://localhost:3306/shiro?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true master_username=root master_password=12345 slave_driverUrl=j

thinkphp mongo模型数据库配置

今天尝试使用thinkphp中的mongo模型,发现总是会报错 Call to a member function selectCollection() on a non-object 找了一下原因,发现是配置文件未导入,导致无法连接数据库和实例化模型.看了一下配置文件,并没有任何错误,配置文件如下 return array( //'配置项'=>'配置值' 'DB_CONFIG' => array('DB_TYPE' => 'mongo', 'DB_HOST' => 'localh

Spring+Hibernate框架下Mysql读写分离、主从数据库配置

1. 配置AOP切面类 DataSourceAdvice.java package until; import java.lang.reflect.Method; import org.springframework.aop.AfterReturningAdvice; import org.springframework.aop.MethodBeforeAdvice; import org.springframework.aop.ThrowsAdvice; public class DataSo

主从数据库架构配置

在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一.尤其是在大规模系统中,数据库集群已经成为必备的配置之一.集群的好处主要有:查询负载.数据库复制备份等. MySQL数据库支持数据库的主从复制功能,因此在集群方面具有其独特的优势.众多国内外大型网站架构体系中,均采用了MySQL的主从数据库配置来实现 查询负载.数据库热备等功能.本人在实际的Web项目中也涉及到这一需求,在此将如何配置实现做个简单小结. 1.实验环境 主库:Ubuntu  IP:192.168.1.189 从库:Ub