安裝mycat在這裏就不說了。。。
1,配置mysql主從複製(見上一篇)
主庫:192.168.0.25:3306
從庫:192.168.0.107:3306
2,修改schema.xml文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="mycat25" database="test"/>
<dataHost name="mycat25" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>show SLAVE status</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.0.25:3306" user="XXXX" password="XXXXX">
<!-- can have multi read hosts -->
<readHost host="hostS1" url="192.168.0.107:3306" user="XXXX" password="XXXXX"/>
</writeHost>
</dataHost>
</mycat:schema>
java 項目直接連接mycat的TESTDB 即可。用戶名密碼使用mycat的server.xml裏頭配置的即可。
這裏要說下,mycat讀寫分離的一些關鍵配置,按照官方文檔說明:
a. balance 屬性負載均衡類型,目前的取值有 4 種:
1. balance=”0”, 不開啓讀寫分離機制,所有讀操作都發送到當前可用的 writeHost 上。
2. balance=”1”,全部的 readHost 與 stand by writeHost 參與 select 語句的負載均衡,簡單的說,當雙主雙從模式(M1 ->S1 , M2->S2,並且 M1 與 M2 互爲主備),正常情況下, M2,S1,S2 都參與 select 語句的負載均衡。
3. balance=”2”,所有讀操作都隨機的在 writeHost、 readhost 上分發。
4. balance=”3”, 所有讀請求隨機的分發到 wiriterHost 對應的 readhost 執行,writerHost 不負擔讀壓力,注意 balance=3 只在 1.4 及其以後版本有, 1.3 沒有。
b. writeType 屬性,負載均衡類型,目前的取值有 3 種:
1. writeType=”0”, 所有寫操作發送到配置的第一個 writeHost,第一個掛了切到還生存的第二個
writeHost,重新啓動後已切換後的爲準,切換記錄在配置文件中:dnindex.properties .
2. writeType=”1”,所有寫操作都隨機的發送到配置的 writeHost。
3. writeType=”2”,沒實現。
c. switchType 屬性
- -1 表示不自動切換
- 1 默認值,自動切換
- 2 基於MySQL 主從同步的狀態決定是否切換