更新時間:2021-03-15 17:58:06 來源:動力節(jié)點(diǎn) 瀏覽1251次
在實(shí)際的開發(fā)環(huán)境中,數(shù)據(jù)的重要性不言而喻,每一個數(shù)據(jù)都是有其價值的,提供安全可靠的數(shù)據(jù)保障是技術(shù)與運(yùn)維部門的職責(zé)所在;為了保障數(shù)據(jù)的安全性,大多數(shù)的開發(fā)都采用了數(shù)據(jù)庫的主從復(fù)制,其中MySQL集群主從復(fù)制也是保障MySQL數(shù)據(jù)庫數(shù)據(jù)安全的一道堅(jiān)不可摧的防線。
我們試想一下,如果我們的數(shù)據(jù)庫只有一臺服務(wù)器,那么很容易產(chǎn)生單點(diǎ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ù);主從復(fù)制是指服務(wù)器分為主服務(wù)器和從服務(wù)器,主服務(wù)器負(fù)責(zé)讀和寫,從服務(wù)器只負(fù)責(zé)讀,主從復(fù)制也叫 master/slave,master是主,slave是從。
一般情況下,MySQL集群主從復(fù)制的具體架構(gòu)還得看數(shù)據(jù)量大小來定,數(shù)據(jù)量規(guī)模較小的情況下,使用一主一從的架構(gòu)的較多。一主一從的弊端就是容易出現(xiàn)單點(diǎn)故障,一旦主庫故障便不能進(jìn)行寫入操作,所以,數(shù)據(jù)量較大時就需要使用處理高并發(fā)的思想來解決問題了,比如:一方面可以做分壓處理(Nginx集群,MySQL集群等等),一方面可以做異步處理,用時間換空間(ActiveMQ消息隊(duì)列)。MySql高并發(fā)的處理方案就是多主多從,可以極大地提高數(shù)據(jù)庫的容災(zāi)能力,降低磁盤I/O訪問的評率,提高單個機(jī)器的I/O性能。
下面我們來看看MySQL集群主從復(fù)制的具體步驟:
1. 當(dāng) master 主服務(wù)器上的數(shù)據(jù)發(fā)生改變時,則將其改變寫入二進(jìn)制日志文件中;
2. salve 從服務(wù)器會在一定時間間隔內(nèi)對 master 主服務(wù)器上的二進(jìn)制日志進(jìn)行探測,探測其是否發(fā)生過改變;
3. 如果探測到 master 主服務(wù)器的二進(jìn)制日志發(fā)生了改變,則開始一個 I/O Thread 請求 master 二進(jìn)制事件;
4. 同時 master 主服務(wù)器為每個 I/O Thread 啟動一個dump Thread,用于向其發(fā)送二進(jìn)制事件;
5. slave 從服務(wù)器將接收到的二進(jìn)制事件保存至自己本地的中繼日志文件中;
6. salve 從服務(wù)器將啟動 SQL Thread 從中繼日志中讀取二進(jìn)制日志,在本地重放,使得其數(shù)據(jù)和主服務(wù)器保持一致;
7. 最后 I/O Thread 和 SQL Thread 將進(jìn)入睡眠狀態(tài),等待下一次被喚醒;
:mysql要做到主從復(fù)制,就是A服務(wù)把自己所做的增刪改的操作全都記錄在日志中,B數(shù)據(jù)庫就根據(jù)這份日志上面的操作在自己身上再操作一遍,這樣就實(shí)現(xiàn)了主從復(fù)制;
如果在不使用中間件mycat的情況下,需要使用spring框架提供的AbstractRoutingDataSource類,通過重寫它的方法,可以實(shí)現(xiàn)數(shù)據(jù)源的切換。
總而言之,MySQL集群主從復(fù)制的存在是符合客觀規(guī)律的,既實(shí)現(xiàn)服務(wù)器負(fù)載均衡,又通過復(fù)制實(shí)現(xiàn)數(shù)據(jù)的異地備份,從而提高了數(shù)據(jù)庫系統(tǒng)的可用性??赐炅吮疚膶ySQL集群主從復(fù)制還要疑惑的小伙伴可以結(jié)合本站的MySQL主從復(fù)制教程中的MySQL集群主從復(fù)制的原理圖,圖文結(jié)合,更深入地理解其原理。
初級 202925
初級 203221
初級 202629
初級 203743