mysql讀寫分離

1.讀寫分離的思路

1.1 原理

顧名思義刨晴,讀寫分離基本的原理是讓主數(shù)據(jù)庫處理事務(wù)性增路翻、改狈癞、刪操作蝶桶,而從數(shù)據(jù)庫處理查詢操作脐雪。數(shù)據(jù)庫復(fù)制被用來把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫恢共。

1.2 實現(xiàn)方式

實現(xiàn)方式有很多,但是不外乎分為內(nèi)部配置和使用中間件,下面列舉幾個常用的方法:
1.配置多個數(shù)據(jù)源透硝,根據(jù)業(yè)務(wù)需求訪問不同的數(shù)據(jù)狰闪,指定對應(yīng)的策略:增加,刪除蹬铺,修改操作訪問對應(yīng)數(shù)據(jù)囱淋,查詢訪問對應(yīng)數(shù)據(jù)媒役,不同數(shù)據(jù)庫做好的數(shù)據(jù)一致性的處理。由于此方法相對易懂,簡單躬充,不做過多介紹。

  1. 通過mycat來實現(xiàn)讀寫分離:使用mycat提供的讀寫分離功能挣跋,mycat連接多個數(shù)據(jù)庫衷咽,數(shù)據(jù)源只需要連接mycat,對于開發(fā)人員而言他還是連接了一個數(shù)據(jù)庫(實際是mysql的mycat中間件)谁撼,而且也不需要根據(jù)不同業(yè)務(wù)來選擇不同的庫歧胁,這樣就不會有多余的代碼產(chǎn)生。

每個方法都有優(yōu)缺點厉碟,我們選擇對程序代碼改動最小(只改數(shù)據(jù)源)的方法三喊巍,講解mycat的配置和使用。

2.Mycat安裝和配置

2.1安裝步驟

#安裝Java環(huán)境(mycat基于java)
yum install java-1.8.0-openjdk.x86_64 
# 下載mycat
wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
# 解壓
tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
# 剪切到/usr/local下
mv mycat /usr/local/
# 創(chuàng)建專門運行mycat賬號
adduser mycat
# 切換到mycat文件夾路徑下
cd /usr/local
# 將文件權(quán)限賦給mycat賬號
chown mycat:mycat -R mycat
#配置環(huán)境變量并添加 export JAVA_HOME=/usr export MYCAT_HOME=/usr/local/mycat(如下圖所示)
vim /etc/profile
image.png

按Esc箍鼓,輸入:wq保存退出

# 刷新環(huán)境變量文件
source /etc/profile
# 切換mycat用戶
su mycat
#切換目錄
cd /usr/local/mycat/bin/
#啟動mycat
./mycat start
image.png

好了崭参,mycat啟動成功,我們來看一下讀寫分離的配置和mycat的連接配置!

3.配置Mycat的讀寫分離

3.1 Mycat的目錄結(jié)構(gòu)

根目錄


image.png

進到conf文件夾里面查看配置文件:


image.png

3.2 配置讀寫分離信息

進入配置文件

vi /usr/local/mycat/conf/schema.xml

以下是兩種配置方式和配置說明
1. 提供一個數(shù)據(jù)庫內(nèi)所有表的權(quán)限:


這里寫圖片描述

2. 只顯示一個數(shù)據(jù)庫的指定表:


這里寫圖片描述

這樣對于數(shù)據(jù)庫的讀寫信息就配置完成了款咖;一般剛開始做何暮,先使用第一種方法。


這里寫圖片描述

4.配置Mycat的連接信息(賬號密碼)

#進入配置文件
vi /usr/local/mycat/conf/server.xml

設(shè)置端口和mycat連接信息


這里寫圖片描述
這里寫圖片描述

對于<dataHost>標簽铐殃,它里面重要的參數(shù)列舉如下:

balance指的負載均衡類型海洼,目前的取值有4種:
1. balance=”0”, 不開啟讀寫分離機制,所有讀操作都發(fā)送到當前可用的writeHost上富腊。
2. balance=”1”坏逢,全部的readHost與stand bywriteHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1词疼,M2->S2俯树,并且M1與 M2互為主備),
正常情況下贰盗,M2,S1,S2都參與select語句的負載均衡许饿。
3. balance=”2”,所有讀操作都隨機的在writeHost舵盈、readhost上分發(fā)陋率。
4. balance=”3”,所有讀請求隨機的分發(fā)到wiriterHost對應(yīng)的readhost執(zhí)行秽晚,writerHost不負擔讀壓力
注意:balance=3只在1.4及其以后版本有瓦糟,1.3沒有。

