原文:https://dwz.cn/55KN8AA0
作者:波波烤鴨
一、讀寫分離配置
前面我們已經(jīng)介紹過(guò)了MySQL的主從同步和mycat的安裝及相關(guān)配置文件的介紹,現(xiàn)在我們來(lái)配置下具體的讀寫分離操作。
1.1 創(chuàng)建物理表
我們現(xiàn)在master庫(kù)中創(chuàng)建一張t_user表,因?yàn)橹鲝牡年P(guān)系,slave中也會(huì)同步創(chuàng)建該表
1.2 schema.xml配置
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="t_user" primaryKey="ID" type="global" dataNode="dn1" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="demo1" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()‘’</heartbeat> <writeHost host="hostM1" url="192.168.88.180:3306" user="root" password="123456"> <readHost host="hostS2" url="192.168.88.181:3306" user="root" password="123456" /> </writeHost> </dataHost>
</mycat:schema>
注意:
- schema中的name TESTDB 沒(méi)變
- table中的是邏輯表的名稱,所以和物理表同名’t_user’
- dataNode中的database表示的是物理數(shù)據(jù)庫(kù)名稱demo1
- balance的值要設(shè)置為1否則查詢會(huì)讀取不到從庫(kù)的數(shù)據(jù)
- writeHost中的url表示寫庫(kù)的地址
- readHost表示配置讀庫(kù)的信息
- user屬性對(duì)應(yīng)的應(yīng)該是server.xml中配置的賬號(hào)
balance的值描述0不開啟讀寫分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的 writeHost 上1全部的 readHost 與 stand by writeHost(分庫(kù)中沒(méi)有參與寫操作的) 參與 select 語(yǔ)句的負(fù)載均衡2所有讀操作都隨機(jī)的在 writeHost、 readhost 上分發(fā)。3所有讀請(qǐng)求隨機(jī)的分發(fā)到 writeHost 對(duì)應(yīng)的 readhost 執(zhí)行,writerHost 不負(fù)擔(dān)讀壓力
1.3 server.xml配置
本案例中server.xml文件不需要修改,如果在schema.xml中中將TESTDB修改了那么在server.xml文件中對(duì)應(yīng)的也需要修改
1.4 rule.xml配置
在讀寫分離中不需要修改rule.xml文件
二、MyCat啟動(dòng) 通過(guò)前面的介紹我們已經(jīng)安裝好了MyCat,現(xiàn)在我們先啟動(dòng)MyCat,MyCat的啟動(dòng)腳本位于bin目錄下,常用的命令
操作命令啟動(dòng)./bin/mycat start停止./bin/mycat stop重啟./bin/mycat restart查詢狀態(tài)./bin/mycat status
三、測(cè)試讀寫分離
3.1 客戶端連接MyCat
我們可以通過(guò)客戶端來(lái)連接MyCat操作,客戶端可以是Navicat或者DataGrip,本文通過(guò)Navicat來(lái)連接,注意連接的端口為8066
3.2 寫數(shù)據(jù)測(cè)試
我們通過(guò)mycat連接來(lái)執(zhí)行insert語(yǔ)句,來(lái)查看是否會(huì)寫入到物理庫(kù)中。
如上,通過(guò)對(duì)MyCat的邏輯庫(kù)的寫操作,真實(shí)的寫入到了物理庫(kù)中。
3.3 讀數(shù)據(jù)測(cè)試
接下來(lái)我們看下讀操作,為了演示讀操作,我們直接在slave中手動(dòng)插入一條數(shù)據(jù),這樣主庫(kù)和從庫(kù)中的數(shù)據(jù)就不一樣了,這時(shí)我們通過(guò)MyCat來(lái)查詢數(shù)據(jù),通過(guò)查詢的結(jié)果就能判斷出查詢的數(shù)據(jù)到底是哪個(gè)庫(kù)的數(shù)據(jù)了。具體操作如下:
通過(guò)上面的演示驗(yàn)證了我們通過(guò)MyCat配置的讀寫分離是成功的!






