mycat的讀寫分離及數據源切換


mycat無論是讀寫分離還是切換數據源,都依賴mysql數據庫的主從複製。

mycat的讀寫分離

mycat的讀寫分離主要是爲了減小數據庫的IO壓力,將讀寫操作在不同機器上進行,一個主機節點可以包含多個寫庫和多個讀庫,在schema中的配置如下:
在這裏插入圖片描述在這裏插入圖片描述在這裏,可以看到這個主機節點MySQL_Host下有兩個寫庫,一個讀庫。一般,寫數據寫入第一個節點,因此剩下三個數據庫都作爲從庫與第一個寫節點的數據庫同步。

writeType
這個屬性決定了數據寫入哪個寫節點,爲0時,數據寫入第一個寫節點,當這個寫節點掛掉之後,切換寫入第二個寫節點,並且故障恢復後也不會再切回來,切換記錄記錄在文件dninindex.properties。
爲1時,代表數據隨機寫入所有的寫節點中,但是不推薦設爲1。

balance:
由於一般系統中讀庫的數量是要大於寫庫的,那麼就面臨一個讀庫負載均衡的問題,這個就有參數balance決定。
balance=0時,不開啓讀寫分離,所有讀操作都發送到當前可用的寫節點上。
balance=1,全部的readhost和standbywrite都參與讀操作,例如在上述配置文件中就是讀操作會隨機發送到"MySQL_S1"和"MySQL_M2"中。
balance=2,讀操作隨機在readhost和writehost中分發。
balance=3,所有的讀操作都隨機發送到writehost對應的readhost中。

數據源切換

當有數據庫節點發生故障,mycat具備切換功能,相關屬性switchtype可以取四個值,分爲三種情況:

第一種:switchtype=-1,表示不自動切換;

第二種:switchtype=0,自動切換
當主機或從機宕掉,自動切換到可用的服務器上。但是當前數據庫可能存在數據不同的情況,因此mycat提出了第二種切換方法:基於mysql主從同步延遲的切換。

第三種:switchtype=2,SlaveThreshold=100,基於mysql主從同步延遲的切換
這種方法與自動切換不同處在於它會自動切換到擁有最新數據的服務器上,原理是通過心跳檢測show slave status ,檢查三個字段Seconds_Behind_Master主從複製時延,Slave_IO_Running,Slave_SQL_Running,其Seconds_Behind_Master代表從庫relaylog的未被執行的差值,越小代表與主庫的同步越好,但是在網速高速穩定情況下才有意義。配置文件中的屬性SlaveThreshold=100,
與Seconds_Behind_Master進行比較,小於SlaveThreshold值的服務器滿足切換要求。

第四種:switchtype=3,基於Mysql Galay Cluster切換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章