天天看點

MyCat教程【讀寫分離】

本文我們來給大家介紹下通過MyCat來實作MySQL的讀寫分離操作

MyCat讀寫分離

一、讀寫分離配置

 前面我們已經介紹過了mysql的主從同步和mycat的安裝及相關配置檔案的介紹,現在我們來配置下具體的讀寫分離操作。

1.1 建立實體表

 我們現在master庫中建立一張t_user表,因為主從的關系,slave中也會同步建立該表。

MyCat教程【讀寫分離】
1.1 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表示的是實體資料庫名稱demo1

balance的值要設定為1否則查詢會讀取不到從庫的資料

writeHost中的url表示寫庫的位址

readHost表示配置讀庫的資訊

user屬性對應的應該是server.xml中配置的賬号

MyCat教程【讀寫分離】

1.2 server.xml配置

 本案例中server.xml檔案不需要修改,如果在schema.xml中中将TESTDB修改了那麼在server.xml檔案中對應的也需要修改

1.3 rule.xml配置

 在讀寫分離中不需要修改rule.xml檔案

二、MyCat啟動

 通過前面的介紹我們已經安裝好了MyCat,現在我們先啟動MyCat,MyCat的啟動腳本位于bin目錄下,常用的指令

MyCat教程【讀寫分離】
MyCat教程【讀寫分離】

三、測試讀寫分離

3.1 用戶端連接配接MyCat

 我們可以通過用戶端來連接配接MyCat操作,用戶端可以是Navicat或者DataGrip,本文通過Navicat來連接配接,注意連接配接的端口為8066

MyCat教程【讀寫分離】
MyCat教程【讀寫分離】

3.2 寫資料測試

 我們通過mycat連接配接來執行insert語句,來檢視是否會寫入到實體庫中。

MyCat教程【讀寫分離】

如上,通過對MyCat的邏輯庫的寫操作,真實的寫入到了實體庫中。

3.3 讀資料測試

 接下來我們看下讀操作,為了示範讀操作,我們直接在slave中手動插入一條資料,這樣主庫和從庫中的資料就不一樣了,這時我們通過MyCat來查詢資料,通過查詢的結果就能判斷出查詢的資料到底是哪個庫的資料了。具體操作如下:

MyCat教程【讀寫分離】

通過上面的示範驗證了我們通過MyCat配置的讀寫分離是成功的!好了本文到此,下篇我們介紹MyCat的分庫分表操作。