MariaDB知識點總結03--從主+多主集羣

一.從主架構node

1.從主複製原理算法

 

 

 

從庫生成兩個線程,一個I/O線程,一個SQL線程;數據庫

i/o線程去請求主庫 的binlog,並將獲得的binlog日誌寫到relay log(中繼日誌) 文件中;
主庫會生成一個 log dump 線程,用來給從庫 i/o線程傳binlog;架構

SQL 線程,會讀取relay log文件中的日誌,並解析成具體操做,來實現主從的操做一致,而最終數據一致;負載均衡

2.主從架構特色異步

主從多用於網站架構,由於主從的同步機制是異步的,數據的同步有必定延遲,也就是說有可能會形成數據的丟失,可是性能比較好,性能

所以網站大多數用的是主從架構的數據庫,讀寫分離必須基於主從架構來搭建。測試

(1).讀寫分離並實現負載均衡網站

主從架構如何實現讀寫分離?須要經過mycat讀寫分離器來設置,當從客戶端發出寫權限的SQL語句(如:delete等)時,mycat會將其轉發給主數據庫;spa

當從客戶端發出讀權限的SQL語句(如:select等)時,mycat會將其轉發給從數據庫。這樣就實現了主從庫的讀寫分離,避免主數據庫的負載過大。

同時當一主多從架構,爲了實現從數據庫的負載均衡,能夠在mycat上再添上LVS,將讀權限的語句請求根據算法轉發到從數據庫上。

(2).如何預防單點故障(主數據庫宕機了。。)

方案一:MHA監控

 

 工做原理:

MHA經過部署在主從集羣上的node節點,時刻監控集羣上的master節點,當master宕機了,那麼MHA會馬上從集羣中選出一個從節點來

頂替主節點。從而實現集羣的高可用即預防單點故障。

方案二:主主架構

即互爲主備,互相監控對方的二進制日誌文件進行同步。不過這種方式要注意:可能會出現數據不一致狀況。

由於同步是異步同步,可能沒有及時同步數據,致使數據不一致。

固然能夠給每臺主機採用keepalived實現高可用(使用VIP對外提供服務)

建議採用高可用策略的時候,masterA或masterB均不因宕機恢復後而搶佔VIP(非搶佔模式);

 

二.多主架構(galera集羣)

1.主要功能

同步複製

真正的multi-master,即全部節點能夠同時讀寫數據庫

自動的節點成員控制,失效節點自動被清除

新節點加入數據自動複製

真正的並行複製,行級

用戶能夠直接鏈接集羣,使用感覺上與MySQL徹底一致

2.優點

由於是多主,因此不存在Slavelag(延遲)

不存在丟失事務的狀況

同時具備讀和寫的擴展能力

更小的客戶端延遲

節點間數據是同步的,而Master/Slave模式是異步的,不一樣slave上的binlog多是不一樣的

 3.工做原理(wsrep)

Galera集羣的複製功能基於Galeralibrary實現,爲了讓MySQL與Galera library通信,特別針對MySQL開發了wsrep API。

Galera插件保證集羣同步數據,保持數據的一致性,靠的就是可認證的複製,工做原理以下圖:

當客戶端發出一個commit的指令,在事務被提交以前,全部對數據庫的更改都會被 write-set 收集起來,而且將 write-set 紀錄的內容發送給其餘節點。

write-set 將在每一個節點進行認證測試,測試結果決定着節點是否應用write-set更改數據。

若是認證測試失敗,節點將丟棄 write-set ;若是認證測試成功,則事務提交。

相關文章
相關標籤/搜索