数据库中间件MyCAT源码分析:调试环境搭建

🙂🙂🙂关注微信公众号:【芋艿的后端小屋】有福利: php

  1. RocketMQ / MyCAT / Sharding-JDBC 全部源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将获得认真回复。甚至不知道如何读源码也能够请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右

1. 依赖工具

  • Maven
  • Git
  • JDK
  • MySQL
  • IntelliJ IDEA

2. 源码拉取

从官方仓库 github.com/MyCATApache… Fork 出属于本身的仓库。为何要 Fork ?既然开始阅读、调试源码,咱们可能会写一些注释,有了本身的仓库,能够进行自由的提交。😈java

使用 IntelliJ IDEAFork 出来的仓库拉取代码。拉取完成后,Maven 会下载依赖包,可能会花费一些时间,耐心等待下。mysql

3. 数据库配置

咱们要搭建的是非分片表的调试环境,须要建立一个数据库和表:git

  1. 建立数据库:db01
  2. 建立数据库表: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 目录作变动。github

一、在 resources 目录下新建文件夹 backups ,将原 resources 下的全部文件移到 backups 下,这样咱们的环境就干干净了。
二、在 resources 目录下新建 schema.xml 文件,配置 MyCAT 的逻辑库、表、数据节点、数据源。sql

<?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>复制代码

三、在 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 启动

一、在 java 目录下新建 debugger 包,和原先已存在的包作区分。
二、在 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);
    }

}复制代码

三、运行 MycatStartupTest.java ,当看到输出日志 MyCAT Server startup successfully. see logs in logs/mycat.log 即为启动成功。微信

截止目前,test 目录以下:工具

test目录.png
test目录.png

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 进行探讨。

相关文章
相关标签/搜索