學習筆記

【MySQL】MySQL Replication 主從式架構實作

MySQLReplication

前陣子有在做公司MySQL Replication的主從式架構,因為是測試環境, 所以我們主要是讓開發人員能夠將資料寫入和資料檢索的部分分開,讓資料庫的負擔可以減輕,將Server的壓力做分散。MySQL Replication 同時也會做資料庫的同步,由Slave的機器去同步Master上面的資料,也做到備援的機制。

MySQL Replication 原理

今天是以兩台機器,一台Master一台Slave作為實驗,MySQL Replication的原理是,Master的機器上面在執行SQL會記錄在Binary Log裡面,然後Master會再將Binary Log傳到Slave的Relay log裡面,Slave再去執行Relay log 裡面的SQL,然後將Relay log移除。

MySQL Replication 實作

今天就不說明怎麼安裝MySQL了,直接說明如何設定來啟動MySQL Replication。

首先我們先看Master機器上的設定,找到Master Sever 裡面的/etc/my.cnf

然後要創建一個replication使用的user,並且給他權限

然後重啟MySQL

可以輸入SQL指令查看一下Master的狀態

應該可以看到目前binlog的檔案和Position的位置

接下來我們設定一下Slave,一樣找到Slave Sever 裡面的/etc/my.cnf

然後重啟MySQL

在設定Master登入資訊啟動Slave之前,你必須先讓兩邊的資料一致,因此我會先在Master做DB Lock的動作,然後將資料Dump匯入到Slave裡面。

接著要輸入SQL指令,讓Slave指定Master的登入資料

一樣可以查看一下Slave的狀態

基本上如果這兩個狀態顯示Yes就表示Slave正常的在運作了。

你也可以解除Master的Lock然後試著新增或是修改資料看看,如果Slave有跟著同步的話就代表成功囉。

結論

在做MySQL Replication的部分基本上就是要記得匯入資料的時候要先把DB鎖住,不然如果你會有一些自動寫入的部分就會同步不成功,Slave要注意的部分就是一開始啟動的位置要和Master的Position的位置是一樣的,我通常都會確認一次。