tp3分布式session mysql_分布式数据库支持
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_分布式数据库支持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql正斜杠_MySQL中的正斜杠和
- 下一篇: 安卓获取浏览器上网记录_Android