MyCat的讀寫分離是建⽴在MySQL主從複製基礎之上實現的,因此必須先搭建MySQL的主從複製。
數據庫讀寫分離對於⼤型系統或者訪問量很⾼的互聯⽹應⽤來講,是必不可少的⼀個重要功能。對於MySQL來講,標準的讀寫分離是主從模式,⼀個寫節點Master後⾯跟着多個讀節點,讀節點的數量取決於系統的壓⼒,一般是1-3個讀節點的配置
Mycat實現的讀寫分離和⾃動切換機制,須要mysql的主從複製機制配合。mysql
Mycat配置
Mycat 1.4 ⽀持MySQL主從複製狀態綁定的讀寫分離機制,讓讀更加安全可靠,配置以下:
(1) 設置 balance="1"與writeType="0"
Balance參數設置:sql
WriteType參數設置:數據庫
「readHost是從屬於writeHost的,即意味着它從那個writeHost獲取同步數據,所以,當它所屬的writeHost宕機了,則它也不會再參與到讀寫分離中來,即「不⼯做了」,這是由於此時,它的數據已經「不可靠」了。基於這個考慮,⽬前mycat 1.3和1.4版本中,若想⽀持MySQL⼀主⼀從的標準配置,而且在主節點宕機的狀況下,從節點還能讀取數據,則須要在Mycat⾥配置爲兩個writeHost並設置banlance=1。」
(2) 設置 switchType="2" 與slaveThreshold="100"
switchType ⽬前有三種選擇:
-1:表示不⾃動切換
1:默認值,⾃動切換
2:基於MySQL主從同步的狀態決定是否切換
Mycat⼼跳檢查語句配置爲 show slave status ,dataHost 上定義兩個新屬性: switchType="2" 與slaveThreshold="100",此時意味着開啓MySQL主從複製狀態綁定的讀寫分離與切換機制。Mycat⼼跳機制經過檢測 show slave status 中的 "Seconds_Behind_Master", "Slave_IO_Running","Slave_SQL_Running" 三個字段來肯定當前主從同步的狀態以及Seconds_Behind_Master主從複製時延。安全