mysql主從複製簡單實現

本文源出處:http://www.lustlost.com/?p=158

在mysql的複製中,相對於主主複製,主從架構的穩定性更好,而主主總是會有些問題存在,故不推薦。在大型架構中建議使用基於讀寫分離的主從複製

本文不涉及讀寫分離的內容,只是簡單實現mysql的主從複製的實現。整個過程在理解複製的原理後就非常的簡單,所以先簡單介紹下原理。

 

mysql的主從複製的基本原理:

在主服務器上傳送二進制日誌到從服務器,在從服務器上讀取收到的中繼日誌,執行日誌中的sql語句,實現數據同步。

 

整個實現過程如下圖所示,通過圖片能很容易的看出整個流程

 

 

對於主從之間使用異步傳輸還是同步傳輸,具體看網絡情況和整體架構而定

要注意,爲了兼容性問題,主從服務器之間,master的mysql的版本要比slave版本低或者相同

如果在一個已存在數據的主服務器上部署備服務器,要先備份主服務器的數據,備份的時候做好二進制日誌位置記錄 ,然後恢復到從服務器上,並指定從服務器的從主服務器二進制日誌的複製位置,從時間點開始複製

 

實現過程

首先在2臺服務器上安裝好mysql。安裝步驟不再列出,我用的是綠色版安裝,雙方的mysql配置最好一樣

 

修改my.cnf,master上修改server-id爲1,slaver修改server-id爲大於1的數字

master:

%9I~M)_YX0{4_8$55ZZ[I0A

slave:

37N{_Z6734`CVRL52M%6G(I

 

在從服務器上關閉二進制日誌,避免從服務器上IO過高,並開啓relay-log

RHB5R9)8[`MC)]$~$F49$KI

 

而且要在slave上限制寫入

p_w_picpath

 

在master上創建複製用的帳號,此帳號只授予複製相關的權限

p_w_picpath

在slave上進入mysql命令行,設定master相關參數

{@8)V9JHSC2B%K4G1(~Q$H5

然後打開slave複製

J4EJ0V)X8[KV`08[GGARD31

查看slave狀態

VI9H3Y_[%Q5J7WXFZMSK8}S

發現連接到master時出現錯誤

清空master和slave的iptables規則後重新啓動slave,OK

p_w_picpath

試着在master上創建一個數據庫

3NI{X6[HPC0726CJWAX6A8E

在slave上查看,已經成功複製過來

17VHGRO125F~]}ECGGFP$(W

 

如果在部署slave時master已經存有數據了,需要在master上備份數據,然後在slave上導入數據

在用mysqldump備份數據的時候,加上--master-data=2參數記錄正在使用二進制日誌文件和的POS位置

然後在slave上指定master服務器時,加上master_logfile=’xxx’,master_log_pos=xxx 指定起始的二進制文件和文件的pos位置開始複製

 

要讓slave開啓時暫時停止從服務器線程,在my.cnf中的mysqld段中加入以下參數

skip-slave-start=1

 

爲了讓服務器更加安全,防止斷電產生事物已經提交,數據還未寫入磁盤的問題,在master的my.cnf中的mysql段加入

sync_binlog=1

innodb_flush_logs_at_trx_commit=1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章