MyCat入門+JAVA程式連線
阿新 • • 發佈:2018-11-03
本文章主要對mycat的配置檔案註釋說明,詳細的安裝使用請戳這個地址:mycat安裝使用
- 連線mycat時,將原先連線mysql的埠和資料庫改為mycat的埠8066,和mycat的邏輯資料庫TESTDB,使用者名稱和密碼為server.xml表裡設定的user。
jdbc.url=jdbc:mysql://127.0.0.1:8066/TESTDB?characterEncoding=utf-8
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=user
jdbc.password=user
- server.xml:設定連線的使用者,例如連線mysql資料庫時所需的使用者名稱、密碼和連線哪個資料庫;通過該xml可以配置連線使用者的許可權。在實驗中,測試了user使用者,由於設定了只讀,所以在插入資料時拋了異常。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://io.mycat/"> <system> <property name="defaultSqlParser">druidparser</property> <property name="mutiNodeLimitType">1</property> <property name="serverPort">8066</property> #連線埠,替換連線mysql時的3306埠 <property name="managerPort">9066</property> </system> <!-- 任意設定登陸 mycat 的使用者名稱,密碼,資料庫 --> <user name="test"> <property name="password">test</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> <!-- <quarantine> <whitehost> <host host="127.0.0.1" user="mycat"/> <host host="127.0.0.2" user="mycat"/> </whitehost> <blacklist check="false"></blacklist> </quarantine> --> </mycat:server>
- schema.xml:設定TESTDB邏輯資料庫對應哪些表,哪些表在哪些節點,節點的地址,
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- 設定表的儲存方式.schema name="TESTDB" 與 server.xml中的 TESTDB 設定一致 --> <!-- 設定這個TESTDB邏輯資料庫對應哪些表,item表的rule=role1是該表的分庫規則,在rule.xml裡設定了規則 --> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <table name="users" primaryKey="id" dataNode="node_db01" /> <table name="item" primaryKey="id" dataNode="node_db02,node_db03" rule="role1" /> </schema> <!-- 設定dataNode 對應的資料庫,及 mycat 連線的地址dataHost --> <dataNode name="node_db01" dataHost="dataHost01" database="db01" /> <dataNode name="node_db02" dataHost="dataHost01" database="db02" /> <dataNode name="node_db03" dataHost="dataHost01" database="db03" /> <!-- mycat 邏輯主機dataHost對應的物理主機.其中也設定對應的mysql登陸資訊 --> <dataHost name="dataHost01" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <writeHost host="server1" url="127.0.0.1:3306" user="root" password="root"/> </dataHost> </mycat:schema>
- rule.xml:該路由表表明採用mod2的方式進行路由。通過下面可知是對item表的id鍵進行取模分表的,取模分到db02和db03,而users表直接路由到db01中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
<tableRule name="role1"> #建立角色,用於給哪張表分配角色
<rule>
<columns>id</columns>#根據id進行分割
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
#分庫規則,上面設定了id作為分割條件,條件為 id % 2
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">2</property>
</function>
</mycat:rule>