相關文章:
- [Mycat 簡介]
- [Mycat 配置文件server.xml]
- [Mycat 配置文件schema.xml]
- [Mycat 配置文件rule.xml]
- [springboot + mybatis + mycat整合]
1、下載系統安裝包
選擇相應的版本進行下載,地址:http://dl.mycat.io/ 。Mycat數據庫分庫分表中間件介紹 http://www.mycat.io/
2、安裝
安裝mycat前需要保證系統已安裝過jdk和mysql,將下載好的mycat安裝包解壓到某個目錄下,然后進入mycat解壓目錄下的bin目錄(打開cmd控制台確保是以管理員身份運行),執行安裝命令:
D:\develop\Mycat\bin>mycat.bat install
3、常用命令
可以使用如下命令啟動mycat服務
mycat.bat start
啟動后可以通過如下命令查看mycat的運行狀態:
mycat.bat status
可以使用如下命令停止mycat服務
mycat.bat stop
重啟服務命令
mycat.bat restart
4、測試
4.1 配置文件修改
進入conf目錄,打開schema.xml配置文件,schema.xml配置文件是mycat中重要的配置文件之一,它涵蓋了mycat的邏輯庫、表、分片規則、分批按節點及數據源。
對默認的schema.xml進行簡單的修改配置,主要配置本機的mysql連接信息。找到dataHost節點,按照當前自己mysql的配置信息來修改配置。如下:
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="root"> <!-- can have multi read hosts --> <!--<readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />--> </writeHost> <!-- <writeHost host="hostS1" url="localhost:3316" user="root" password="123456" /> --> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost>
修改了hostM1的連接密碼,注釋了名稱為hostS2的只讀標簽和名稱為hostM2的寫標簽
4.2 mycat連接
和mysql連接一樣,就是端口改為8066,用戶名和密碼可以查看mycat conf目錄中的server.xml中的定義,本次使用的是默認的root,123456來連接,連接成功后只能操作名為TESTDB的數據庫。
4.3 在mysql中創建數據庫
按照schema.xml配置中的示例,我們需要建立分別名為db1、db2、db3的數據庫。連接mysql,建立相關的數據庫:
create database db1 character set utf8;
create database db2 character set utf8;
create database db3 character set utf8;
4.4 在mycat中創建全局表測試
create table company(id int not null primary key,name varchar(100),sharding_id int not null);
company表示全局表,使用explain create table company(id int not null primary key,name varchar(100),sharding_id int not null);查看執行計划。如圖:
在mysql中可以看到db1,db2,db3數據庫中出現company表
接着插入一條測試數據
mysql> insert into company(id,name,sharding_id) values(1,'hello, mycat',10000);
查看執行狀態如下:
查看mysql中company表的數據:
可以看到三個庫的company表都有插入數據
4.5 水平表測試
mysql> create table travelrecord(id int not null primary key,name varchar(100));
查看執行計划如下圖:
查看mysql的db1,db2,db3數據庫:
接着插入一條數據:
mysql> insert into travelrecord(id,name) values(1,'mycat');
查看執行計划如下圖:
從上面可以看到只用dn1節點插入了數據,查看mysql的db1,db2,db3三個數據庫的travelrecord表的數據
可以看到只有db1中的travelrecord表有插入數據
5、問題
5.1 啟動服務是報錯 The Mycat-server service was launched, but failed to start。解決:
修改mycat下的\conf\wrapper.conf文件中的
wrapper.java.command=java
改成
wrapper.java.command=C:\Java\jdk1.7.0_21\bin\java.exe
指定java
5.2 啟動失敗 The specified size exceeds the maximum representable size。解決:
修改mycat下的\conf\wrapper.conf文件中的
wrapper.java.additional.10=-Xmx4G wrapper.java.additional.11=-Xms1G
改為:
wrapper.java.additional.10=-Xmx512M wrapper.java.additional.11=-Xms64M
重新啟動即可