MyCat2使用笔记

498 阅读2分钟

1. 安装JAVA环境

sudo apt-get install default-jdk

2. 下载wrapper及jar包

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. 给文件夹写权限

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

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

6. 创建数据库

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

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 :分表的数量。

-- 为了测试多表查询,顾在插入了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操作丢失数据不能批量更新(不支持多语句)

8. 疑问

  • 是不是还有其他的使用姿势,令我疑惑的是,分库分表查询2千万数据好像还是很慢,是不是因为我测试的MYSQL服务器位于同一台物理主机,对于内存、CPU啥的都处于争用状态?
  • 使用了MyCat2数据迁移导入会不会很麻烦?
  • 如何配置可以优化查询速度,多表查询慢如何解决?

留着这些等回头用上了在填坑。目前只是做了一个demo。