更新時間:2019-02-13 10:38 來源:動力節(jié)點 瀏覽10053次
在實際生產(chǎn)中,數(shù)據(jù)的重要性不言而喻;
如果我們的數(shù)據(jù)庫只有一臺服務(wù)器,那么很容易產(chǎn)生單點故障的問題,比如這臺服務(wù)器訪問壓力過大而沒有響應(yīng)或者奔潰,那么服務(wù)就不可用了,再比如這臺服務(wù)器的硬盤壞了,那么整個數(shù)據(jù)庫的數(shù)據(jù)就全部丟失了,這是重大的安全事故;
為了避免服務(wù)的不可用以及保障數(shù)據(jù)的安全可靠性,我們至少需要部署兩臺或兩臺以上服務(wù)器來存儲數(shù)據(jù)庫數(shù)據(jù),也就是我們需要將數(shù)據(jù)復(fù)制多份部署在多臺不同的服務(wù)器上,即使有一臺服務(wù)器出現(xiàn)故障了,其他服務(wù)器依然可以繼續(xù)提供服務(wù);
MySQL提供了主從復(fù)制功能以提高服務(wù)的可用性與數(shù)據(jù)的安全可靠性;
主從復(fù)制是指服務(wù)器分為主服務(wù)器和從服務(wù)器,主服務(wù)器負責(zé)讀和寫,從服務(wù)器只負責(zé)讀,主從復(fù)制也叫 master/slave,master是主,slave是從;
主從復(fù)制可以實現(xiàn)對數(shù)據(jù)庫備份和讀寫分離;
主從復(fù)制架構(gòu)
MySQL的主從復(fù)制將經(jīng)過如下步驟:
1、當 master 主服務(wù)器上的數(shù)據(jù)發(fā)生改變時,則將其改變寫入二進制事件日志文件中;
2、salve 從服務(wù)器會在一定時間間隔內(nèi)對 master 主服務(wù)器上的二進制日志進行探測,探測其是否發(fā)生過改變,如果探測到 master 主服務(wù)器的二進制事件日志發(fā)生了改變,則開始一個 I/O Thread 請求 master 二進制事件日志;
3、同時 master 主服務(wù)器為每個 I/O Thread 啟動一個dump Thread,用于向其發(fā)送二進制事件日志;
4、slave 從服務(wù)器將接收到的二進制事件日志保存至自己本地的中繼日志文件中;
5、salve 從服務(wù)器將啟動 SQL Thread 從中繼日志中讀取二進制日志,在本地重放,使得其數(shù)據(jù)和主服務(wù)器保持一致;
6、最后 I/O Thread 和 SQL Thread 將進入睡眠狀態(tài),等待下一次被喚醒;
MySQL主從復(fù)制流程圖
高薪課程推薦:MySQL主從復(fù)制實踐; 最實用的MySQL教程。
相關(guān)閱讀