mysql主從複製簡單實現

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

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

本文不涉及讀寫分離的內容,只是簡單實現mysql的主從複製的實現。整個過程在理解複製的原理後就很是的簡單,因此先簡單介紹下原理。數據庫

 

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

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

 

整個實現過程以下圖所示,經過圖片能很容易的看出整個流程網絡

 

 

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

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

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

 

實現過程命令行

首先在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

相關文章
相關標籤/搜索