天天看點

MySQL主從配置

MySQL主從(MySQL Replication),主要用于MySQL的時時備份或者讀寫分離。在配置之前先做一下準備工作,配置兩台 mysql 伺服器,如果你的機器不能同時跑兩台 Linux 虛拟機,那可以考慮在同一個機器上跑兩個 mysql 服務。 

一、原理

1、每個從僅可以設定一個主。 

2、主在執行 sql 之後,記錄二進制 log 檔案(bin-log)。 

3、從連接配接主,并從主擷取 binlog,存于本地 relay-log,并從上次記住的位置起執行 sql,一旦遇到錯誤則停止同步。 

二、推論

1、主從間的資料庫不是實時同步,就算網絡連接配接正常,也存在瞬間,主從資料不一緻。 

2、如果主從的網絡斷開,從會在網絡正常後,批量同步。 

3、如果對從進行修改資料,那麼很可能從在執行主的 bin-log 時出現錯誤而停止同步,這個是很危險的操作。是以一般情況下,非常小心的修改從上的資料。 

4、一個衍生的配置是雙主,互為主從配置,隻要雙方的修改不沖突,可以工作良好。 

5、如果需要多主的話,可以用環形配置,這樣任意一個節點的修改都可以同步到所有節點。  

6、可以應用在讀寫分離的場景中,用以降低單台 MySQL 伺服器的 I/O。

7、可以實作 MySQL 服務的 HA 叢集。

8、可以是 1 主多從,也可以是互相主從(主主)。 

三、主從配置

說明:主庫IP:192.168.0.109   從庫IP:192.168.0.104

1、安裝MySQL

2、主庫的配置

首先建立一個資料庫db1

注:資料庫安裝完成後預設會生成兩個庫:mysql庫與test庫;為了做友善試驗,我們直接把mysql庫複制給db1庫(下面采用備份恢複方法來實作),你也可以自己在db1庫裡建立表。

如圖:

<a href="http://s3.51cto.com/wyfs02/M00/73/92/wKioL1YBTW-x9sDFAADhTb_b_7E268.jpg" target="_blank"></a>

接着退出,編輯配置檔案

如圖:       

<a href="http://s3.51cto.com/wyfs02/M02/73/92/wKioL1YBWzvh7HiUAAF8o-qNdNA217.jpg" target="_blank"></a>

參數說明:

然後重新開機mysql服務

在/data/mysql/目錄(即MySQL安裝目錄)下可以看到生成了以mysql-bin開頭的一些檔案,如下圖:

<a href="http://s3.51cto.com/wyfs02/M02/73/92/wKioL1YBXA-DEX2_AAEkIroFjWc366.jpg" target="_blank"></a>

最後我們添加一個用于主從同步的使用者:repl,密碼為:123456

<a href="http://s3.51cto.com/wyfs02/M02/73/92/wKioL1YBWQqgyhC5AAEjErXgwZ8162.jpg" target="_blank"></a>

3、從庫的配置

首先建立一個和主資料庫一樣的db1庫。我同樣是複制之前的123.sql資料庫到bd1庫,這個是通過主伺服器中的vsftpd檔案服務下載下傳到本地,然後恢複到db1庫。

下載下傳在本地

複制123.sql庫到db1庫

接着編輯配置檔案

儲存退出。重新開機下mysql服務

同步資料庫

mysql&gt; slave start;

顯示出現了錯誤:從資料庫無法同步

這個問題很有可能就是密碼不對,而我的問題是因為沒有關閉防火牆,關閉防火牆後我再show下,發現問題解決了。

<a href="http://s3.51cto.com/wyfs02/M01/73/94/wKioL1YBbOzCotZvAAKARTELygI033.jpg" target="_blank"></a>

4、測試主從是否同步

首先在主資料庫上解鎖,檢視表内容

<a href="http://s3.51cto.com/wyfs02/M02/73/95/wKioL1YBfhXx1gliAAFCSh_4y-Y782.jpg" target="_blank"></a>

然後檢視下從資料庫是否生成了db1資料庫,這裡可以看到表的内容和主資料庫中db1庫是一樣的。

測試下:

在主資料庫上執行下面的指令删除event表

接着在從資料庫上可以發現該表也被同步的删除了

<a href="http://s3.51cto.com/wyfs02/M02/73/98/wKiom1YBfvHyjmaYAACxPVY_s2U936.jpg" target="_blank"></a>

這樣就實作了主從資料同步。

實作輕松部署 MySQL 主從複制:參考 mysqldump 的 --master-data 參數。

mysqldump導出資料時,當這個參數的值為1的時候,mysqldump出來的檔案就會包括CHANGE MASTER TO這個語句,CHANGE MASTER TO後面緊接着就是file和position的記錄,在slave上導入資料時就會執行這個語句,salve就會根據指定這個檔案位置從master端複制binlog。預設情況下這個值是1;當這個值是2的時候,chang master to也是會寫到dump檔案裡面去的,但是這個語句是被注釋的狀态。

3步即可:

1、主上導出資料庫:mysqldump 帶--master-data=1參數

2、從上導入資料庫:mysql 導入資料指令

3、start slave;

      本文轉自 M四月天 51CTO部落格,原文連結:http://blog.51cto.com/msiyuetian/1697288,如需轉載請自行聯系原作者