zoukankan      html  css  js  c++  java
  • thinkphp 分布式数据库支持

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

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

    1. //分布式数据库配置定义
    2. 'DB_DEPLOY_TYPE'=> 1, // 设置分布式数据库支持
    3. 'DB_TYPE' => 'mysql', //分布式数据库类型必须相同
    4. 'DB_HOST' => '192.168.0.1,192.168.0.2',
    5. 'DB_NAME' => 'thinkphp', //如果相同可以不用定义多个
    6. 'DB_USER' => 'user1,user2',
    7. 'DB_PWD' => 'pwd1,pwd2',
    8. 'DB_PORT' => '3306',
    9. 'DB_PREFIX' => 'think_',

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

    1. 'DB_PORT'=>'3306,3306'

    1. 'DB_PORT'=>'3306'

    等效。

    1. 'DB_USER'=>'user1',
    2. 'DB_PWD'=>'pwd1',

    1. 'DB_USER'=>'user1,user1',
    2. 'DB_PWD'=>'pwd1,pwd1',

    等效。

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

    大理石平台厂家

    1. 'DB_RW_SEPARATE'=>true,

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

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

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

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

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

     
  • 相关阅读:
    notepad++ 安装
    Git 安装
    C 字符串常量 数据类型
    vue路由传参query和params的区别
    mysql 在 centos 上安装,做成服务,且开机启动 步骤
    全网最详细Apache Kylin1.5安装(单节点)和测试案例 ---> 现在看来 kylin 需要 安装到Hadoop Master 节点上
    Kylin build cube step 2 报错(Kylin 安装在slave 节点上)
    Kylin build cube step 2 报错
    Kylin 环境 搭建 成功
    Kylin 环境 搭建 报错
  • 原文地址:https://www.cnblogs.com/furuihua/p/11792408.html
Copyright © 2011-2022 走看看