0%

MyCat2使用笔记

1. 安装JAVA环境

1
sudo apt-get install default-jdk

2. 下载wrapper及jar包

1
2
3
4
wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
unzip mycat2-install-template-1.21.zip
cd mycat/lib
wget http://dl.mycat.org.cn/2.0/1.22-release/mycat2-1.22-release-jar-with-dependencies-2022-4-27.jar

3. 给文件夹写权限

1
sudo chmod 777 mycat -Rf #递归修改文件夹权限

因为创建数据库时会在对应的文件夹创建配置文件,所以需要读写权限。同时也会往logs文件夹写日志。

4. 修改配置文件

文件名 作用
e:\mycat\conf\datasources\prototypeDs.datasource.json 配置名称为prototypeDs 的数据源
e:\mycat\conf\users\root.user.json 配置root的登录用户信息
e:\mycat\conf\server.json 配置mycat服务器信息
e:\mycat\conf\simplelogger.properties 配置log级别
e:\mycat\conf\clusters\prototype.cluster.json 配置名称为prototype的集群

5. 启动MyCat

1
2
cd mycat/bin
./mycat start # 启动后即可去logs文件夹下查看日志,若日志过于简单可以修改mycat\conf\simplelogger.properties 来调整日志级别。输出更多内容。

6. 创建数据库

使用Navicat或者dbever连接到MyCat(如果连不上,可能是MYSQL 8 密码模式造成的,可以修改密码,具体提示可以查看日志)

1
2
3
4
5
6
7
8
9
10
11
12
create DATABASE myTestDb; # 创建一个数据库 myTestDb
use myTestDb;
-- 分库分表
CREATE TABLE `test` (
`ID` varchar(36) NOT NULL,
`Name` varchar(255) NULL DEFAULT NULL,
`CreateTime` datetime(0) NULL DEFAULT NULL,
`Phone` varchar(255) NULL DEFAULT NULL,
`Address` varchar(255) NULL DEFAULT NULL,
PRIMARY KEY (`ID`) USING BTREE,
INDEX `idx`(`Phone`) USING HASH
) ENGINE = InnoDB DEFAULT dbpartition by mod_hash(id) tbpartition by mod_hash(id) tbpartitions 10 dbpartitions 10;

其中 dbpartition by mod_hash(id) tbpartition by mod_hash(id) tbpartitions 10 dbpartitions 10 为分库分表的语句,意思是使用mod_hash(id)来进行分库操作,使用mod_hash(id)来进行分表操作。tbpartitions : 分库的数量。dbpartitions :分表的数量。

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 为了测试多表查询,顾在插入了Test表后又新建了Order表
use myTestDb;
CREATE TABLE `order` (
`ID` varchar(36) NOT NULL,
`ProductName` varchar(255) NULL DEFAULT NULL,
`CreateTime` datetime(0) NULL DEFAULT NULL,
`CreateOrderUserId` varchar(255) NULL DEFAULT NULL,
PRIMARY KEY (`ID`) USING BTREE,
INDEX `idx`(`ProductName`) USING HASH
) ENGINE = InnoDB DEFAULT dbpartition by mod_hash(id) tbpartition by mod_hash(id) tbpartitions 10 dbpartitions 10;

-- 下方的语句为MyCat的命令,MyCat的命令通过类似注释的方式去执行。该命令执行刷新物理表的操作。
/*+ mycat:repairPhysicalTable{} */

7. 备忘:

• 不使用MyCat1.6的几点原因:
Insert操作丢失数据
不能批量更新(不支持多语句)