ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。

配置`DB_DEPLOY_TYPE` 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下:

~~~

//分布式数据库配置定义

'DB_DEPLOY_TYPE'=> 1, // 设置分布式数据库支持

'DB_TYPE' => 'mysql', //分布式数据库类型必须相同

'DB_HOST' => '192.168.0.1,192.168.0.2',

'DB_NAME' => 'thinkphp', //如果相同可以不用定义多个

'DB_USER' => 'user1,user2',

'DB_PWD' => 'pwd1,pwd2',

'DB_PORT' => '3306',

'DB_PREFIX' => 'think_',

~~~

连接的数据库个数取决于DB_HOST定义的数量,所以即使是两个相同的IP也需要重复定义,但是其他的参数如果存在相同的可以不用重复定义,例如:

~~~

'DB_PORT'=>'3306,3306'

~~~

~~~

'DB_PORT'=>'3306'

~~~

等效。

~~~

'DB_USER'=>'user1',

'DB_PWD'=>'pwd1',

~~~

~~~

'DB_USER'=>'user1,user1',

'DB_PWD'=>'pwd1,pwd1',

~~~

等效。

还可以设置分布式数据库的读写是否分离,默认的情况下读写不分离,也就是每台服务器都可以进行读写操作,对于主从式数据库而言,需要设置读写分离,通过下面的设置就可以:

~~~

'DB_RW_SEPARATE'=>true,

~~~

在读写分离的情况下,默认第一个数据库配置是主服务器的配置信息,负责写入数据,如果设置了`DB_MASTER_NUM`参数,则可以支持多个主服务器写入。其它的都是从数据库的配置信息,负责读取数据,数量不限制。每次连接从服务器并且进行读取操作的时候,系统会随机进行在从服务器中选择。

还可以设置`DB_SLAVE_NO` 指定某个服务器进行读操作。

> 3.2.3版本开始,如果从数据库连接错误,会自动切换到主数据库连接。

调用模型的CURD操作的话,系统会自动判断当前执行的方法的读操作还是写操作,如果你用的是原生SQL,那么需要注意系统的默认规则: **写操作必须用模型的execute方法,读操作必须用模型的query方法**,否则会发生主从读写错乱的情况。

> 注意:主从数据库的数据同步工作不在框架实现,需要数据库考虑自身的同步或者复制机制。

tp3分布式session mysql_分布式数据库支持相关推荐

  1. php分布式session问题,分布式session一致性问题

    1,什么是session session 是客户端与服务器通讯会话技术,比如用户登陆,会将登陆之后,将用户信息存入在session中 2,session 的原理 3,简单的session 例子 @Re ...

  2. 分布式session的实现方式

    分布式session的实现方式 引言 首先session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的 jsessionid cookie ...

  3. Java Web学习总结(20)——基于ZooKeeper的分布式session实现

    1.   认识ZooKeeper ZooKeeper-- "动物园管理员".动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始 ...

  4. ASP.NET Core中间件实现分布式 Session(转载)

    ASP.NET Core中间件实现分布式 Session 1. ASP.NET Core中间件详解 1.1. 中间件原理 1.1.1. 什么是中间件 1.1.2. 中间件执行过程 1.1.3. 中间件 ...

  5. java redis实现session共享_redis实现分布式session共享

    在讲解redis分布式session共享之前,我们先聊聊tomcat中session管理机制,包括:请求过程中session操作,sessionid解析过程,servlet获取session流程,以及 ...

  6. 分布式Session一致性概述

    分布式Session一致性问题 什么是SessionSession 是客户端与服务器通讯会话技术, 比如浏览器登陆.记录整个浏览会话信息 分布式SESSION一致性的问题,分布式SESSION到底如何 ...

  7. 基于Spring Session实现JIM分布式Session

    基于Spring Session实现JIM分布式Session 前引 在实际项目中,应用程序经常会以集群方式部署线上,一般来说无状态的应用程序是理想的部署方式,一旦应用程序拥有状态(比如Session ...

  8. 170222、使用Spring Session和Redis解决分布式Session跨域共享问题

    使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...

  9. Spring Boot(十一)Redis集成从Docker安装到分布式Session共享

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并 ...

最新文章

  1. 【深度学习】RetinaNet 代码完全解析
  2. 正余弦函数的Talor近似
  3. jasmine.objectContaining 的单步调试
  4. 五、Hashtable与HashMap的区别
  5. python中fd和rt是什么意思_python中fd()是什么
  6. idft重建图像 matlab_利用 MATLAB 编程,打开一幅图像,对其进行 DFT 变换,并置其不同区域内的系数为零,进行 IDFT ,观察其输出效果。_学小易找答案...
  7. 插件开发之360 DroidPlugin源码分析(四)Activity预注册占坑
  8. MATLAB中基于GUI的噪声抑制imnoise,medfilt2命令
  9. eplan 电箱布局_Eplan 的从头到尾完成3D布局步骤说明
  10. android 模拟器 pubg,雷电安卓模拟器怎么玩绝地求生刺激战场 PC端带你愉快吃鸡...
  11. 微信小程序 SEO 指南
  12. RFC1738 - 统一资源定位器URL
  13. 中关村硬科技孵化器首次合作建科技成果转化创新平台
  14. css编程设置网页背景,网页中cssbackground背景图和背景颜色的设置方法
  15. Scheduler (Long-term,Short-term, Medium-term Scheduler) Dispatcher
  16. Excel设置下拉选项的方法
  17. 创业干货:在众说纷纭中找到前进的方向
  18. 行业站seo体验,把访客当傻瓜你才能赢!
  19. 【MySQL】使用MySQL
  20. linux怎么卸载fastdfs,FastDFS5.10卸载,centos卸载FastDFS(二)

热门文章

  1. OpenCV 笔记(03)— 读取视频、通过摄像头采集视频、采集视频 canny 边缘检测
  2. 【牛腩新闻发布系统】整合前台04
  3. python pycharm 包 安装问题
  4. 芯片初创公司一亿融资可以烧多久
  5. X-Deep Learning功能模块
  6. MindSpore基本原理
  7. TensorRT深度学习训练和部署图示
  8. 基于TensorRT车辆实时推理优化
  9. C++ string字符串的比较是否相等
  10. Android 获取手机系统信息