writeType屬性:
1.writeType=”0”,所有寫操作發(fā)送到配置的第一個writeHost,第一個掛了切到還生存的第二個writeHost,重新啟動后以切換后的為準赴蝇,切換記錄在配置文件中:dnindex.properties.
2.writeType=”1”,所有寫操作都隨機地發(fā)送到配置的writeHost,1.5以后廢棄不推薦菩浙。

switchType指的是切換的模式,目前的取值也有4種:
1. switchType=’-1’ 表示不自動切換
2. switchType=’1’ 默認值句伶,表示自動切換
3. switchType=’2’ 基于MySQL主從同步的狀態(tài)決定是否切換,心跳語句為 show slave status
4. switchType=’3’基于MySQLgalary cluster的切換機制(適合集群)(1.4.1)劲蜻,心跳語句為 show status like ‘wsrep%’。

注意:估計Mycat1.4才開始支持switchType考余。1.3版本配置該屬性的話先嬉,日志里會報錯:org.xml.sax.SAXParseException;lineNumber: 61; columnNumber: 86; 
Attribute “switchType” must bedeclared for element type “dataHost”。

MyCAT心跳檢查詢句配置為 show slave status 楚堤,dataHost 上定義兩個新屬性: switchType=”2” 與slaveThreshold=”100”疫蔓,
此時意味著開啟MySQL主從復(fù)制狀態(tài)綁定的讀寫分離與切換機制,Mycat心跳機制通過檢測 show slave status 中的 “Seconds_Behind_Master”,”Slave_IO_Running”,
”Slave_SQL_Running”三個字段來確定當前主從同步的狀態(tài)及Seconds_Behind_Master主從復(fù)制時延身冬,當Seconds_Behind_Master>slaveThreshold時衅胀,
讀寫分離篩選器會過濾掉此Slave機器,防止讀到很久以前的舊數(shù)據(jù)酥筝,當主節(jié)點宕機后滚躯,切換邏輯會檢查Slave上的Seconds_Behind_Master是否為0
,為0時則表示主僅同步樱哼,可安全切換,否則不會切換剿配。

5搅幅、測試連接

Mycat的配置到這里就算完成了,現(xiàn)在我們重啟Mycat并連接測試

#切換路徑
cd /usr/local/mycat/bin
#重啟
./mycat restart
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呼胚,一起剝皮案震驚了整個濱河市茄唐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖沪编,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呼盆,死亡現(xiàn)場離奇詭異,居然都是意外死亡蚁廓,警方通過查閱死者的電腦和手機访圃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來相嵌,“玉大人腿时,你說我怎么就攤上這事》贡觯” “怎么了批糟?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長看铆。 經(jīng)常有香客問我徽鼎,道長,這世上最難降的妖魔是什么弹惦? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任否淤,我火速辦了婚禮,結(jié)果婚禮上肤频,老公的妹妹穿的比我還像新娘叹括。我一直安慰自己,他們只是感情好宵荒,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布汁雷。 她就那樣靜靜地躺著,像睡著了一般报咳。 火紅的嫁衣襯著肌膚如雪侠讯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天暑刃,我揣著相機與錄音厢漩,去河邊找鬼。 笑死岩臣,一個胖子當著我的面吹牛溜嗜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播架谎,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼炸宵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谷扣?” 一聲冷哼從身側(cè)響起土全,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后裹匙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑞凑,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年概页,在試婚紗的時候發(fā)現(xiàn)自己被綠了籽御。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绰沥,死狀恐怖篱蝇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情徽曲,我是刑警寧澤零截,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站秃臣,受9級特大地震影響涧衙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奥此,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一弧哎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稚虎,春花似錦撤嫩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寻拂,卻和暖如春程奠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背祭钉。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工瞄沙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慌核。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓距境,卻偏偏與公主長得像,于是被迫代替她去往敵國和親垮卓。 傳聞我的和親對象是個殘疾皇子垫桂,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354