分布式数据库
ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。配置DB_DEPLOY_TYPE 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下:
- //在项目配置文件里面定义
- return array(
- //分布式数据库配置定义
- '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,
CURD操作系统会自动判断当前执行的方法的读操作还是写操作,如果你用的是原生SQL,那么需要注意系统的默认规则:
写操作必须用模型的execute方法,读操作必须用模型的query方法,否则会发生主从读写错乱的情况。