1.下載下傳mycat源碼
下載下傳位址:https://github.com/MyCATApache/Mycat-Server,我下載下傳的版本是1.7。
下載下傳完成後使用eclipse導入工程,并刷好maven。
2.mysql配置主從同步參考:https://blog.csdn.net/u011943534/article/details/87868939
3.配置resources/server.xml
其中
user
表示mycat的使用者名密碼,
schemas
表示mycat邏輯庫名稱,
readOnly
表示此使用者隻讀
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="useSqlStat">0</property> <!-- 1為開啟實時統計、0為關閉 -->
</system>
<user name="root">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
</mycat:server>
4.配置schema.xml
schema
說明:
name
與server.xml中schemas一緻
dataNode
該屬性用于綁定邏輯庫到某個具體的database上
dataNode
說明:
name
定義資料節點的名稱
dataHost
定義該分片屬于哪個資料庫執行個體
database
實際資料庫名稱
dataHost
說明:
balance
0 不讀寫分離,1全部的readHost與standbywriteHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,并且M1與M2互為主備),正常情況下,M2,S1,S2都參與select語句的負載均衡。2所有讀操作都随機的在writeHost、readhost上分發。3所有讀請求随機的分發到wiriterHost對應的readhost執行,writerHost不負擔讀壓力,注意balance=3隻在1.4及其以後版本有,1.3沒有。
writeType
0所有寫操作發送到配置的第一個writeHost,第一個挂了切到還生存的第二個
writeHost,重新啟動後已切換後的為準,切換記錄在配置檔案中:dnindex.properties。2所有寫操作都随機的發送到配置的writeHost
switchType
-1表示不自動切換,1預設值,自動切換,2基于MySQL主從同步的狀态決定是否切換
心跳語句為showslavestatus,3基于MySQLgalarycluster的切換機制(适合叢集)
heatbeat
心跳的sql
writeHost
寫的實際資料庫配置
readHost
讀的實際資料庫配置
<?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="localhost1" database="test" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.100.87:3306" user="root" password="ROOT_iscas123">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="192.168.100.91:3306" user="root" password="ROOT_iscas123" />
</writeHost>
</dataHost>
</mycat:schema>
5.從
MycatStartup
類啟動
6.測試連接配接
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.100.88:8066/TESTDB", "root", "123456");
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery("select name from test1");
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
resultSet.close();
statement.close();
conn.close();
}
7.MYCAT日志報Unknown charsetIndex:255錯誤
index_to_charset.properties
在配置檔案最後加入255=utf8mb4,重新開機服務即正常