ThinkPHP5分佈式數據庫讀寫分離

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

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

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

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

第一個IP地址默認是主庫,鏈接的數據庫個數取決於hostname定義的數量,因此即便是兩個相同的IP也須要重複定義,但其餘參數若是存在相同的能夠不用重複定義,如:app

 'hostport' => '3306,3306',

測試

 'hostport' => '3306',

等效。spa

2、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";
        }
    }
}

分別進行了讀操做和寫操做,也都請求成功了,下面從日誌上看是否真正讀寫分離了code

  我是先添加數據,再查詢,從上面的日誌能夠看出,寫操做(添加、修改、刪除)是在192.168.8.102主服務器上,讀操做(查詢)是在192.168.8.103從服務器上htm

若是出現數據庫訪問權限問題,能夠使用以下方法提權

GRANT ALL PRIVILEGES ON *.* TO '帳號'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;   //提權
flush privileges;  //刷新
相關文章
相關標籤/搜索