本文主要基于 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. 数据库配置

我们要搭建的是非分片表的调试环境,需要创建一个数据库和表:
  1. 创建数据库:db01 。
  2. 创建数据库表: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
 的逻辑库、表、数据节点、数据源。
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<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 系统配置。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<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 目录如下:
test目录.png

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 进行探讨。
继续阅读
阅读原文