Mycat分片規(guī)則是怎么樣的,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為雷山企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,雷山網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
表對(duì)應(yīng)的分片規(guī)則
查看rule.xml查看對(duì)應(yīng)的關(guān)系
查看rule.xml對(duì)應(yīng)的方法
class="io.mycat.route.function.PartitionByFileMap">
查看文件
[root@localhost conf]# more partition-hash-int.txt
10000=0 ####sharding_id為10000發(fā)到1節(jié)點(diǎn)
10010=1 ####sharding_id為10010發(fā)到2節(jié)點(diǎn)
DEFAULT_NODE=1 ###其它插到2節(jié)點(diǎn)
實(shí)驗(yàn)
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節(jié)點(diǎn)
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對(duì)應(yīng)的關(guān)系
對(duì)應(yīng)的方法
class="io.mycat.route.function.AutoPartitionByLong">
對(duì)應(yīng)的文件:
# range start-end ,data node index
# K=1000,M=10000.
0-500M=0 #####范圍0-500M插到第一個(gè)節(jié)點(diǎn)
500M-1000M=1 #####范圍500m-1000M插到第2個(gè)節(jié)點(diǎn)
1000M-1500M=2 。。。類推
fun:
tab:
rule:
class="io.mycat.route.function.PartitionByMonth">
測試:
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'); ###按月分片,只有三個(gè)節(jié)點(diǎn),只能插到1,2,3月份的,4月份就開始報(bào)錯(cuò)了
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:
class="io.mycat.route.function.PartitionByDate">
測試:
插了前9天,分到三個(gè)分片
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天的,開始報(bào)錯(cuò)
ERROR 1064 (HY000): Index: 3, Size: 3
關(guān)于Mycat分片規(guī)則是怎么樣的問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。