数据库中间件 MyCAT 源码分析 —— 调试环境搭建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中间件 MyCAT 源码分析 —— 调试环境搭建相关的知识,希望对你有一定的参考价值。
关注**微信公众号:【芋艿的后端小屋】**有福利:
RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
新的源码解析文章实时收到通知。每周更新一篇左右。
1. 依赖工具
Maven
Git
JDK
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
的逻辑库、表、数据节点、数据源。
<?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"> <heartbeat>select 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
:
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
进行探讨。
本文出自 “芋艿的后端小屋” 博客,请务必保留此出处http://yunai.blog.51cto.com/2625549/1949573
以上是关于数据库中间件 MyCAT 源码分析 —— 调试环境搭建的主要内容,如果未能解决你的问题,请参考以下文章
数据库中间件Mycat源码解析:Mycat的SQL解析和路由