首頁  >  文章  >  資料庫  >  Mysql讀寫分離是什麼?主從資料庫如何設定?

Mysql讀寫分離是什麼?主從資料庫如何設定?

不言
不言轉載
2018-10-09 15:22:022480瀏覽

這篇文章帶給大家的內容是關於Mysql讀寫分離是什麼?主從資料庫如何設定?有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

何謂讀寫分離?

Mysql無非四個功能:增,刪,改,讀.而將增刪改和讀分離操作.這樣有利於提高系統性能.
試著想想,進搬退改貨又賣貨改成了前門只賣貨,其它去後門.這樣是不是就很清晰了?
往往看起來高大上的東西,做起來也是挺簡單的.

下面是寫給小白的,都是非常直覺的操作.

1、設定:
兩台伺服器同配置的mysql如mysql5.7
PS:如果條件有限,一台也可以,只需要安裝兩個mysql服務(不同埠如3306,3307),只是這就有點違背效率初衷了

2、程式碼:
1.一般直接在程式碼層將mysql操作類別的讀寫如update,insert與select * from進行路由分離.使之對應不同的伺服器.
2.中間件代理,即不改動程式碼的前提下,由中間件將讀寫請求傳送至主從伺服器.

現在講講主從如何設定:

1、開放埠:大部分主機都預設Mysql埠3306,那麼先將兩台機子的安全群組或防火牆裡把3306埠打開並重啟.
2、連接埠打開了,現在配置兩個伺服器(一台主機兩個Mysql伺服器的同理):

下文以主ip: 192.168.0.1,從ip:192.168.0.2,建立同步帳號spec,密碼spec_password為例:

主伺服器(增刪改):

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

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

這樣,主伺服器就完成了.

從伺服器設定:

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

#2.命令行mysql执行或phpmyadmin里执行:
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

一般來說,配置到此就完成了.

3.測試:

從伺服器查詢語句:show slave status
如果Slave_IO_State=Waiting for master to send event就成功了.
其餘狀態通常都是以下原因:

1.主從的安全群組或防火牆未開啟3306埠
2.主從之間ping不通.
3.上面的spec賬密錯誤

現在起,在主伺服器隨便增刪改,都會同步到從伺服器了.

4.建議:

1.切記從伺服器只操作讀,不操作增刪改.保持資料的同步性,這樣當一台伺服器故障的時候,另一台就可以頂上去(其實主伺服器宕機的時候一定會遺失一部分最新資料)。
2.從伺服器的頻寬一定>=主伺服器,盡量減少同步延遲.要是小水管,同步自然慢一步嘛。

以上是Mysql讀寫分離是什麼?主從資料庫如何設定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除