本文主要基于 MyCAT 1.6.5 正式版
友情提示:欢迎关注公众号【芋道源码】。😈关注后,拉你进【源码圈】微信群和【芋艿】搞基嗨皮。
友情提示:欢迎关注公众号【芋道源码】。😈关注后,拉你进【源码圈】微信群和【芋艿】】搞基嗨皮。
友情提示:欢迎关注公众号【芋道源码】。😈关注后,拉你进【源码圈】微信群和【芋艿】】搞基嗨皮。
1. 依赖工具
2. 源码拉取
从官方仓库 https://github.com/MyCATApache/Mycat-Server
Fork
出属于自己的仓库。为什么要
Fork
?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。😈
使用
IntelliJ IDEA
从
Fork
出来的仓库拉取代码。拉取完成后,
Maven
会下载依赖包,可能会花费一些时间,耐心等待下。
3. 数据库配置
我们要搭建的是非分片表的调试环境,需要创建一个数据库和表:
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
的逻辑库、表、数据节点、数据源。
?xml version="1.0"?
!DOCTYPE mycat:schema SYSTEM "schema.dtd"
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"
heartbeatselect user()/heartbeat
writeHost host="hostM1" url="127.0.0.1:33061" user="root" password="123456" !-- ‼️‼️‼️ url、user、password 设置成你的数据库 --
/writeHost
/dataHost
/mycat:schema
3、在
resources
目录下新建
server.xml
文件,配置
MyCAT
系统配置。
?xml version="1.0" encoding="UTF-8"?
!DOCTYPE mycat:server SYSTEM "server.dtd"
mycat:server xmlns:mycat="http://io.mycat/"
system
property name="nonePasswordLogin"0/property !-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户--
property name="useHandshakeV10"1/property
property name="useSqlStat"0/property !-- 1为开启实时统计、0为关闭 --
property name="useGlobleTableCheck"0/property !-- 1为开启全加班一致性检测、0为关闭 --
property name="sequnceHandlerType"2/property
property name="processorBufferPoolType"0/property
property name="handleDistributedTransactions"0/property
property name="useOffHeapForMerge"1/property
property name="memoryPageSize"64k/property
property name="spillsFileBufferSize"1k/property
property name="useStreamOutput"0/property
property name="systemReserveMemorySize"384m/property
property name="useZKSwitch"false/property
/system
user name="root" defaultAccount="true"
property name="password"123456/property
property name="schemas"dbtest/property
/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
:
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
进行探讨。