摘要:之前寫過篇文章,分別是主從同步的原理主從同步實戰基于此,我們再實現簡單的讀寫分離,從而提高數據庫的負載能力。
1、Introduction
之前寫過2篇文章,分別是:
Mysql主從同步的原理
Myql主從同步實戰
基于此,我們再實現簡單的PHP+Mysql讀寫分離,從而提高數據庫的負載能力。
2、代碼實戰slave_select($sql); $this->res=$res; } //如果不是select,就連接master服務器 else { $res=$this->master_change($sql); $this->res=$res; } } /** * slave從庫返回sql查詢結果 * @param $sql * @return array */ private function slave_select($sql){ //該處只是隨機獲取slave節點的ip,當然,還可以采用其他算法獲取slave_ip $slave_server=$this->get_slave_ip(); $dsn="mysql:host=$slave_server;dbname=test"; $user="root"; $pass="123456"; $dbh=new PDO($dsn, $user, $pass); return $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); } /**master主庫返回sql執行結果 * @param $sql * @return int */ private function master_change($sql){ $master_server="192.168.33.22"; $dsn="mysql:host=$master_server;dbname=test"; $user="root"; $pass="123456"; $dbh=new PDO($dsn, $user, $pass); return $dbh->exec($sql); } /** * 隨機獲取slave-ip * @return mixed */ private function get_slave_ip(){ $slave_ips=["192.168.33.33","192.168.33.44"]; $count=count($slave_ips)-1; $random_key=mt_rand(0,$count); return $slave_ips[$random_key]; } /** * 獲取結果 * @return int */ public function get_res(){ return $this->res; } } $sql1 = "select * from t1"; $sql2 = "insert into t1 (name) values ("haha")"; $sql3 = "delete from t1 where id=1"; $sql4 = "update t1 set name="Jerry" where id=2"; $db = new Db($sql1); //$db = new Db($sql2); //$db = new Db($sql3); //$db = new Db($sql4); var_dump($db->get_res());
更多精彩,請關注公眾號“聊聊代碼”,讓我們一起聊聊“左手代碼右手詩”的事兒。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22518.html
閱讀 2241·2023-04-26 01:50
閱讀 706·2021-09-22 15:20
閱讀 2579·2019-08-30 15:53
閱讀 1585·2019-08-30 12:49
閱讀 1704·2019-08-26 14:05
閱讀 2700·2019-08-26 11:42
閱讀 2298·2019-08-26 10:40
閱讀 2587·2019-08-26 10:38