MyCat读写分离
讀寫分離
數(shù)據(jù)庫(kù)讀寫分離對(duì)于大型系統(tǒng)
或者訪問量很高的互聯(lián)網(wǎng)應(yīng)用來說,是必不可少的一個(gè)重要功能
對(duì)于MySQL來說,標(biāo)準(zhǔn)的讀寫分離是主從模式
一個(gè)寫節(jié)點(diǎn)Master后面跟著多個(gè)讀節(jié)點(diǎn),讀節(jié)點(diǎn)的數(shù)量取決于系統(tǒng)的壓力
通常是1-3個(gè)讀節(jié)點(diǎn)的配置
Mycat讀寫分離和自動(dòng)切換機(jī)制
需要mysql的主從復(fù)制機(jī)制配合
Mysql主從復(fù)制,參考之前博客
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ù)設(shè)置
balance=“0”, 所有讀操作都發(fā)送到當(dāng)前可用的writeHost上
balance=“1”,所有讀操作都隨機(jī)的發(fā)送到readHost
balance=“2”,所有讀操作都隨機(jī)的在writeHost、readhost上分發(fā)
配置writeType=”0”
WriteType參數(shù)設(shè)置
writeType=“0”, 所有寫操作都發(fā)送到可用的writeHost上
writeType=“1”,所有寫操作都隨機(jī)的發(fā)送到readHost
writeType=“2”,所有寫操作都隨機(jī)的在writeHost、readhost分上發(fā)
readHost是從屬于writeHost的
即意味著它從那個(gè)writeHost獲取同步數(shù)據(jù)
因此,當(dāng)它所屬的writeHost宕機(jī)了,則它也不會(huì)再參與到讀寫分離中來
即不工作了,這是因?yàn)榇藭r(shí),它的數(shù)據(jù)已經(jīng)不可靠了
基于這個(gè)考慮,目前mycat 1.3和1.4版本中,若想支持MySQL一主一從的標(biāo)準(zhǔn)配置,并且,在主節(jié)點(diǎn)宕機(jī)的情況下,從節(jié)點(diǎn)還能讀取數(shù)據(jù),則需要在Mycat里配置為兩個(gè)writeHost并設(shè)置banlance=1
配置switchType=”2”
switchType目前有三種選擇
-1:表示不自動(dòng)切換
1 :默認(rèn)值,自動(dòng)切換
2 :基于MySQL主從同步的狀態(tài)決定是否切換
配置slaveThreshold=”100”
Mycat心跳檢查語句配置為 show slave status
dataHost 上定義兩個(gè)新屬性
switchType=”2” 與slaveThreshold=”100”
此時(shí),意味著開啟MySQL主從復(fù)制狀態(tài)綁定的讀寫分離與切換機(jī)制
Mycat心跳機(jī)制通過檢測(cè) show slave status 中的 “Seconds_Behind_Master”, “Slave_IO_Running”, “Slave_SQL_Running” 三個(gè)字段,來確定當(dāng)前主從同步的狀態(tài),以及Seconds_Behind_Master主從復(fù)制時(shí)延
總結(jié)
- 上一篇: MyCat数据库分片
- 下一篇: Dubbo服务发布调用