原文:https://dwz.cn/55KN8AA0?
作者:波波烤鴨
一、讀寫分離配置
前面我們已經(jīng)介紹過了mysql的主從同步和mycat的安裝及相關(guān)配置文件的介紹,現(xiàn)在我們來配置下具體的讀寫分離操作欣范。
1.1 創(chuàng)建物理表
我們現(xiàn)在master庫中創(chuàng)建一張t_user表,因?yàn)橹鲝牡年P(guān)系戒悠,slave中也會(huì)同步創(chuàng)建該表
image
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 沒變
table中的是邏輯表的名稱,所以和物理表同名’t_user’
dataNode中的database表示的是物理數(shù)據(jù)庫名稱demo1
balance的值要設(shè)置為1否則查詢會(huì)讀取不到從庫的數(shù)據(jù)
writeHost中的url表示寫庫的地址
readHost表示配置讀庫的信息
user屬性對應(yīng)的應(yīng)該是server.xml中配置的賬號
balance的值描述
0不開啟讀寫分離機(jī)制烦衣,所有讀操作都發(fā)送到當(dāng)前可用的 writeHost 上
1全部的 readHost 與 stand by writeHost(分庫中沒有參與寫操作的) 參與 select 語句的負(fù)載均衡
2所有讀操作都隨機(jī)的在 writeHost嚷闭、 readhost 上分發(fā)。
3所有讀請求隨機(jī)的分發(fā)到 writeHost 對應(yīng)的 readhost 執(zhí)行,writerHost 不負(fù)擔(dān)讀壓力
1.3 server.xml配置
本案例中server.xml文件不需要修改论寨,如果在schema.xml中中將TESTDB修改了那么在server.xml文件中對應(yīng)的也需要修改
1.4 rule.xml配置
在讀寫分離中不需要修改rule.xml文件
二症副、MyCat啟動(dòng) ??通過前面的介紹我們已經(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
image
三政基、測試讀寫分離
3.1 客戶端連接MyCat
我們可以通過客戶端來連接MyCat操作贞铣,客戶端可以是Navicat或者DataGrip,本文通過Navicat來連接,注意連接的端口為8066
image
image
3.2 寫數(shù)據(jù)測試
我們通過mycat連接來執(zhí)行insert語句沮明,來查看是否會(huì)寫入到物理庫中辕坝。
image
如上,通過對MyCat的邏輯庫的寫操作荐健,真實(shí)的寫入到了物理庫中酱畅。
3.3 讀數(shù)據(jù)測試
接下來我們看下讀操作,為了演示讀操作江场,我們直接在slave中手動(dòng)插入一條數(shù)據(jù)纺酸,這樣主庫和從庫中的數(shù)據(jù)就不一樣了,這時(shí)我們通過MyCat來查詢數(shù)據(jù)址否,通過查詢的結(jié)果就能判斷出查詢的數(shù)據(jù)到底是哪個(gè)庫的數(shù)據(jù)了餐蔬。具體操作如下:
image
通過上面的演示驗(yàn)證了我們通過MyCat配置的讀寫分離是成功的!