Mycat2快速搭建分库分表

本文介绍基于windows系统

1.下载文件

tar包:dl.mycat.org.cn/2.0/install…

jar包: dl.mycat.org.cn/2.0/

选择一个自己喜欢的版本,将jar包放入解压的tar包lib文件夹

2. mysql创建用户,权限配置

2.1 创建用户 ,用户名为mycat,密码为123456,赋权限

CREATE USER 'mycat'@'%' IDENTIFIED BY '123456';
--必須要複的權限 mysql8才有的
GRANT XA_RECOVER_ADMIN ON *.* TO 'root'@'%';
---视情况赋值权限
GRANT ALL PRIVILEGES ON *.* TO 'mycat'@'%' ;
flush privileges;
复制代码

2.2 配置文件修改

prototypeDs.datasource.json

{
	"dbType":"mysql",
	"idleTimeout":60000,
	"initSqls":[],
	"initSqlsGetConnection":true,
	"instanceType":"READ_WRITE",
	"maxCon":1000,
	"maxConnectTimeout":3000,
	"maxRetryCount":5,
	"minCon":1,
	"name":"prototypeDs",
	"password":"123456",//密码
	"type":"JDBC",
  //链接
	"url":"jdbc:mysql://localhost:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
	"user":"mycat", //用户名
	"weight":0
}
复制代码

3.启动mycat

cd mycat/bin
 
#PowerShell
 
./mycat install
./mycat start
./mycat status
 
 
#CMD
 
mycat install
mycat start
mycat status
复制代码

亦可安装后在服务里启动

4.建表

通过工具链接到mycat 默认端口8066

4.1 创建单表

CREATE TABLE test.`single` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `user_id` varchar(100) DEFAULT NULL,
  `traveldate` date DEFAULT NULL,
  `fee` decimal(10,0) DEFAULT NULL,
  `days` int DEFAULT NULL,
  `blob` longblob,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
复制代码

4.2 创建全局表

CREATE TABLE test.`migrations` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `user_id` varchar(100) DEFAULT NULL,
  `traveldate` date DEFAULT NULL,
  `fee` decimal(10,0) DEFAULT NULL,
  `days` int DEFAULT NULL,
  `blob` longblob,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 BROADCAST;
复制代码

建全局表语句执行操作

1.更改mycat的整个库配置

2.根据存储节点信息建立物理库,物理表

4.3 创建分片表(分库分表)

CREATE TABLE test.`travelrecord` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `user_id` varchar(100) DEFAULT NULL,
  `traveldate` date DEFAULT NULL,
  `fee` decimal(10,0) DEFAULT NULL,
  `days` int DEFAULT NULL,
  `blob` longblob,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 dbpartition by mod_hash(id) tbpartition by mod_hash(id) tbpartitions 2 dbpartitions 2;
复制代码

dbpartition by mod_hash(id) tbpartition by mod_hash(id) tbpartitions 2 dbpartitions 2;就是分库分表语法

建分片表语句执行操作

1.更改mycat的整个库配置

2.根据当前集群名字prototype集群纳入到分片表的存储节点中

3.根据存储节点信息建立物理库,物理表

默认分片表的自增序列是雪花算法

发现表已经建成如下图:

4.4 插入数据

insert into travelrecord values(1,1,now(),1,1,1);
insert into travelrecord values(2,2,now(),2,2,2);
insert into travelrecord values(3,3,now(),3,3,3);
insert into travelrecord values(4,4,now(),4,4,4);
insert into travelrecord values(5,5,now(),5,5,5);
复制代码

发现数据已经按规则分到表了, 规则是mod_hash(id) 也就是1%4=1落入1表, 依此类推

5.powershell乱码

中文乱码在链接mysql时增加--default-character-set=utf8

至此简单的mycat使用结束


作者:yojhon
链接:https://juejin.cn/post/7098963244467322887
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值