ThinkPHP5分布式數據庫讀寫分離


項目想要數據庫讀寫分離,需要配置兩個方面,一個是數據庫配置,另一個是ThinkPHP5配置,前面寫過一篇關於MySQL讀寫分離配置的文章MySQL主從同步及讀寫分離,這篇介紹ThinkPHP5里怎么運用

主服務器ip:192.168.8.102,從服務器ip:192.168.8.103

一、修改TP5數據庫配置文件

需要修改服務器地址,用戶名,密碼,端口,數據庫部署方式,開啟讀寫分離

第一個IP地址默認是主庫,連接的數據庫個數取決於hostname定義的數量,所以即使是兩個相同的IP也需要重復定義,但其他參數如果存在相同的可以不用重復定義,如:

 'hostport' => '3306,3306',

 'hostport' => '3306',

等效。

二、TP5測試

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;

class Index extends Controller
{
    // 讀操作測試
    public function index()
    {
        
        $list = Db::table('user')->select();
        echo "<pre>";
        print_r($list);
    }

    // 寫操作測試
    public function curd()
    {
        
        $data['name'] = 'asdzxc';
        $data['age'] = 12;
        $res = Db::table('user')->insert($data);
        if ($res) {
            echo "success";
        }else{
            echo "error";
        }
    }
}

我執行的是先添加數據,再查詢,也都請求成功了,下面從日志上看是否真正讀寫分離了

  我是先添加數據,再查詢,從上面的日志可以看出,寫操作(添加、修改、刪除)是在192.168.8.102主服務器上,讀操作(查詢)是在192.168.8.103從服務器上

如果出現數據庫訪問權限問題,可以使用如下方法提權

GRANT ALL PRIVILEGES ON *.* TO '賬號'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;   //提權
flush privileges;  //刷新

 


免責聲明!

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



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