thinkphp 3.2分布式数据库读写分离扩展阅读

简介:
        thinkphp 3.2分布式数据库读写分离扩展阅读

        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 指定某个服务器进行读操作。

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

             注意:主从数据库的数据同步工作不在框架实现,需要数据库考虑自身的同步或者复制机制。
目录
相关文章
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
掌阅科技采用云原生数据库PolarDB,大幅降低使用成本,提升业务稳定性和扩展性
掌阅科技将数据库迁移到PolarDB后,数据压缩到之前的30%,整体成本节省50%。
75 0
|
2月前
|
分布式数据库 数据库 数据库管理
什么是分布式数据库
什么是分布式数据库
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
关系型分布式云原生数据库
PolarDB是阿里巴巴自主研发的下一代关系型分布式云原生数据库。在兼容传统数据库生态的同时,突破了传统单机硬件的限制,为用户提供大容量、高性能、高弹性的数据库服务。
23 1
|
2月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
44 2
|
22天前
|
编解码 人工智能 算法
Google Earth Engine(GEE)——高度可扩展的时间自适应反射率融合模型(HISTARFM)数据库
Google Earth Engine(GEE)——高度可扩展的时间自适应反射率融合模型(HISTARFM)数据库
10 0
|
27天前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
111 0
|
2月前
|
存储 SQL 分布式数据库
OceanBase X Flink 基于原生分布式数据库构建实时计算解决方案
OceanBase X Flink 基于原生分布式数据库构建实时计算解决方案
|
2月前
|
NoSQL 分布式数据库 MongoDB
分布式数据库-课程总结
分布式数据库-课程总结
|
2月前
|
存储 关系型数据库 数据库
请解释一下云数据库的扩展性和弹性。
请解释一下云数据库的扩展性和弹性。
15 0
|
3月前
|
NoSQL Java 应用服务中间件
2024年面试复盘大全500道:Redis+ZK+Nginx+数据库+分布式+微服务
今天分享给大家的都是目前主流企业使用最高频的面试题库,也都是 Java 版本升级之后,重新整理归纳的最新答案,会让面试者少走很多不必要的弯路。同时每个专题都做到了详尽的面试解析文档,以确保每个阶段的读者都能看得懂,同时这部分面试文档也是可以免费的提供给有需要的同学们学习的