Mycat分片规则是怎么样的


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


sharding_id 根据该字段分片
hashint 分片的方法

查看rule.xml对应的方法

class=”io.mycat.route.function.PartitionByFileMap”> partitionhashint.txt —对应的文件1

查看文件
[root@localhost conf]# more partition-hash-int.txt
10000=0 ####sharding_id为10000发到1节点
10010=1 ####sharding_id为10010发到2节点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)

分片表如下:

查看rule.xml对应的关系



id rang-long

对应的方法


class=”io.mycat.route.function.AutoPartitionByLong”> autopartition-long.txt 对应的文件:

# range start-end ,data node index
# K=1000,M=10000.
0-500M=0 #####范围0-500M插到第一个节点
500M-1000M=1 #####范围500m-1000M插到第2个节点
1000M-1500M=2 。。。类推

fun:



3

id mod-long

tab:

rule:


create_time partbymonth


class=”io.mycat.route.function.PartitionByMonth”> yyyy-MM-dd 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,shardi开发云主机域名ng_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
tab:

rule:



create_time partbyday


class=”io.mycat.route.function.PartitionByDate“> yyyy-MM-dd 2015-01-01 ###起始日期 3 ###多少天后开始分片

测试
插了前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)

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

相关推荐: 在MySQL中创建用户和授予权限的方法

这篇文章给大家分享的是有关在MySQL中创建用户和授予权限的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。如何创建MySQL用户并授予权限?为了实现良好的安全性,需要为每个应用程序创建单独的用户帐户,而不是root用户访问数据库…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/27 10:39
下一篇 06/27 10:40

相关推荐