明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Mysql讀寫(xiě)分離是什么?主從數(shù)據(jù)庫(kù)怎么設(shè)置?

[摘要]本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Mysql讀寫(xiě)分離是什么?主從數(shù)據(jù)庫(kù)如何設(shè)置?有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。何謂讀寫(xiě)分離?Mysql無(wú)非四個(gè)功能:增,刪,改,讀.而將增...
本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Mysql讀寫(xiě)分離是什么?主從數(shù)據(jù)庫(kù)如何設(shè)置?有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

何謂讀寫(xiě)分離?

Mysql無(wú)非四個(gè)功能:增,刪,改,讀.而將增刪改和讀分離操作.這樣有利于提高系統(tǒng)性能.
試著想想,進(jìn)搬退改貨又賣貨改成了前門只賣貨,其它去后門.這樣是不是就很清晰了?
往往看起來(lái)高大上的東西,做起來(lái)也是挺簡(jiǎn)單的.

下面是寫(xiě)給小白的,都是非常直觀的操作.

1、配置:
兩臺(tái)服務(wù)器同配置的mysql如mysql5.7
PS:如果條件有限,一臺(tái)也可以,只需要安裝兩個(gè)mysql服務(wù)(不同端口如3306,3307),只是這就有點(diǎn)違背效率初衷了

2、代碼:
1.一般直接在代碼層將mysql操作類的讀寫(xiě)如update,insert與select * from進(jìn)行路由分離.使之對(duì)應(yīng)不同的服務(wù)器.
2.中間件代理,即不改動(dòng)代碼的前提下,由中間件將讀寫(xiě)請(qǐng)求發(fā)送至主從服務(wù)器.

現(xiàn)在講講主從如何配置:

1、開(kāi)放端口:大部分主機(jī)都默認(rèn)Mysql端口3306,那么先將兩臺(tái)機(jī)子的安全組或防火墻里把3306端口打開(kāi)并重啟.
2、端口打開(kāi)了,現(xiàn)在配置兩個(gè)服務(wù)器(一臺(tái)主機(jī)兩個(gè)Mysql服務(wù)器的同理):

下文以主ip:192.168.0.1,從ip:192.168.0.2,創(chuàng)建同步賬號(hào)spec,密碼spec_password為例:

主服務(wù)器(增刪改):

#1.Mysql配置改以下并重啟服務(wù)(命令行里直接重啟:service mysql restart)
[mysqld]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

#2.命令行mysql執(zhí)行或phpmyadmin里執(zhí)行:
GRANT REPLICATION SLAVE ON *.* TO 'spec'@'192.168.0.2' IDENTIFIED BY 'spec_password';
flush privileges;

這樣,主服務(wù)器就完工了.

從服務(wù)器配置:

#1.Mysql配置改以下并重啟服務(wù)(命令行里直接重啟:service mysql restart)
[mysqld]
server-id=2
relay-log-index=slave-bin.index
relay-log=slave-bin

#2.命令行mysql執(zhí)行或phpmyadmin里執(zhí)行:
change master to master_host='192.168.0.1',master_port=3306,master_user='spec',master_password='spec_password',master_log_file='master-bin.000001',master_log_pos=0;
start slave

一般來(lái)說(shuō),配置到此就完成了.

3.測(cè)試:

從服務(wù)器中查詢語(yǔ)句:show slave status
如果Slave_IO_State=Waiting for master to send event就成功了.
其余狀態(tài)通常都是以下原因:

1.主從的安全組或防火墻未打開(kāi)3306端口
2.主從之間ping不通.
3.上面的spec賬密錯(cuò)誤

現(xiàn)在起,在主服務(wù)器隨便增刪改,都會(huì)同步到從服務(wù)器了.

4.建議:

1.切記從服務(wù)器只操作讀,不操作增刪改.保持?jǐn)?shù)據(jù)的同步性,這樣當(dāng)一臺(tái)服務(wù)器故障的時(shí)候,另一臺(tái)就可以頂上去(其實(shí)主服務(wù)器宕機(jī)的時(shí)候肯定會(huì)丟失一部分最新數(shù)據(jù))。
2.從服務(wù)器的帶寬一定>=主服務(wù)器,盡量減少同步延遲.要是小水管,同步自然慢一步嘛。

以上就是Mysql讀寫(xiě)分離是什么?主從數(shù)據(jù)庫(kù)如何設(shè)置?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。