首页 > 其他分享 >MyCat2 分表分库

MyCat2 分表分库

时间:2023-02-14 16:59:09浏览次数:40  
标签:分库 orders MyCat2 detail order db1 VALUES 分表 id

1、添加数据库、存储数据源

我们在读写分离那边已经生成过,不需要在执行,如果没有执行过,执行下面注解,我们这边重新创建一个数据库db1

/*+ mycat:createDatasource{ "name":"rwSepw", "url":"jdbc:mysql://192.168.200.51:3306/db1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123"} */;

/*+ mycat:createDatasource{ "name":"rwSepr", "url":"jdbc:mysql://192.168.200.53:3306/db1?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true", "user":"root", "password":"123"} */;

create database db1;

2、添加集群配置

把新添加的数据源配置成集群

#在 mycat 终端输入
/*!
mycat:createCluster{"name":"c0","masters":["rwSepw"],"replicas":["rwSepr"]}
*/;

#可以查看集群配置信息
cd /usr/local/mycat/conf/clusters

img

注解生成如下结果
img

3、创建分片表(分库分表)

在 Mycat2数据客户端直接运行建表语句进行数据分片

CREATE TABLE db1.orders(
id BIGINT NOT NULL AUTO_INCREMENT,
order_type INT,
customer_id INT,
amount DECIMAL(10,2),
PRIMARY KEY(id),
KEY `id` (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
dbpartition BY mod_hash(customer_id) tbpartition BY mod_hash(customer_id) tbpartitions 2 dbpartitions 1;

数据库分片规则,表分片规则,以及各分多少片 tbpartitions 表数量 dbpartitions 库数量

查看生成的配置信息:

vim /usr/local/mycat/conf/schemas/db1.schema.json

img

4、 查看数据库,插入数据

img

INSERT INTO db1.orders(id,order_type,customer_id,amount)
VALUES(1,101,100,100100);
INSERT INTO db1.orders(id,order_type,customer_id,amount)
VALUES(2,101,100,100300);
INSERT INTO db1.orders(id,order_type,customer_id,amount)
VALUES(3,101,101,120000);
INSERT INTO db1.orders(id,order_type,customer_id,amount)
VALUES(4,101,101,103000);
INSERT INTO db1.orders(id,order_type,customer_id,amount)
VALUES(5,102,101,100400);
INSERT INTO db1.orders(id,order_type,customer_id,amount)
VALUES(6,102,100,100020);

查看数据:

img
img
img
img

在 Mycat2数据客户端查询依然可以看到全部数据
img

5、创建 ER 表 ,在Mycat2数据客户端直接运行建表语句进行数据分片

CREATE TABLE db1.orders_detail(
`id` BIGINT NOT NULL AUTO_INCREMENT,
detail VARCHAR(2000),
order_id INT,
PRIMARY KEY(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8
dbpartition BY mod_hash(order_id) tbpartition BY mod_hash(order_id)
tbpartitions 2 dbpartitions 1;

img

插入ER表数据

INSERT INTO db1.orders_detail(id,detail,order_id) VALUES(1,'detail1',1);
INSERT INTO db1.orders_detail(id,detail,order_id) VALUES(2,'detail1',2);
INSERT INTO db1.orders_detail(id,detail,order_id) VALUES(3,'detail1',3);
INSERT INTO db1.orders_detail(id,detail,order_id) VALUES(4,'detail1',4);
INSERT INTO db1.orders_detail(id,detail,order_id) VALUES(5,'detail1',5);
INSERT INTO db1.orders_detail(id,detail,order_id) VALUES(6,'detail1',6);

img
img
img
img

上述两表具有相同的分片算法,但是分片字段不相同Mycat2 在涉及这两个表的 join 分片字段等价关系的时候可以完成 join 的下推#Mycat2 无需指定 ER 表,是自动识别的,具体看分片算法的接口。

查看配置的表是否具有 ER 关系,使用

/*+ mycat:showErGroup{}*/

img

运行关联查询语句:

SELECT * FROM  db1.orders o INNER JOIN  db1.orders_detail od ON od.order_id=o.id;

img

标签:分库,orders,MyCat2,detail,order,db1,VALUES,分表,id
From: https://www.cnblogs.com/shiding/p/17119826.html

相关文章

  • Centos7 MyCat2 安装部署
    部署MyCat2之前需要搭建好数据库的主从,详看文档:mysql主次数据库搭建官网:http://www.mycat.org.cn/官方文档:https://www.yuque.com/ccazhw/ml3nkf?源码地址:https......
  • MyCat2 读写分离
    已经搭配好的主从数据库分别为:主:192.168.200.51:3306从:mysql://192.168.200.53:3306一.登录数据客户端,创建逻辑库,配置数据源createdatabasedatacenter;此时会在......
  • .NET EF ShardingCore实现仅分库
    参考文章官方文档分库安装ShardingCore7.X.0.9以上版本我用7.X.0.8的ShardingCore仅分库时,会导致无法查询数据创建实体publicenumOrderStatus{......
  • laravel 分表日志功能
    1.生成定时任务,自动出案件表命令行创建定时任务生成脚本  phpartisanmake:commandCreateLog脚本CreateLog的handle方法生成分表的表名if(!Schema......
  • 聊聊分库分表
    我也没想到大家对于分库分表的话题会这么感兴趣,可能很多人的工作内容业务量较小很难接触到这方面的技能。这个系列在我脑子里筹划了挺久的,奈何手说啥也不干活,就一直拖到了......
  • 基于客户端和服务端实现分表分库区别
     ......
  • 分库分表中间件比对
    中间件名称介绍优点缺点sharding-JDBC当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架,实现透明化数据库分库分表访问(1)旧代码......
  • mongoTemplate实现分表
    测试方法:com.kiis.mongodb_demo.mongo.User为实体类分别根据条件向userOne与userTwo两个集合(表)插入数据@TestvoidtestInsert(){List<User>users1=......
  • 数据库分库分表的几种场景
    随着业务数据的增加,原有的数据库性能瓶颈凸显,以此就需要对数据库进行分库分表操作。为啥需要分库分表随着业务数据的增加,原有的数据库性能瓶颈凸显,主要体现在以下两个方面。......
  • 9.分库分表中间件DBLE
    1.原理分析SQL语句,根据SQL语义将SQL拆分成多个,发送至数据节点,将多个数据节点的结果聚集,返回客户端。2.DBLE基于MyCat的开源免费的、高性能、高可用的MySQL分库分表中间件......