項目想要數據庫讀寫分離,須要配置兩個方面,一個是數據庫配置,另外一個是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; //刷新