Mycat是Mysql的中間件,因而其主從複製功能是相對於Mysql的主從複製。所以在使用其主從複製的時候mysql需要進行主從複製配置。
步驟:
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" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="host1" database="自定義數據庫名稱" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="2"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!--寫庫(主庫)的配置 -->
<writeHost host="hostm1" url="94.191.86.252:3306" user="root"
password="123123">
<!--讀庫(從庫)的配置 -->
<readHost host="hosts1" url="94.191.86.25:3306" user="root"
password="123123">
</readHost>
</writeHost>
</dataHost>
</mycat:schema>
此處需要注意:balance配置
負載均衡類型,目前的取值有 3 種:
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 不負擔讀壓
2讀寫分離測試
create table t_replica
( id int auto_increment ,
name varchar(200)
);
insert into t_replica(name) values (@@hostname)
@@hostname:當前主機的名稱