Mycat源码篇 : 起步,Mycat源码阅读调试环境搭建
2018-03-02 11:00
519 查看
在研究mycat源码之前必须先把环境搭建好。这篇文章的目标就是搭建mycat源码调试环境。环境主要包括:git
jdk
maven
eclipse
mysql
这里假设你知道上面的知识点。我们搭建的环境所处于的操作系统是Windows7+。下面将一步一步讲解如何搭建源码调试环境:
如果你对这个项目感兴趣并希望为mycat贡献代码,那么可以fork mycat代码到你个人的github上,然后从你自己fork的项目地址上面拉取代码。
最后点击OK确定即可。eclipse和maven都依赖jdk环境,所以务必在安装之前先安装好jdk并配置好相应的环境变量。
好了,到这里,我们的环境就算搭建完成了,下面我们将介绍如何在eclipse中根据mycat源码启动mycat。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
这里使用本地mysql(localhost:3306)进行测试,user为root,密码是mysql,根据实际情况修改。(2) rule.xml
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(3) server.xml
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
分别在db1、db2、db3下创建hotnews表:
2
3
4
5
6
7
2
成功则表示mycat server调试环境已经部署成功了。好了,接下来以Debug默认运行,然后在你希望debug的位置打上断点,就可以尽情地阅读mycat源码了。eg:
所有发往mycat的sql都会经过
其中
jdk
maven
eclipse
mysql
这里假设你知道上面的知识点。我们搭建的环境所处于的操作系统是Windows7+。下面将一步一步讲解如何搭建源码调试环境:
1. 环境搭建
1.1 获取mycat源码
mycat源码托管在github上面,为了以后实时获取源码,我们需要先安装并配置好git客户端,请根据以下教程安装配置好git:git安装教程安装成功后,我们在本地某个文件路径下,鼠标右键打开Git Bash,执行以下命令将代码克隆到当前文件路径:git clone https://github.com/MyCATApache/Mycat-Server.git[/code]1 使用以下命令切换到最新1.6分支:
git checkout -b 1.6 origin/1.61
如果你对这个项目感兴趣并希望为mycat贡献代码,那么可以fork mycat代码到你个人的github上,然后从你自己fork的项目地址上面拉取代码。
1.2 安装jdk
jdk版本要求7或者更高。我们需要安装jdk并配置java环境变量。jdk的安装和环境变量的配置请参考:JDK安装与环境变量配置1.3 安装maven
mycat项目源码使用maven进行依赖管理、编译打包。因此我们需要安装maven并配置好,请参考以下教程进行配置:Maven的安装及配置1.4 安装配置eclipse
eclipse是开发Java项目常用的IDE,我们使用它来进行源码阅读和调试。eclipse可以在eclipse官网下载: https://www.eclipse.org/downloads/我个人习惯使用STS——Spring Tool Suite,也是eclipse的一个扩展,可以在这个地址下载: http://spring.io/tools/sts/完成后打开eclipse,配置maven使用我们自己下载的maven:Windows -> Preferences -> Maven -> Installations点击Add添加你的maven根目录,勾选你自己的maven,如下所示:最后点击OK确定即可。eclipse和maven都依赖jdk环境,所以务必在安装之前先安装好jdk并配置好相应的环境变量。
1.5 导入mycat源码
完成上面配置后,就可以导入我们之前拉取的mycat源码:File -> Import选择
Existing Maven Projects,浏览选择我们clone的mycat源码,点击确定开始进行导入。第一次导入需要等待maven下载插件以及mycat项目需要用到的第三方依赖库,等待时间相对长一点。成功完成导入后的项目如下所示:
1.6 安装配置mysql
为了能够更方便地在本地开发环境调试mycat,我们最后还需要在我们的机器上安装mysql。建议windows下下载mysql绿色版,然后通过简单配置完成mysql的安装,具体参考以下教程:Windows 下绿色安装Mysql 5.7 (zip压缩包)根据上面教程使用root账号成功登陆mysql之后,建议修改root密码,eg:mysql > set password = password('your password');1
好了,到这里,我们的环境就算搭建完成了,下面我们将介绍如何在eclipse中根据mycat源码启动mycat。
2. IDE启动mycat
2.1 配置mycat
为了能够让mycat顺利启动,我们首先需要进行必要的配置。从github上面clone的源码在src/main/resources目录下存在mycat运行所需要配置的文件,有
schema.xml、
rule.xml和
server.xml。这里我们采用最简方式进行配置:(1) schema.xml
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3" rule="mod-long" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="db1" /> <dataNode name="dn2" dataHost="localhost1" database="db2" /> <dataNode name="dn3" dataHost="localhost1" database="db3" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="mysql"> <!-- can have multi read hosts --> <!-- <readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" /> --> </writeHost> <!-- <writeHost host="hostS1" url="localhost:3316" user="root" password="123456" /> --> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost> </mycat:schema>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
这里使用本地mysql(localhost:3306)进行测试,user为root,密码是mysql,根据实际情况修改。(2) rule.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:rule SYSTEM "rule.dtd"> <mycat:rule xmlns:mycat="http://io.mycat/"> <tableRule name="mod-long"> <rule> <columns>id</columns> <algorithm>mod-long</algorithm> </rule> </tableRule> <function name="mod-long" class="io.mycat.route.function.PartitionByMod"> <!-- how many data nodes --> <property name="count">3</property> </function> </mycat:rule>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(3) server.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://io.mycat/"> <system> <property name="useSqlStat">1</property> <!-- 1为开启实时统计、0为关闭 --> <property name="useGlobleTableCheck">0</property> <!-- 1为开启全加班一致性检测、0为关闭 --> <property name="defaultSqlParser">druidparser</property> <property name="sequnceHandlerType">0</property> <!-- <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议--> <!-- <property name="fakeMySQLVersion">5.6.20</property>--> <!--设置模拟的MySQL版本号--> <!-- <property name="processorBufferChunk">40960</property> --> <!-- <property name="processors">1</property> <property name="processorExecutor">32</property> --> <!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena--> <property name="processorBufferPoolType">0</property> <!--默认是65535 64K 用于sql解析时最大文本长度 --> <!--<property name="maxStringLiteralLength">65535</property>--> <!--<property name="sequnceHandlerType">0</property>--> <!--<property name="backSocketNoDelay">1</property>--> <!--<property name="frontSocketNoDelay">1</property>--> <!--<property name="processorExecutor">16</property>--> <!-- <property name="mutiNodeLimitType">1</property> 0:开启小数量级(默认) ;1:开启亿级数据排序 <property name="mutiNodePatchSize">100</property> 亿级数量排序批量 <property name="processors">32</property> <property name="processorExecutor">32</property> <property name="serverPort">8066</property> <property name="managerPort">9066</property> <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property> <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> --> <!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志--> <property name="handleDistributedTransactions">0</property> <!-- off heap for merge/order/group/limit 1开启 0关闭 --> <property name="useOffHeapForMerge">1</property> <!-- 单位为m --> <property name="memoryPageSize">1m</property> <!-- 单位为k --> <property name="spillsFileBufferSize">1k</property> <property name="useStreamOutput">0</property> <!-- 单位为m --> <property name="systemReserveMemorySize">384m</property> </system> <user name="root"> <property name="password">mysql</property> <property name="schemas">TESTDB</property> </user> </mycat:server>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2.2 mysql数据库准备
登录到本地mysql,创建需要的database和table:create database db1 default charset 'utf8'; create database db2 default charset 'utf8'; create database db3 default charset 'utf8';1
2
3
分别在db1、db2、db3下创建hotnews表:
create table hotnews ( id int primary key, title varchar(100), author_id int, create_tm datetime, content text ) engine = innodb default character set = 'utf8';1
2
3
4
5
6
7
2.3 启动mycat
到了这一步,所有的准备已经到位,在Eclipse的mycat项目下找到MycatStartup这个类,
Run As -> Java Application即可跑起一个mycat server。默认mycat server端口8066,管理端口9066。Eclipse里面使用
Ctrl+Shift+T快捷键,输入类名,就可以快速定位到对应的源码文件。这个时候使用mysql客户端工具,执行以下命令登录mycat:
> mysql -uroot -hlocalhost -P8066 -p > 键入密码mysql1
2
成功则表示mycat server调试环境已经部署成功了。好了,接下来以Debug默认运行,然后在你希望debug的位置打上断点,就可以尽情地阅读mycat源码了。eg:
所有发往mycat的sql都会经过
ServerQueryHandler的
query方法,在这个方法首行代码处打上断点,然后使用mysql客户端工具登录mycat并执行一个sql,程序就会定位到你设置的断点那里。
3. (可选)编译mycat软件包
我们可以通过mycat源码来编译得到mycat软件包,只要我们安装了maven即可。方法如下:cmd进入到mycat源码根目录,即pom.xml所在目录,执行以下命令进行编译打包:
mvn package -Dmaven.test.skip=true1
-Dmaven.test.skip=true表示忽略mycat的单元测试的执行,这样可以节省编译打包时间。等待执行成功后,可以在mycat源码根目录的
target子目录里面,看到如下格式的压缩包:
Mycat-server-${version}-${buildtime}-${platform}.tar.gz1
其中
${version}表示mycat版本号,
${buildtime}为我们执行编译打包的日期时间,
${platform}表示使用的操作系统平台,取值有
win、
linux、
mac、
solaris和
unix。这样我们就可以拿对应的软件包到对应的平台上去部署了。
相关文章推荐
- Mycat源码篇 : 起步,Mycat源码阅读调试环境搭建
- Mycat源码篇 : 起步,Mycat源码阅读调试环境搭建
- 数据库中间件 MyCAT源码分析:调试环境搭建
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- Windows下搭建Spark源码阅读与调试环境
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- MyCAT源码分析:调试环境搭建
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- windows下搭建Spark1.6源码调试阅读环境
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- Spark2.0源码阅读环境搭建 开发环境搭建
- Hadoop源码阅读环境搭建
- 搭建elasticSearch源码调试环境