概念
Schema.xml
Schema.xml管理着MyCat的邏輯庫、表、分片規則、DataNode以及DataSource
- < schema >標簽:用於定義MyCat實例中的邏輯庫
- < table >標簽:定義了MyCat中的邏輯表
- < dataNode >標簽:定義了MyCat中的數據節點,也就是數據分片
- < dataHost >標簽:定義了具體的數據庫實例、讀寫分離配置和心跳語句
server.xml
server.xml幾乎保存了所有mycat需要的系統配置信息
最常用的是在此配置用戶名、密碼及權限。
rule.xml
rule.xml里面就定義了對表進行拆分所涉及到的規則定義,可以靈活的對表使用不同的分片算法,或者對表使用相同的算法但具體的參數不同
這個文件里面主要有< tableRule >和< function > 這兩個標簽。在具體使用過程中可以按照需求添加tableRule和function
安裝Mycat
- 解壓縮Mycat,
tar zxf Mycat-server-1.4-release-linux.tar.gz - 復制文件夾,
cp -r mycat /usr/local - 進入mycall路徑,
cd /usr/local/mycat/bin - 后台啟動mycat,
./mycat start - 控制台啟動mycat,
./mycat console
mycat支持命令:console | start | stop | restart | status | dump
mycat默認端口號:8066
配置
設置mysql對大小寫不敏感
- 編輯mysql配置文件,
vim /etc/my.cnf - 添加配置,
lower_case_table_names=1 - 重啟mysql服務
修改配置文件
- 進入conf路徑,
cd mycat/conf - 修改配置文件schema.xml,
vim schema.xml,見下文 [ schema.xml ] - 修改配置文件server.xml,
vim server.xml,見下文 [ server.xml ]
[ schema.xml ]
<schema name="mall" checkSQLschema="false" sqlMaxLimit="100"> <table name="tb_user" dataNode="dn1,dn2" rule="auto-sharding-long" /> <table name="tb_item" dataNode="dn2,dn3" rule="auto-sharding-long" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="db1" /> <dataNode name="dn2" dataHost="localhost2" database="db2" /> <dataNode name="dn3" dataHost="localhost3" database="db3" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" dbType="mysql" dbDriver="jdbc" writeType="0" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="jdbc:mysql://192.168.1.150:3306" user="root" password="root"></writeHost> </dataHost> <dataHost name="localhost2" maxCon="1000" minCon="1" balance="0" dbType="mysql" dbDriver="jdbc"> <heartbeat>select user()</heartbeat> <writeHost host="hostM2" url="jdbc:mysql://192.168.1.151:3306" user="root" password="root"></writeHost> </dataHost> <dataHost name="localhost3" maxCon="1000" minCon="1" balance="0" dbType="mysql" dbDriver="jdbc"> <heartbeat>select user()</heartbeat> <writeHost host="hostM3" url="jdbc:mysql://192.168.1.152:3306" user="root" password="root"></writeHost> </dataHost>
[ server.xml ]
<user name="user"> <property name="password">user</property> <property name="schemas">mall</property> <!-- <property name="readOnly">true</property> --> </user>
