当前位置:   article > 正文

Mycat2快速搭建分库分表_mycat2全局建表

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,赋权限

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

2.2 配置文件修改

prototypeDs.datasource.json

  1. {
  2. "dbType":"mysql",
  3. "idleTimeout":60000,
  4. "initSqls":[],
  5. "initSqlsGetConnection":true,
  6. "instanceType":"READ_WRITE",
  7. "maxCon":1000,
  8. "maxConnectTimeout":3000,
  9. "maxRetryCount":5,
  10. "minCon":1,
  11. "name":"prototypeDs",
  12. "password":"123456",//密码
  13. "type":"JDBC",
  14. //链接
  15. "url":"jdbc:mysql://localhost:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
  16. "user":"mycat", //用户名
  17. "weight":0
  18. }
  19. 复制代码

3.启动mycat

  1. cd mycat/bin
  2. #PowerShell
  3. ./mycat install
  4. ./mycat start
  5. ./mycat status
  6. #CMD
  7. mycat install
  8. mycat start
  9. mycat status
  10. 复制代码

亦可安装后在服务里启动

4.建表

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

4.1 创建单表

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

4.2 创建全局表

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

建全局表语句执行操作

1.更改mycat的整个库配置

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

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

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

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

建分片表语句执行操作

1.更改mycat的整个库配置

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

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

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

发现表已经建成如下图:

4.4 插入数据

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

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

5.powershell乱码

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

至此简单的mycat使用结束


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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/407275
推荐阅读
相关标签
  

闽ICP备14008679号