千家信息网

Mycat分片规则是怎么样的

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,Mycat分片规则是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.sharding-by-intfilehash分片表对
千家信息网最后更新 2025年01月21日Mycat分片规则是怎么样的

Mycat分片规则是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.sharding-by-intfile

hash分片

  1. 表对应的分片规则


查看rule.xml查看对应的关系



  1. sharding_id 根据该字段分片

  2. hash-int 分片的方法



查看rule.xml对应的方法

  1. class="io.mycat.route.function.PartitionByFileMap">

  2. partition-hash-int.txt ---对应的文件

  3. 1


查看文件

  1. [root@localhost conf]# more partition-hash-int.txt

  2. 10000=0 ####sharding_id为10000发到1节点

  3. 10010=1 ####sharding_id为10010发到2节点

  4. DEFAULT_NODE=1 ###其它插到2节点




实验
mysql> create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into employee(id,name,sharding_id) values(2,'leader us',10000);
Query OK, 1 row affected (0.01 sec)


mysql> insert into employee(id,name,sharding_id) values(4,'leader us',10000);
Query OK, 1 row affected (0.00 sec)


mysql> insert into employee(id,name,sharding_id) values(3,'leader us',100003); -----其它插到2节点



mysql> insert into employee(id,name,sharding_id) values(4,'leader us',10010);
Query OK, 1 row affected (0.01 sec)


mysql> insert into employee(id,name,sharding_id) values(5,'leader us',10010);
Query OK, 1 row affected (0.03 sec)


2.auto-sharding-long

范围分片

  1. 分片表如下:

    1. 查看rule.xml对应的关系



      1. id

      2. rang-long


    2. 对应的方法

      1. class="io.mycat.route.function.AutoPartitionByLong">

      2. autopartition-long.txt

    3. 对应的文件:

      1. # range start-end ,data node index

      2. # K=1000,M=10000.

      3. 0-500M=0 #####范围0-500M插到第一个节点

      4. 500M-1000M=1 #####范围500m-1000M插到第2个节点

      5. 1000M-1500M=2 。。。类推


    4. 3.mod-log

      取模分片



    5. fun:





      1. 3



      2. id

      3. mod-long



      4. sharding-by-month

      按月分片

      1. tab:



      rule:



      1. create_time

      2. partbymonth





      3. class="io.mycat.route.function.PartitionByMonth">

      4. yyyy-MM-dd

      5. 2015-01-01 ##开始时间


      测试:
      mysql> insert into month_tab(id,name,sharding_id,create_time) values (1,'1',1,'2015-01-01');
      Query OK, 1 row affected (0.43 sec)

      mysql> insert into month_tab(id,name,sharding_id,create_time) values (2,'2',2,'2015-02-02');
      Query OK, 1 row affected (0.01 sec)

      mysql> insert into month_tab(id,name,sharding_id,create_time) values (3,'3',3,'2015-03-03');
      Query OK, 1 row affected (0.49 sec)

      mysql> insert into month_tab(id,name,sharding_id,create_time) values (4,'4',4,'2015-04-04'); ###按月分片,只有三个节点,只能插到1,2,3月份的,4月份就开始报错了
      ERROR 1064 (HY000): Can't find a valid data node for specified node index :MONTH_TAB -> CREATE_TIME -> 2015-04-04 -> Index : 3

      5 sharding-by-day

      按日分片(1.6默认文件都没写,自己配置的)

      1. tab:



    6. rule:



      1. create_time

      2. partbyday





      3. class="io.mycat.route.function.PartitionByDate">

      4. yyyy-MM-dd

      5. 2015-01-01 ###起始日期

      6. 3 ###多少天后开始分片

    7. 测试:

    8. 插了前9天,分到三个分片

    9. mysql> select * from day_tab;
      +----+------+-------------+---------------------+
      | id | name | sharding_id | create_time |
      +----+------+-------------+---------------------+
      | 7 | 1 | 1 | 2015-01-08 00:00:00 |
      | 8 | 1 | 1 | 2015-01-09 00:00:00 |
      | 13 | 1 | 1 | 2015-01-07 00:00:00 |
      | 7 | 1 | 1 | 2015-01-01 00:00:00 |
      | 8 | 1 | 1 | 2015-01-02 00:00:00 |
      | 9 | 1 | 1 | 2015-01-03 00:00:00 |
      | 10 | 1 | 1 | 2015-01-04 00:00:00 |
      | 11 | 1 | 1 | 2015-01-05 00:00:00 |
      | 12 | 1 | 1 | 2015-01-06 00:00:00 |
      +----+------+-------------+---------------------+
      9 rows in set (0.01 sec)

    10. mysql> insert into day_tab(id,name,sharding_id,create_time) values (17,'1',1,'2015-01-10'),(18,'1',1,'2015-01-11'); ###插第10天的,开始报错
      ERROR 1064 (HY000): Index: 3, Size: 3

    11. 关于Mycat分片规则是怎么样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

      节点 文件 方法 规则 范围 问题 三个 更多 月份 帮助 测试 解答 易行 简单易行 内容 只有 天后 字段 小伙 小伙伴 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全的话上面有没有字 手机流量怎么一直无法连接服务器 嵌入式软件开发本科可以做吗 我想学软件开发去哪里学 江苏企业软件开发业务流程 曹县公安局民警送网络安全教育 软件开发试用期工作汇报范文 只允许内网访问服务器 数据库一般会出现哪些bug 网络安全 单项导入 贵州省税控服务器地址 北京环境监测软件开发哪家好 瘦瘦服务器 建立数据库指定编码 会泽县财政局网络安全 梦幻服务器鬼区 中文古文献全文数据库 会计 数据库 结构 网络安全开幕式2020 ftp服务器中怎么看图片 宁波镇海区超融合服务器 监控服务器辐射大不大 二道区什么是网络安全诚信经营 收银系统软件开发公司 职高网络技术学什么课程 本地服务器就是物理服务器吗 软件开发实操课属于哪一行 时光电影数据库app下载 临沂民主评议软件开发公司 移动智能终端应用软件开发
      0