更新時間:2021-03-15 17:58:06 來源:動力節點 瀏覽1259次
在實際的開發環境中,數據的重要性不言而喻,每一個數據都是有其價值的,提供安全可靠的數據保障是技術與運維部門的職責所在;為了保障數據的安全性,大多數的開發都采用了數據庫的主從復制,其中MySQL集群主從復制也是保障MySQL數據庫數據安全的一道堅不可摧的防線。
我們試想一下,如果我們的數據庫只有一臺服務器,那么很容易產生單點故障的問題,比如這臺服務器訪問壓力過大而沒有響應或者奔潰,那么服務就不可用了,再比如這臺服務器的硬盤壞了,那么整個數據庫的數據就全部丟失了,這是重大的安全事故;為了避免服務的不可用以及保障數據的安全可靠性,我們至少需要部署兩臺或兩臺以上服務器來存儲數據庫數據,也就是我們需要將數據復制多份部署在多臺不同的服務器上,即使有一臺服務器出現故障了,其他服務器依然可以繼續提供服務;主從復制是指服務器分為主服務器和從服務器,主服務器負責讀和寫,從服務器只負責讀,主從復制也叫 master/slave,master是主,slave是從。
一般情況下,MySQL集群主從復制的具體架構還得看數據量大小來定,數據量規模較小的情況下,使用一主一從的架構的較多。一主一從的弊端就是容易出現單點故障,一旦主庫故障便不能進行寫入操作,所以,數據量較大時就需要使用處理高并發的思想來解決問題了,比如:一方面可以做分壓處理(Nginx集群,MySQL集群等等),一方面可以做異步處理,用時間換空間(ActiveMQ消息隊列)。MySql高并發的處理方案就是多主多從,可以極大地提高數據庫的容災能力,降低磁盤I/O訪問的評率,提高單個機器的I/O性能。
下面我們來看看MySQL集群主從復制的具體步驟:
1. 當 master 主服務器上的數據發生改變時,則將其改變寫入二進制日志文件中;
2. salve 從服務器會在一定時間間隔內對 master 主服務器上的二進制日志進行探測,探測其是否發生過改變;
3. 如果探測到 master 主服務器的二進制日志發生了改變,則開始一個 I/O Thread 請求 master 二進制事件;
4. 同時 master 主服務器為每個 I/O Thread 啟動一個dump Thread,用于向其發送二進制事件;
5. slave 從服務器將接收到的二進制事件保存至自己本地的中繼日志文件中;
6. salve 從服務器將啟動 SQL Thread 從中繼日志中讀取二進制日志,在本地重放,使得其數據和主服務器保持一致;
7. 最后 I/O Thread 和 SQL Thread 將進入睡眠狀態,等待下一次被喚醒;
:mysql要做到主從復制,就是A服務把自己所做的增刪改的操作全都記錄在日志中,B數據庫就根據這份日志上面的操作在自己身上再操作一遍,這樣就實現了主從復制;
如果在不使用中間件mycat的情況下,需要使用spring框架提供的AbstractRoutingDataSource類,通過重寫它的方法,可以實現數據源的切換。
總而言之,MySQL集群主從復制的存在是符合客觀規律的,既實現服務器負載均衡,又通過復制實現數據的異地備份,從而提高了數據庫系統的可用性。看完了本文對MySQL集群主從復制還要疑惑的小伙伴可以結合本站的MySQL主從復制教程中的MySQL集群主從復制的原理圖,圖文結合,更深入地理解其原理。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習