mycat配置mysql的讀寫分離

讀寫分離模式

修改mycat的schema.xml:

balance爲1:讓全部的readHost及備用的writeHost參與select的負載均衡。 
switchType爲2:基於MySQL主從同步的狀態決定是否切換。 
heartbeat:主從切換的心跳語句必須爲show slave status。 

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"
    switchType="1"     slaveThreshold="100">

這裏只需要配置三個地方    balance="1"與writeType="0" ,switchType=”1”


a. balance 屬性負載均衡類型,目前的取值有 4 種:
1. balance="0", 不開啓讀寫分離機制,所有讀操作都發送到當前可用的 writeHost 上。
2. balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負載均衡,簡單的說,當雙主雙從模式(M1 ->S1 , M2->S2,並且 M1 與 M2 互爲主備),正常情況下, M2,S1,S2 都參與 select 語句的負載均衡。
3. balance="2",所有讀操作都隨機的在 writeHost、 readhost 上分發。
4. balance="3", 所有讀請求隨機的分發到 wiriterHost 對應的 readhost 執行,writerHost 不負擔讀壓力,注意 balance=3 只在 1.4 及其以後版本有, 1.3 沒有。


b. writeType 屬性
負載均衡類型,目前的取值有 3 種:
1. writeType="0", 所有寫操作發送到配置的第一個 writeHost,第一個掛了切到還生存的第二個
writeHost,重新啓動後已切換後的爲準,切換記錄在配置文件中:dnindex.properties .
2. writeType="1",所有寫操作都隨機的發送到配置的 writeHost。1.5後廢棄,不推薦


c. switchType 屬性
- -1 表示不自動切換
- 1 默認值,自動切換
- 2 基於MySQL 主從同步的狀態決定是否切換


slaveThreshold="100"
開始支持 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 主從複製時延,
當Seconds_Behind_Master>slaveThreshold 時,讀寫分離篩選器會過濾掉此Slave機器,防止讀到很久之前的舊數據,而當主節點宕機後,切換邏輯會檢查Slave上的Seconds_Behind_Master是否爲0,爲0時則表示主從同步,可以安全切換,否則不會切換。


<heartbeat>select user()</heartbeat>
心跳檢查語句
 

 

 

 

 

主從切換測試

mycat託管配置如下

實際生產環境需要配置雙主,不會切到讀庫

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