MyCat2使用
安装
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操作丢失数据
• 不能批量更新(不支持多语句)