MyCat读写分离
讀寫分離
數(shù)據(jù)庫讀寫分離對于大型系統(tǒng)
或者訪問量很高的互聯(lián)網應用來說,是必不可少的一個重要功能
對于MySQL來說,標準的讀寫分離是主從模式
一個寫節(jié)點Master后面跟著多個讀節(jié)點,讀節(jié)點的數(shù)量取決于系統(tǒng)的壓力
通常是1-3個讀節(jié)點的配置
Mycat讀寫分離和自動切換機制
需要mysql的主從復制機制配合
Mysql主從復制,參考之前博客
MySQL主從配置完成
Mycat配置
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100"><heartbeat>show slave status</heartbeat><writeHost host="hostM" url="192.168.25.134:3306" user="root"password="root"><readHost host="hostS" url="192.168.25.166:3306" user="root"password="root" /></writeHost> </dataHost>配置balance=”1”
Balance參數(shù)設置
balance=“0”, 所有讀操作都發(fā)送到當前可用的writeHost上
balance=“1”,所有讀操作都隨機的發(fā)送到readHost
balance=“2”,所有讀操作都隨機的在writeHost、readhost上分發(fā)
配置writeType=”0”
WriteType參數(shù)設置
writeType=“0”, 所有寫操作都發(fā)送到可用的writeHost上
writeType=“1”,所有寫操作都隨機的發(fā)送到readHost
writeType=“2”,所有寫操作都隨機的在writeHost、readhost分上發(fā)
readHost是從屬于writeHost的
即意味著它從那個writeHost獲取同步數(shù)據(jù)
因此,當它所屬的writeHost宕機了,則它也不會再參與到讀寫分離中來
即不工作了,這是因為此時,它的數(shù)據(jù)已經不可靠了
基于這個考慮,目前mycat 1.3和1.4版本中,若想支持MySQL一主一從的標準配置,并且,在主節(jié)點宕機的情況下,從節(jié)點還能讀取數(shù)據(jù),則需要在Mycat里配置為兩個writeHost并設置banlance=1
配置switchType=”2”
switchType目前有三種選擇
-1:表示不自動切換
1 :默認值,自動切換
2 :基于MySQL主從同步的狀態(tài)決定是否切換
配置slaveThreshold=”100”
Mycat心跳檢查語句配置為 show slave status
dataHost 上定義兩個新屬性
switchType=”2” 與slaveThreshold=”100”
此時,意味著開啟MySQL主從復制狀態(tài)綁定的讀寫分離與切換機制
Mycat心跳機制通過檢測 show slave status 中的 “Seconds_Behind_Master”, “Slave_IO_Running”, “Slave_SQL_Running” 三個字段,來確定當前主從同步的狀態(tài),以及Seconds_Behind_Master主從復制時延
總結
- 上一篇: MyCat数据库分片
- 下一篇: Spring boot配置类