189 8069 5689

Mycat分片规则是怎么样的

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

创新互联公司长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为雷山企业提供专业的成都网站设计、成都网站制作,雷山网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

1.sharding-by-intfile

hash分片

  1. 表对应的分片规则

  2. Mycat分片规则是怎么样的

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

  1.                 

  2.                         sharding_id   根据该字段分片

  3.                         hash-int    分片的方法

  4.                 

  5.         


查看rule.xml对应的方法

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

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

  3.                 1

  4.         


查看文件

  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.                 

      2.                         id

      3.                         rang-long

      4.                 

      5.         

    2. 对应的方法

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

      2.                 autopartition-long.txt

      3.         

    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.                 

      2.                 3

      3.         

      4.                 

      5.                         id

      6.                         mod-long

      7.                 

      8.         


      4. sharding-by-month

      按月分片

      1. tab:

      2.  



      rule:

      1.                 

      2.                         create_time

      3.                         partbymonth

      4.                 

      5.         

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

      7.                 yyyy-MM-dd

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

      9.         


      测试:
      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.                 

      2.                         create_time

      3.                         partbyday

      4.                 

      5.         

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

      7.                 yyyy-MM-dd

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

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

      10.         

    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分片规则是怎么样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


      当前文章:Mycat分片规则是怎么样的
      网站网址:http://cdxtjz.cn/article/gdhjsc.html

      联系我们

      您好HELLO!
      感谢您来到成都网站建设公司,若您有合作意向,请您为我们留言或使用以下方式联系我们, 我们将尽快给你回复,并为您提供真诚的设计服务,谢谢。
      • 电话:028- 86922220 18980695689
      • 商务合作邮箱:631063699@qq.com
      • 合作QQ: 532337155
      • 成都网站设计地址:成都市青羊区锣锅巷31号五金站写字楼6楼

      小谭建站工作室

      成都小谭网站建设公司拥有多年以上互联网从业经验的团队,始终保持务实的风格,以"帮助客户成功"为已任,专注于提供对客户有价值的服务。 我们已为众企业及上市公司提供专业的网站建设服务。我们不只是一家网站建设的网络公司;我们对营销、技术、管理都有自己独特见解,小谭建站采取“创意+综合+营销”一体化的方式为您提供更专业的服务!

      小谭观点

      相对传统的成都网站建设公司而言,小谭是互联网中的网站品牌策划,我们精于企业品牌与互联网相结合的整体战略服务。
      我们始终认为,网站必须注入企业基因,真正使网站成为企业vi的一部分,让整个网站品牌策划体系变的深入而持久。