㈠ php mysql 怎麼實現讀寫分離
<?php
class Db
{
private $res;
function __construct($sql)
{
$querystr = strtolower(trim(substr($sql,0,6)));
//如果是select,就連接slave伺服器
if($querystr == 'select')
{
$res=$this->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_mp($db->get_res());
㈡ mysql 實現讀寫分離時 必須要用mysql-proxy嗎或者直接更改mysql配置就可以主從分離嗎
寫的時候是寫到主庫上,然後通過mysql主從,數據會復制到從庫,那麼可先測試主從同步是否正常,然後停掉主從同步功能,再寫數據,數據會插入到主庫,從庫是查不到的。或者修改從庫中的某條數據,通過客戶端連到代理上查詢這條數據,查詢到代表讀寫分離沒問題了。
http://www.rootop.org/pages/2413.html
這是當時測試讀寫分離的文檔,可供參考下。
㈢ PHP伺服器與MYSQL伺服器分開如何做
在PHP.INI中把mysql擴展模塊加進去.即;extension=php_mysql.dll前面的分號去掉,再裝個ODBC連上B電腦上的MYSQL,然後你在程序里用B電腦的IP就可以連上了,mysql_connect("b電腦IP","資料庫用戶名","資料庫密碼");哦,對了把B電腦的MYSQL服務必須打開.
㈣ php mysql讀寫分離的原理好處,什麼情況下需要讀寫分離,怎樣做到讀寫分離,和讀寫分離後數據如何統一
資料庫主從關系,讀寫分離。減輕資料庫 壓力
㈤ mysql 主從復制 php 怎麼辦
mysql主從復制與php沒有半毛錢關系,如果你是想說php怎麼連接mysql主從環境,這個必須代碼裡面實現,網上多的是教程
㈥ lnmp環境php與mysql分離不同伺服器,linux下php和nginx在A伺服器IP192
已經很明白了啊 ,php.ini里搜索"extension" ,會發現有關於mysql的擴展,你需要把前面的";"去掉,然後重啟你的web伺服器
㈦ Linux環境nginx php與mysql分離
建議php用源碼安裝
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap
用這個命令編譯
基本上常用的功能都有了
㈧ 把php和mysql分開放在兩台伺服器哪台更耗資源
一般來說,是mysql更耗資源
但也和你的網站程序復雜度有關
如果你的程序和mysql交互很少,那就有可能php壓力大些
㈨ mysql 如何實現讀寫分離,用mysql-proxy 或者直接用php連接兩個資料庫
Mysql主從配置,實現讀寫分離
原理:主伺服器(Master)負責網站NonQuery操作,從伺服器負責Query操作,用戶可以根據網站功能模特性塊固定訪問Slave伺服器,或者自己寫個池或隊列,自由為請求分配從伺服器連接。主從伺服器利用MySQL的二進制日誌文件,實現數據同步。二進制日誌由主伺服器產生,從伺服器響應獲取同步資料庫。
具體實現:
1、在主從伺服器上都裝上MySQL資料庫,windows系統鄙人安裝的是mysql_5.5.25.msi版本,Ubuntu安裝的是mysql-5.6.22-linux-glibc2.5-i686.tar
windows安裝mysql就不談了,一般地球人都應該會。鄙人稍微說一下Ubuntu的MySQL安裝,我建議不要在線下載安裝,還是離線安裝的好。大家可以參考 http://www.linuxidc.com/Linux/2013-01/78716.htm 這位不知道大哥還是姐妹,寫的挺好按照這個就能裝上。在安裝的時候可能會出現幾種現象,大家可以參考解決一下:
(1)如果您不是使用root用戶登錄,建議 su - root 切換到Root用戶安裝,那就不用老是 sudo 了。
(2)存放解壓的mysql 文件夾,文件夾名字最好改成mysql
(3)在./support-files/mysql.server start 啟動MySQL的時候,可能會出現一個警告,中文意思是啟動服務運行讀文件時,忽略了my.cnf文件,那是因為my.cnf的文件許可權有問題,mysql會認為該文件有危險不會執行。但是mysql還會啟動成功,但如果下面配置從伺服器參數修改my.cnf文件的時候,你會發現文件改過了,但是重啟服務時,修改過後的配置沒有執行,而且您 list一下mysql的文件夾下會發現很多.my.cnf.swp等中間文件。這都是因為MySQL啟動時沒有讀取my.cnf的原因。這時只要將my.cnf的文件許可權改成my_new.cnf的許可權一樣就Ok,命令:chmod 644 my.cnf就Ok
(4)Ubuntu中修改文檔內容沒有Vim,最好把Vim 裝上,apt-get install vim,不然估計會抓狂。
這時候我相信MySQL應該安裝上去了。
2、配置Master主伺服器
(1)在Master MySQL上創建一個用戶『repl』,並允許其他Slave伺服器可以通過遠程訪問Master,通過該用戶讀取二進制日誌,實現數據同步。
㈩ mysql主從讀寫分離 怎麼保證數據同步
如果兩台電腦在一個區域網內,一般只會有很小的時延。理論上確實存在微小差別的可能,所以讀寫分離業務也不是說所有讀業務都放在從機,讀寫一體的操作還是需要放在主機上的。