您好,登錄后才能下訂單哦!
1. Mycat高可用-讀寫分離
1.1 讀寫分離配置參數(shù)
1.2 心跳配置參數(shù)
2. Mycat高可用-多主切換
2.1 主從切換配置參數(shù)
2.2 主從切換標(biāo)記
3 注解
Schema.dataHost 參數(shù)balance設(shè)置值:
balance=”0”, 不開啟讀寫分離機制,所有讀操作都發(fā)送到當(dāng)前可用的writeHost上。
balance=”1”,全部的readHost與stand by writeHost參與select語句的負載均衡,
簡單的說,當(dāng)雙主雙從模式(M1->S1,M2->S2,并且M1與 M2互為主備),
正常情況下,M2,S1,S2都參與select語句的負載均衡。
balance=”2”,所有讀操作都隨機的在writeHost、readhost上分發(fā)。
balance=”3”,所有讀請求隨機的分發(fā)到wiriterHost對應(yīng)的readhost執(zhí)行,writerHost不負擔(dān)讀壓力
事務(wù)內(nèi)的SQL,默認走寫節(jié)點,以注釋/balance/開頭,則會根據(jù)balance=“1”或“2”去獲取 b.
非事務(wù)內(nèi)的SQL,開啟讀寫分離默認根據(jù)balance=“1”或“2”去獲取,以注釋/balance/開頭則會走寫解決部分已
經(jīng)開啟讀寫分離,但是需要強一致性數(shù)據(jù)實時獲取的場景走寫
switchType=“1” :基于基本的表訪問判斷 schema.xml
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0"dbType="mysql" dbDriver="native" switchType=“1" slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="hostM1" url="localhost:3306" user="root“ password="123456" /><writeHost host="hostS1" url="localhost:3316" user="root“ password="123456" /></dataHost>
switchType=“2” : show slave status會顯示主從同步狀態(tài) schema.xml
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0"dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100"><heartbeat>show slave status </heartbeat><writeHost host="hostM1" url="localhost:3306" user="root“ password="123456" /><writeHost host="hostS1" url="localhost:3316" user="root“ password="123456" /></dataHost>
Mycat心跳機制通過檢測 show slave status 中的 “Seconds_Behind_Master”, “Slave_IO_Running”, “Slave_SQL_Running” 三個字段來確定當(dāng)前主從同步的狀態(tài)以及Seconds_Behind_Master主從復(fù)制時延,當(dāng)Seconds_Behind_Master>slaveThreshold時,讀寫分離篩選器會過濾掉此Slave機器。
switchType=”3” ,MyCAT心跳檢查語句配置為 show status like ‘wsrep%’ ,開啟MySQL集群復(fù)制狀態(tài)狀態(tài)綁定的讀寫分離與切換機制 schema.xml
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0"dbType="mysql" dbDriver="native" switchType="3" ><heartbeat> show status like ‘wsrep%’</heartbeat><writeHost host="hostM1" url="localhost:3306" user="root“ password="123456"> </writeHost><writeHost host="hostS1“ url="localhost:3316"user="root“ password="123456" ></writeHost></dataHost>
配置文件:conf/log4j2.xml
日志文件:logs/mycat.log
說明:修改log4j日志收集為debug方式,通過log信息可以分析出來是否讀寫分離發(fā)
生在那個節(jié)點
schema.xml
<dataHost name="dh-01" maxCon="1000" minCon="10" balance="1“ writeType="0"dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="hostM1" url="localhost:3306" user="root“ password="root"></writeHost><writeHost host="hostS1" url="localhost:3306" user="root“ password="root"></writeHost></dataHost>
需要配置多個
writeHost
節(jié)點
switchType屬性
-1 表示不自動切換
1 默認值,自動切換
2 基于MySQL主從同步的狀態(tài)決定是否切換 ,心跳語句為show slave status
3 基于MySQL galary cluster的切換機制(適合集群)心跳語句為 show status like ‘wsrep%’
conf/dnindex.properties
#update#Tue Jul 25 14:20:40 CST 2017dh-01=0
使用中注意事項:
前提是的配置至少2個writeHost
并且開啟自動切換
能不自動切就別自動切
能手動執(zhí)行就不要自動
數(shù)據(jù)丟失問題
原主加入后當(dāng)從
mycat對不支持的sql提供一種方案即為注解(在要執(zhí)行的sql語句前添加額外的一段由注解sql組成的代碼,這樣sql就能正確執(zhí)行,相當(dāng)于對不支持的sql語句做了一層透明代理轉(zhuǎn)發(fā)。)
形式是: /*!mycat: sql=Sql語句*/真正執(zhí)行Sql
注解支持的’!’不被 mysql 單庫兼容,
注解支持的’#’不被 mybatis 兼容
新增加 mycat 字符前綴標(biāo)志 Hintsql:”/* mycat: /”
參數(shù)說明整理列表:
參考資料:
[1] http://mycat.io/
[2] 《分布式數(shù)據(jù)庫架構(gòu)及企業(yè)實踐——基于Mycat中間件》
[3] 龍哥官方課程課件
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。