ThinkPHP配置簡單的mysql讀寫分離


ThinkPHP內置了分布式數據庫的支持,包括主從式數據庫的讀寫分離,但是分布式數據庫必須是相同的數據庫類型。

配置DB_DEPLOY_TYPE 為1 可以采用分布式數據庫支持。如果采用分布式數據庫,定義數據庫配置信息的方式如下:

<?php
return array(
    'DB_DEPLOY_TYPE' => 1, // 設置分布式數據庫支持
    'DB_RW_SEPARATE' => true, // 分布式數據庫的讀寫是否分離
    'DB_TYPE' => 'mysql', // 數據庫類型
    'DB_HOST' => '192.168.33.110,192.168.33.111,192.168.33.112', // 數據庫服務器地址
    'DB_NAME' => 'kp_account', // 數據庫名稱
    'DB_USER' => 'root,root,root', // 數據庫用戶名
    'DB_PWD' => '', // 數據庫密碼
    'DB_PORT' => '3306,3306,3306', // 數據庫端口
    'DB_PREFIX' => 'acc_', // 數據表前綴
    'DB_MASTER_NUM' => 2
);

  

在讀寫分離的情況下,默認第一個數據庫配置是主服務器的配置信息,負責寫入數據,如果設置了DB_MASTER_NUM參數,則可以支持多個主服務器寫入。其它的都是從數據庫的配置信息,負責讀取數據,數量不限制。每次連接從服務器並且進行讀取操作的時候,系統會隨機進行在從服務器中選擇。

還可以設置DB_SLAVE_NO 指定某個服務器進行讀操作。

小結:

  TP框架內置的分布式數據庫處理,在默認的情況下,如果沒有設置DB_MASTER_NUM參數,就會是默認第一個數據庫作為寫操作,其他是讀數據庫;如果設置了DB_MASTER_NUM參數,例如上面的數據庫配置信息里面把DB_MASTER_NUM參數設置為2,在沒有並發的情況下,寫操作一直會是192.168.33.111這個數據庫;有不對的地方還望多多指教!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM