mycat實現讀寫分離

1.這裏是在mysql主從複製實現的基礎上,利用mycat做讀寫分離,架構圖如下:

mycat實現讀寫分離

mycat下載
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

解壓即可
tar xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

vim conf/server.xml

    <!--表示mycat的登錄用戶名-->

 <user name="test">

    <!--表示mycat的登錄密碼-->

    <property name="password">123</property>

    <!--表示mycat的邏輯數據庫名稱,可以自定義-->

    <property name="schemas">abc</property>

 <user name="testc1">

    <property name="password">123</property>

    <property name="schemas">abc</property>

    <property name="readOnly">true</property>

</user>

vim conf/schema.xml

   <!--TESTDB表示mycat的邏輯數據庫名稱

     當schema節點沒有子節點table的時候,一定要有dataNode屬性存在(指向mysql真實數據庫)-->

<mycat:schema xmlns:mycat="http://io.mycat/">      

<schema name="abc" checkSQLschema="false" sqlMaxLimit="100" dataNode='dn1'>

</schema>      

  <!--指定master的數據庫my20180427-->                               

<dataNode name="dn1" dataHost="192.168.0.4" database="my20180427" />                                                                                                                                                    

 <!--指定mastet的ip -->

<dataHost name="192.168.0.4" maxCon="1000" minCon="10" balance="3"

         writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

    <!--表示mysql的心跳狀態-->

    <heartbeat>select user()</heartbeat>

       <!-- master負責寫 -->       

    <writeHost host="hostM1" url="192.168.0.4:3939" user="root"

   password="123">

    <!--slave負責讀-->                        

    <readHost host="hostM1" url="192.168.0.5:3838" user="root"

   password="123">                        

    </readHost>                                

    </writeHost>                               

        </dataHost>                                                                                   

 </mycat:schema>       

到這裏,利用mycat做讀寫分離就已經配置完了,注意 dataHost節點的下面三個屬性

balance, switchType, writeType

balance="0", 不開啓讀寫分離機制,所有讀操作都發送到當前可用的writeHost上。

balance="1",全部的readHost與stand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,並且M1與M2互爲主備),正常情況下,M2,S1,S2都參與select語句的負載均衡。

balance="2",所有讀操作都隨機的在writeHost、readhost上分發。

balance="3",所有讀請求隨機的分發到writeHost下的readhost執行,writeHost不負擔讀壓力

writeType表示寫模式

writeType="0",所有的操作發送到配置的第一個writehost

writeType="1",隨機發送到配置的所有writehost

writeType="2",不執行寫操作

switchType指的是切換的模式,目前的取值也有4種:

switchType=‘-1‘ 表示不自動切換

switchType=‘1‘ 默認值,表示自動切換

switchType=‘2‘ 基於MySQL主從同步的狀態決定是否切換,心跳語句爲show slave status

switchType=‘3‘基於MySQL galary cluster的切換機制(適合集羣)(1.4.1),心跳語句爲show status like ‘wsrep%‘。

啓動mycat
./bin/mycat start

連接 上mycat (mycat監聽端口8066),登陸進行讀寫分離測試
mysql -utest -p -P8066 -h 127.0.0.1

參考 <https://www.cnblogs.com/520playboy/p/6159751.html&gt;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章