本文主要基於 MyCAT 1.6.5 正式版
-
1. 依賴工具
-
2. 原始碼拉取
-
3. 資料庫配置
-
4. MyCat 配置
-
5. MyCAT 啟動
-
6. MyCAT 測試
-
7. 交流
友情提示:歡迎關註公眾號【芋道原始碼】。?關註後,拉你進【原始碼圈】微信群和【芋艿】搞基嗨皮。
友情提示:歡迎關註公眾號【芋道原始碼】。?關註後,拉你進【原始碼圈】微信群和【芋艿】】搞基嗨皮。
友情提示:歡迎關註公眾號【芋道原始碼】。?關註後,拉你進【原始碼圈】微信群和【芋艿】】搞基嗨皮。
1. 依賴工具
-
Maven
-
Git
-
JDK
-
MySQL
-
IntelliJ IDEA
2. 原始碼拉取
從官方倉庫 https://github.com/MyCATApache/Mycat-Server Fork
出屬於自己的倉庫。為什麼要 Fork
?既然開始閱讀、除錯原始碼,我們可能會寫一些註釋,有了自己的倉庫,可以進行自由的提交。?
使用 IntelliJ IDEA
從 Fork
出來的倉庫拉取程式碼。拉取完成後,Maven
會下載依賴包,可能會花費一些時間,耐心等待下。
3. 資料庫配置
我們要搭建的是非分片表的除錯環境,需要建立一個資料庫和表:
-
建立資料庫:
db01
。 -
建立資料庫表:
travelrecord
。
CREATE TABLE `travelrecord` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
4. MyCAT 配置
為了避免對實現原始碼產生影響,我們選擇對 test
目錄做變更。
1、在 resources
目錄下新建檔案夾 backups
,將原 resources
下的所有檔案移到 backups
下,這樣我們的環境就乾乾凈了。
2、在 resources
目錄下新建 schema.xml
檔案,配置 MyCAT
的邏輯庫、表、資料節點、資料源。
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="dbtest" checkSQLschema="true" sqlMaxLimit="100">
<table name="travelrecord" dataNode="dn1" autoIncrement="true" primaryKey="id" />
schema>
<dataNode name=“dn1” dataHost=“localhost1” database=“db1” />
<dataHost name=“localhost1” maxCon=“1000” minCon=“10” balance=“0”
writeType=“0” dbType=“mysql” dbDriver=“native” switchType=“1” slaveThreshold=“100”>
<heartbeat>select user()heartbeat>
<writeHost host=“hostM1” url=“127.0.0.1:33061” user=“root” password=“123456”>
writeHost>
dataHost>
mycat:schema>
3、在 resources
目錄下新建 server.xml
檔案,配置 MyCAT
系統配置。
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="nonePasswordLogin">0property>
<property name=“useHandshakeV10”>1property>
<property name=“useSqlStat”>0property>
<property name=“useGlobleTableCheck”>0property>
<property name=“sequnceHandlerType”>2property>
<property name=“processorBufferPoolType”>0property>
<property name=“handleDistributedTransactions”>0property>
<property name=“useOffHeapForMerge”>1property>
<property name=“memoryPageSize”>64kproperty>
<property name=“spillsFileBufferSize”>1kproperty>
<property name=“useStreamOutput”>0property>
<property name=“systemReserveMemorySize”>384mproperty>
<property name=“useZKSwitch”>falseproperty>
system>
<user name=“root” defaultAccount=“true”>
<property name=“password”>123456property>
<property name=“schemas”>dbtestproperty>
user>
mycat:server>
5. MyCAT 啟動
1、在 java
目錄下新建 debugger
包,和原先已存在的包做區分。
2、在 debbuger
包下新建 MycatStartupTest.java
:
package debugger;
import io.mycat.MycatStartup;
/**
* {@link io.mycat.MycatStartup}測試
*
* Created by yunai on 2017/5/22.
*/
public class MycatStartupTest {
public static void main(String[] args) {
MycatStartup.main(args);
}
}
3、執行 MycatStartupTest.java
,當看到輸出日誌 MyCAT Server startup successfully. see logs in logs/mycat.log
即為啟動成功。
截止目前,test
目錄如下:
6. MyCAT 測試
除錯環境已經搭建完成,我們看看是否正確。
使用 MySQL
客戶端連線 MyCAT
:
-
HOST :127.0.0.1
-
PORT :8066
-
USERNAME :root
-
PASSWORD :123456
mysql> insert into travelrecord(name) values ('haha');
Query OK, 1 rows affected (0.01 sec)
mysql> select * from travelrecord;
+--------------------+------+
| id | name |
+--------------------+------+
| 866707181398003712 | haha |
+--------------------+------+
1 rows in set (0.05 sec)
成功。???
7. 交流
感謝閱讀、收藏、關註。
知其然知其所以然。學習 MyCAT 會是一段很愉快的旅程。如果有你的交流,相信會更加愉快。歡迎新增微信:wangwenbin-server
進行探討。