数据库中间件 MyCAT 源码分析 —— 调试环境搭建
本文主要基于 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
。
CREATETABLE`travelrecord` (
`id`bigint(20) NOTNULL AUTO_INCREMENT,
`name`varchar(255) CHARACTERSET latin1 DEFAULTNULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1DEFAULTCHARSET=utf8 COLLATE=utf8_bin
4. MyCAT 配置
为了避免对实现源码产生影响,我们选择对
test
目录做变更。1、在
resources
目录下新建文件夹
backups
,将原
resources
下的所有文件移到
backups
下,这样我们的环境就干干净了。
2、在
resources
目录下新建
schema.xml
文件,配置
MyCAT
的逻辑库、表、数据节点、数据源。
<mycat:schemaxmlns:mycat="http://io.mycat/">
<schemaname="dbtest"checkSQLschema="true"sqlMaxLimit="100">
<tablename="travelrecord"dataNode="dn1"autoIncrement="true"primaryKey="id" />
</schema>
<dataNodename="dn1"dataHost="localhost1"database="db1" />
<dataHostname="localhost1"maxCon="1000"minCon="10"balance="0"
writeType="0"dbType="mysql"dbDriver="native"switchType="1"slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHosthost="hostM1"url="127.0.0.1:33061"user="root"password="123456"><!-- ‼️‼️‼️ url、user、password 设置成你的数据库 -->
</writeHost>
</dataHost>
</mycat:schema>
3、在
resources
目录下新建 server.xml
文件,配置 MyCAT
系统配置。
<mycat:serverxmlns:mycat="http://io.mycat/">
<system>
<propertyname="nonePasswordLogin">0</property><!-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户-->
<propertyname="useHandshakeV10">1</property>
<propertyname="useSqlStat">0</property><!-- 1为开启实时统计、0为关闭 -->
<propertyname="useGlobleTableCheck">0</property><!-- 1为开启全加班一致性检测、0为关闭 -->
<propertyname="sequnceHandlerType">2</property>
<propertyname="processorBufferPoolType">0</property>
<propertyname="handleDistributedTransactions">0</property>
<propertyname="useOffHeapForMerge">1</property>
<propertyname="memoryPageSize">64k</property>
<propertyname="spillsFileBufferSize">1k</property>
<propertyname="useStreamOutput">0</property>
<propertyname="systemReserveMemorySize">384m</property>
<propertyname="useZKSwitch">false</property>
</system>
<username="root"defaultAccount="true">
<propertyname="password">123456</property>
<propertyname="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.
*/
publicclassMycatStartupTest{
publicstaticvoidmain(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> insertinto 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
进行探讨。最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。