天天看點

MySQL進階知識(十五)——主從複制

前言:本章主要講解MySQL主從複制的操作步驟。由于環境限制,主機使用Windows環境,從機使用用Linux環境。另外MySQL的版本最好一緻,筆者采用的MySQL5.7.22版本,具體安裝過程請查詢相關資料。

1.主從複制的基本原理

slave會從master讀取binlog來進行資料同步。主要有以下三個步驟:

①master将改變記錄到二進制日志(binary log),這些記錄過程叫做二進制日志事件(binary log events)。

②slave将master的binary log events拷貝到中繼日志(relay log)。

③slave重做中繼日志中的事件,将改變應用到自己的資料庫中。MySQL的複制是異步且串行化的。

MySQL進階知識(十五)——主從複制

2.主從複制的規則

①每個slave隻能有一個master。(一對一)

②每個slave隻能有一個唯一的伺服器ID。

③每個master可以有多個slave。(一對多)

在主從複制過程中,最大的問題就是延時。

3.一主一從的常見配置

#1.要求。

MySQL版本最好一緻且背景以服務運作。并且保證主機與從機互相ping通。主從配置都在[mysqld]結點下,都是小寫。

#2.主機修改my.ini配置檔案

①server-id=1,主機伺服器id。(必須)

②必須啟用二進制檔案。

log-bin="E:\devSoft\mysql-5.7.22-winx64\data\mysql-bin"      

配置該項後,重新啟動mysql服務,可看到如下内容。

MySQL進階知識(十五)——主從複制

③啟用錯誤日志。(可選)

log_error ="E:\devSoft\mysql-5.7.22-winx64\data\log\errorlog\log_error.log"      

④根目錄、資料目錄。(可選)

#mysql安裝根目錄
basedir ="E:\devSoft\mysql-5.7.22-winx64"
 
#mysql資料檔案所在位置
datadir ="E:\devSoft\mysql-5.7.22-winx64\data"      

⑤臨時目錄。(可選)

tmpdir  ="E:\devSoft\mysql-5.7.22-winx64\"      

⑥read-only=0,表示主機讀寫都可以。

⑦可設定不需要複制的資料庫。(可選)

binlog-ignore-db=mysql      

⑧可設定需要複制的資料庫。(可選)

binlog-do-db=databasename      

#3.從機修改my.cnf配置檔案

①從伺服器ID。(必須)

②啟用二進制日志。(可選)

#4.主機與從機都關閉防火牆,其實也可配置ip規則,但關閉防火牆更快速。

#5.在Windows主機上建立賬戶并授權給slave。

a.首先在主機上建立賬戶:

#%表示任何用戶端都可以連接配接
 grant all privileges on *.* to slaveaccount(使用者名)@"%(或者指定ip)" identified by '你想設定的密碼' with grant option;      

b.然後重新整理權限表:

flush privileges;      

c.然後授權給slave:

GRANT REPLICATION SLAVE ON *.* TO 'slaveaccount(上面建立的使用者名)'@'從機資料庫ip' IDENTIFIED BY '你想設定的密碼'      

d.利用b步驟指令再次重新整理權限表。

#6.查詢master的狀态。

MySQL進階知識(十五)——主從複制

File和Position這兩個字段非常重要,File告訴從機需要從哪個檔案進行複制,Position告訴從機從檔案的哪個位置開始複制,在從機上配置時需用到。執行完此操作後,盡量不要在操作主伺服器MySQL,防止主伺服器狀态變化(File和Position狀态變化)。

#7.在Linux從機上配置需要的主機。

CHANGE MASTER TO MASTER_HOST='主機IP',MASTER_USER='salveaccount',MASTER_PASSWORD='主機授權的密碼',MASTER_LOG_FILE='File名字',MASTER_LOG_POS=Position數字;      

#8.啟動從伺服器複制功能。

start slave;      

啟動複制功能後,需要檢視主從複制配置是否成功。

MySQL進階知識(十五)——主從複制

注:隻有當Slave_IO_Running:Yes和Slave_SQL_Running:Yes,這兩個都為Yes的時候,主從複制配置才成功。

#9.進行測試。

①首先在主機上建立資料庫并插入資料。

MySQL進階知識(十五)——主從複制
MySQL進階知識(十五)——主從複制

②在從機中檢視是否有相應資料庫。

MySQL進階知識(十五)——主從複制
MySQL進階知識(十五)——主從複制

通過從機上檢視相應資料,可知主從複制配置成功。

#10.停止從服務複制功能。

stop slave;      

4.總結

#1.主從複制的配置,大部分都在主機上,注意檢視相關步驟。

#2.這裡将主從機的防火牆都關閉是為了更好的示範,實際生産環境中一般不會出現windows主機和linux從機這種情況,是以不應該關閉防火牆,而是根據具體情況配置防火牆規則。

by Shawn Chen,2018.6.30日,下午。

相關内容

MySQL進階知識系列目錄

=========================================================

比你優秀的人比你還努力,你有什麼資格不去奮鬥!

__一個有理想的程式員。

繼續閱讀