基于Mycat的MySQL讀寫分離與主從互備

Mycat介紹
Mycat,一個(gè)開源的分布式數(shù)據(jù)庫中間件,實(shí)現(xiàn)了MySQL協(xié)議劳殖,前端用戶可以把它看作是一個(gè)數(shù)據(jù)庫代理彤委,用MySQL客戶端工具和命令行訪問鞭铆;而后端可以用MySQL原生協(xié)議與多個(gè)MySQL服務(wù)器通信,也可以用JDBC協(xié)議與大多數(shù)主流數(shù)據(jù)庫服務(wù)器通信,其核心功能是分表分庫车遂,即將一個(gè)大表水平分割為N個(gè)小表封断,存儲(chǔ)在后端MySQL服務(wù)器里或者其他數(shù)據(jù)庫里。Mycat官網(wǎng):http://www.mycat.org.cn/

MySQL主從復(fù)制配置
主從復(fù)制是基于MySQL的replication機(jī)制實(shí)現(xiàn)舶担,可參考另一篇文章:http://www.reibang.com/p/eb0ac29c0ccc
這篇文章是講述MySQL的單向主從復(fù)制坡疼,只要把slave節(jié)點(diǎn)也按照master節(jié)點(diǎn)進(jìn)行配置,就可以實(shí)現(xiàn)雙向的主從復(fù)制衣陶。

Mycat主從互備配置
從官網(wǎng)下載Mycat柄瑰,我用的是1.6 windows版本。Mycat配置讀寫分離與主從互備只需修改conf目錄下的server.xml與schema.xml文件剪况。
server.xml中添加連接Mycat的用戶名密碼:
<user name="mycat">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
其中教沾,TESTDB要和schema.xml文件配置的schema對(duì)應(yīng),用戶名和密碼可任意命名译断。
schema.xml配置:

Paste_Image.png

hostM1:寫操作主節(jié)點(diǎn)
hostS1:讀操作節(jié)點(diǎn)(從節(jié)點(diǎn))
hostM2:寫操作備節(jié)點(diǎn)授翻,和讀操作節(jié)點(diǎn)是同一臺(tái)MySQL物理服務(wù)器

參數(shù)balance設(shè)置
balance決定了哪些MySQL服務(wù)器參與到讀操作的負(fù)載均衡中。
0:表示不開啟讀寫分離
1:表示全部的readHost與standby writeHost參與select語句的負(fù)載均衡
2:則表示所有的writeHost不參與負(fù)載均衡镐作。
這里有一個(gè)細(xì)節(jié)藏姐,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户侥。

參數(shù)writeType設(shè)置
0:表示所有寫操作發(fā)送到第一個(gè)writeHost,第一個(gè)宕機(jī)了切換到可用的第二個(gè)writeHost
1:表示所有寫操作都隨機(jī)的發(fā)送到所有的writeHost
2:貌似還沒實(shí)現(xiàn)

參數(shù)switchType設(shè)置
-1:表示不自動(dòng)切換
1:默認(rèn)值峦嗤,自動(dòng)切換
2:基于MySQL主從同步的狀態(tài)決定是否切換
當(dāng)switchType="2" 與slaveThreshold="100"蕊唐,意味著開啟MySQL主從復(fù)制狀態(tài)綁定的讀寫分離與切換機(jī)制,Mycat心跳機(jī)制通過檢測 show slave status 中的 "Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running" 三個(gè)字段來確定當(dāng)前主從同步的狀態(tài)以及Seconds_Behind_Master主從復(fù)制時(shí)延烁设,當(dāng)Seconds_Behind_Master > slaveThreshold時(shí)替梨,讀寫分離篩選器會(huì)過濾掉此Slave機(jī)器,防止讀到很久之前的舊數(shù)據(jù),而當(dāng)主節(jié)點(diǎn)宕機(jī)后副瀑,切換邏輯會(huì)檢查Slave上的Seconds_Behind_Master是否為0弓熏,為0時(shí)則表示主從同步,可以安全切換俗扇,否則不會(huì)
切換硝烂。
注意:要確保連接的MySQL用戶擁有執(zhí)行心跳檢測語句的權(quán)限

以上內(nèi)容參考自《Mycat權(quán)威指南》

至此,基于Mycat的MySQL讀寫分離與主從互備的高可用數(shù)據(jù)庫集群已配置完成铜幽,可使用命令行工具連接Mycat進(jìn)行測試:
mysql -hlocalhost -P8066 -umycat -p123456 -DTESTDB
只要writeHost不同時(shí)宕機(jī)滞谢,這個(gè)數(shù)據(jù)庫集群方案都是可用的。

注意:測試時(shí)除抛,插入的數(shù)據(jù)最好能區(qū)分是哪臺(tái)MySQL服務(wù)器的狮杨,比如使用某個(gè)字段插入@@hostname 來進(jìn)行區(qū)分。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末到忽,一起剝皮案震驚了整個(gè)濱河市橄教,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喘漏,老刑警劉巖护蝶,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異翩迈,居然都是意外死亡持灰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門负饲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堤魁,“玉大人,你說我怎么就攤上這事返十⊥兹” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵洞坑,是天一觀的道長盲链。 經(jīng)常有香客問我,道長迟杂,這世上最難降的妖魔是什么匈仗? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮逢慌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘间狂。我一直安慰自己攻泼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忙菠,像睡著了一般何鸡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牛欢,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天骡男,我揣著相機(jī)與錄音,去河邊找鬼傍睹。 笑死隔盛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拾稳。 我是一名探鬼主播吮炕,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼访得!你這毒婦竟也來了龙亲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤悍抑,失蹤者是張志新(化名)和其女友劉穎鳄炉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搜骡,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拂盯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浆兰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磕仅。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖簸呈,靈堂內(nèi)的尸體忽然破棺而出榕订,到底是詐尸還是另有隱情,我是刑警寧澤蜕便,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布劫恒,位于F島的核電站,受9級(jí)特大地震影響轿腺,放射性物質(zhì)發(fā)生泄漏两嘴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一族壳、第九天 我趴在偏房一處隱蔽的房頂上張望憔辫。 院中可真熱鬧,春花似錦仿荆、人聲如沸贰您。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锦亦。三九已至舶替,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杠园,已是汗流浹背顾瞪。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抛蚁,地道東北人陈醒。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像篮绿,于是被迫代替她去往敵國和親孵延。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容