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

注解生成如下结果

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

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

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);

查看数据:







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

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;

插入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);







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

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

/*+ mycat:showErGroup{}*/

运行关联查询语句:

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

MyCat2 分表分库的更多相关文章

  1. 学会数据库读写分离、分表分库——用Mycat,这一篇就够了!

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  2. .NETCore 下支持分表分库、读写分离的通用 Repository

    首先声明这篇文章不是标题党,我说的这个类库是 FreeSql.Repository,它作为扩展库现实了通用仓储层功能,接口规范参考 abp vnext 定义,实现了基础的仓储层(CURD). 安装 d ...

  3. sharding sphere 分表分库 读写分离

    sharding jdbc: sharding sphere 的 一部分,可以做到 分表分库,读写分离. 和 mycat 不同的 是 sharding jdbc 是 一个 jdbc 驱动 在 驱动这个 ...

  4. 总结下Mysql分表分库的策略及应用

    上月前面试某公司,对于mysql分表的思路,当时简要的说了下hash算法分表,以及discuz分表的思路,但是对于新增数据自增id存放的设计思想回答的不是很好(笔试+面试整个过程算是OK过了,因与个人 ...

  5. 学会数据库读写分离、分表分库——用Mycat

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  6. (转)学会数据库读写分离、分表分库——用Mycat,这一篇就够了!

    原文:https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理 ...

  7. Sharding-Jdbc实现分表分库

    Sharding-Jdbc分表分库LogicTable数据分片的逻辑表,对于水平拆分的数据库(表),同一类表的总称.订单信息表拆分为2张表,分别是t_order_0.t_order_1,他们的逻辑表名 ...

  8. 使用MyCat分表分库原理分析

    Mycat可以实现 读写分离 分表分库 主从复制是MySQL自带的哈~ 关于分片取模算法:  根据id进行取模  根据数据库集群的数量(或者说是表数量,mycat里面一个表对应一个库) 使用MyCat ...

  9. 由mysql分区想到的分表分库的方案

    在分区分库分表前一定要了解分区分库分表的动机. 对实时性要求比较高的场景,使用数据库的分区分表分库. 对实时性要求不高的场景,可以考虑使用索引库(es/solr)或者大数据hadoop平台来解决(如数 ...

  10. Mycat分表分库

    一.Mycat介绍 Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以 ...

随机推荐

  1. Vue中实现自定义excel下载

    目录 第一种:后端生成excel 第二种:前端合成excel 总结 参考资料 最近在工作中遇到一个需求,就是需要在前端实现一个错误模板Excel的下载功能. 实现下载有两种方式,一种是后端生成一个ex ...

  2. 【转】C#接口知识

    参考:日常收集 C# 接口知识 (知识全面) 目录 第一节 接口慨述 第二节 定义接口 第三节 定义接口成员 第四节.访问接口 第五节.实现接口 第六节.接口转换 第七节.覆盖虚接口 第一节 接口慨述 ...

  3. 02安装一个最小化的Hadoop

    安装一个最小化的Hadoop 为了学习HDFS和之后的MapReduce,我们需要安装一个Hadoop. Hadoop一共有3种运行模式 独立模式:不启动守护进程,所有程序运行在一个JVM进程中.独立 ...

  4. angular--连接服务获取数据并展示到页面加载结束禁用按钮-分页加载-管道使用

  5. vue 解决循环引用组件/动态组件/组件未注册报错

    使用动态组件报错 Unknown custom element: - did you register the component correctly? For recursive component ...

  6. 3DText无法被物体遮挡 - 解决

    目录 开篇: 问题复现: 如何解决: 1.创建一个Shader 2.创建一个Material 3.给Material赋值字体 4.给3DText属性赋值 5.查看效果 希望大家:点赞,留言,关注咯~ ...

  7. 【学习笔记】XR872 GUI Littlevgl 8.0 移植(文件系统)

    不得不提 在移植的过程中,发现 LVGL 的文件操作接口并不十分完善,在我看来, LVGL 的文件操作接口,应该更多的是为了 LVGL 内部接口方便读取资源文件而设立的,例如读取图像文件,加载字库文件 ...

  8. 论文翻译:2020:ECAPA-TDNN: Emphasized Channel Attention, Propagation and Aggregation in TDNN Based Speaker Verification

    论文地址:ECAPA-TDNN:在基于TDNN的说话人验证中强调通道注意.传播和聚集 论文代码:https://github.com/TaoRuijie/ECAPA-TDNN 引用格式:Desplan ...

  9. 【LeetCode】三数之和+四数之和(双指针)

    之所以放在一起是因为,"四数之和"的解题方法基本与"三数之和"一致 由此我们可以推出n数之和的解法 本质上,我们只是使用双指针的方法降低此类问题的时间复杂度 当 ...

  10. 2023.1.13 [网络流24题] 餐巾计划问题 LuoguP1251

    2023.1.13 今日完成的[餐巾计划问题],是一道最小费用最大流的模板题,本人太弱在第一次使用dinic + spfa 完成此题时,也出现了许多问题,在此总结和提醒. 大致题意 一个餐厅在相继的 ...