MySQL進階——主從複製

attachments-2020-03-nSwxNjkM5e79698370399.jpg

 

1.主從複製的基本原理

slave會從master讀取binlog來進行數據同步。主要有如下三個步驟:mysql

①master將改變記錄到二進制日誌(binary log),這些記錄過程叫作二進制日誌事件(binary log events)。linux

②slave將master的binary log events拷貝到中繼日誌(relay log)。sql

③slave重作中繼日誌中的事件,將改變應用到本身的數據庫中。MySQL的複製是異步且串行化的。數據庫

v2-45e6eb9a8cd6849617e55274bd6fc898_720w.jpg

 

2.主從複製的規則

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

②每一個slave只能有一個惟一的服務器ID。服務器

③每一個master能夠有多個slave。(一對多)異步

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

 

3.一主一從的常見配置

#1.要求。測試

MySQL版本最好一致且後臺以服務運行。而且保證主機與從機互相ping通。主從配置都在[mysqld]結點下,都是小寫。spa

#2.主機修改my.ini配置文件

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

②必須啓用二進制文件。

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

配置該項後,從新啓動mysql服務,可看到以下內容。

v2-6e7f3fe2702869c5591a33da7f28c4f5_720w.jpg

③啓用錯誤日誌。(可選)

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的狀態。

v2-19db90cdc229112b893405e6d9ff9302_720w.jpg

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;

啓動複製功能後,須要查看主從複製配置是否成功。

v2-077f8c6214b6133b9ce88309c45b07a5_720w.jpg

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

#9.進行測試。

①首先在主機上創建數據庫並插入數據。

v2-665fd3357cc93c0c46386bd79cd94343_720w.jpgv2-f28ad22e77ddd2271ff6a8ee2b02a5e6_720w.jpg

②在從機中查看是否有相應數據庫。

v2-b1fa5aaca4b06da8d0822418bbf800ec_720w.jpgv2-3d74d18d443b6aab86b50f8bc533aeb2_720w.jpg

經過從機上查看相應數據,可知主從複製配置成功。

#10.中止從服務複製功能。

stop slave;

 

4.總結

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

#2.這裏將主從機的防火牆都關閉是爲了更好的演示,實際生產環境中通常不會出現windows主機和linux從機這種狀況,所以不該該關閉防火牆,而是根據具體狀況配置防火牆規則。

 

attachments-2020-03-bve1h1635e7969bff1c5b.jpg

相關文章
相關標籤/搜索