【mycat】常用分片规则
创始人
2024-01-27 03:29:09
0

一、 常用分片规则

1、取模

​ 此规则为对分片字段求摸运算。也是水平分表最常用规则

2、分片枚举

​ 通过在配置文件中配置可能的枚举 id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的,这类业务使用本条规则。

实现方式如下:

2.1、修改schema.xml配置文件

> [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3bFd6zV-1668606531894)(assets/1657606799331.png)]

测试表为orders_ware_info,配置在dn1和dn2节点,规则是新增一个sharding_by_intfile

2.2、修改rule.xml配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Xuivj2H-1668606531895)(assets/1657606924447.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uTGUOEg0-1668606531896)(assets/1657607036319.png)]

2.3、修改partition-hash-int.txt配置文件

表示areacode为110就存到第一个数据节点,为120就存到第二个数据节点

2.4、重启 Mycat使配置生效

使用mycat创建订单归属区域信息表:

CREATE TABLE orders_ware_info ( `id` INT AUTO_INCREMENT comment '编号', `order_id` INT comment '订单编号', `address` VARCHAR(200) comment '地址', `areacode` VARCHAR(20) comment '区域编号', PRIMARY KEY(id) 
); 

插入数据:

INSERT INTO ORDERS_WARE_INFO(id, order_id,address,areacode) VALUES (1,1,'北京','110'); 
INSERT INTO ORDERS_WARE_INFO(id, order_id,address,areacode) VALUES (2,2,'天津','120'); 

在这里插入图片描述

通过数据库直接查询:

spdb_pzex:

在这里插入图片描述

spdb_portal_wechat:
在这里插入图片描述

3、范围约定

​ 此分片适用于,提前规划好分片字段某个范围属于哪个分片。

3.1、修改schema.xml配置文件

在这里插入图片描述

上面定义以及所存储的数据节点分片规则

3.2、修改rule.xml配置文件

在这里插入图片描述

3.3、修改autopartition-long.txt配置文件

在这里插入图片描述

3.4、重启 Mycat使配置生效

在这里插入图片描述

在mycat中创建支付信息表payment_info:

CREATE TABLE payment_info( `id` INT AUTO_INCREMENT comment '编号', `order_id` INT comment '订单编号', `payment_status` INT comment '支付状态', PRIMARY KEY(id)
); 

插入数据:

INSERT INTO PAYMENT_INFO (id,order_id,payment_status) VALUES (1,101,0);
INSERT INTO PAYMENT_INFO (id,order_id,payment_status) VALUES (2,102,1);
INSERT INTO PAYMENT_INFO (id,order_id,payment_status) VALUES (3,103,0);
INSERT INTO PAYMENT_INFO (id,order_id,payment_status) VALUES (4,104,1); 

在这里插入图片描述

分别查看两个host数据节点的数据:

spdb_pzex:
在这里插入图片描述
spdb_portal_wechat:
在这里插入图片描述

4、按日期(天)分片

此规则为按天分片。设定时间格式、范围

4.1、修改schema.xml配置文件

在这里插入图片描述

4.2、修改rule.xml配置文件

在这里插入图片描述

需要自定义一个分片函数shardingByDate:

在这里插入图片描述

4.3、重启 Mycat使配置生效重启

在这里插入图片描述

在mycat中创建用户信息表login_info:

CREATE TABLE login_info( `id` INT AUTO_INCREMENT comment '编号', `user_id` INT comment '用户编号', `login_date` date comment '登录日期', PRIMARY KEY(id)
); 

插入数据:

INSERT INTO LOGIN_INFO(id,user_id,login_date) VALUES (1,101,'2019-01-01');
INSERT INTO LOGIN_INFO(id,user_id,login_date) VALUES (2,102,'2019-01-02');
INSERT INTO LOGIN_INFO(id,user_id,login_date) VALUES (3,103,'2019-01-03');
INSERT INTO LOGIN_INFO(id,user_id,login_date) VALUES (4,104,'2019-01-04');
INSERT INTO LOGIN_INFO(id,user_id,login_date) VALUES (5,103,'2019-01-05');
INSERT INTO LOGIN_INFO(id,user_id,login_date) VALUES (6,104,'2019-01-06'); 

在这里插入图片描述

分别查看两个host数据节点的数据:

spdb_pzex:
在这里插入图片描述

spdb_portal_wechat:
> [)(assets/1657608068820.png)]

二、mycat高可用

https://blog.csdn.net/K_520_W/article/details/123781475

相关内容

热门资讯

淘宝网开店淘宝网开店的小本创业... 新店新手最好做虚拟的(最基本的投资只有300元)因为实物的要找货源进货,卖不出货就造成压货,投资有风...
县城小本创业项目做什么 县城小... 随着经济社会不断向前发展,互联网技术也得到了迅速提升,技术创新为互联网革新带来了契机,创业活动尤其是...
适合穷人的小我想创业有小本创业... 很多人都会觉得创业是富人该想该做的事情,穷人是没有条件和机会创业的,可是事实上现在创业不是光靠资本就...
09年小本创业好项目 09年小... 最佳答案cbu-的答复:尽量减少投入太多资金,以回本快为第一原则,金融危机下尽量选择和百姓的生活相关...
小本创业09年小本创业好项目好... 小本创业好项目有哪些?可以选择一些投资费用比较少的项目,最好是人们刚需的用量大,自然收入稳定。例如:...
小本创业好项目价格 小本创业好... 延伸阅读年青人创业找项目年轻人六大创业好项目1574人年青人敢闯敢拼的精神才是创业最需要的,现在年青...
2018小本创业推荐 本小利大... 照片书优势:1.照片书是一个新项目,整体竞争小目前微商遍地都是化妆品、护肤品、内衣、面膜等产品,主要...
小本创业项目最新排行榜 小本创...   :幼儿园农村人现在也注重孩子的早期教育,如果你能歌善舞,富有爱心,家里住房宽敞,可考虑开办一家幼...
适合90后做的小本创业项目有哪... 90后创业首选奶茶行业,零基础也没有关系,加盟总部会全程扶持,包括技术和设备。接下来说一下开一家co...
2016适合女性在乡镇开的十五... 2016适合女性开的十五种店:旅游景区的小驿店,酷热难耐的夏天人们都在周末到海岛渡假,洗海水浴的同时...