• 【mycat】常用分片规则


    一、 常用分片规则

    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) 
    ); 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    插入数据:

    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'); 
    
    • 1
    • 2

    在这里插入图片描述

    通过数据库直接查询:

    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)
    ); 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    插入数据:

    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); 
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    分别查看两个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)
    ); 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    插入数据:

    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'); 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

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

    spdb_pzex:
    在这里插入图片描述

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

    二、mycat高可用

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

  • 相关阅读:
    这测试谁爱做谁做,我反正不做了,4年工作经验去面试10分钟就结束了,现在大环境卷成这样了吗?
    远距离WiFi模组方案,实现移动设备之间高效通信,无人机远程图传应用
    矩阵存储和特殊矩阵的压缩存储
    nodejs:path路径模块
    14 I/O 设备管理(1)
    MongoDB的安装
    LiveNVR监控流媒体Onvif/RTSP功能-海康摄像头海康NVR通过EHOME协议ISUP协议接入支持转GB28181级联
    智能驾驶感知技术的综述与展望
    机器学习算法(九): 基于线性判别模型的LDA手写数字分类识别
    记一次Clickhouse 复制表同步延迟排查
  • 原文地址:https://blog.csdn.net/qq_60969145/article/details/127894220