mysql cat sharding_mycat分片规则之范围约定规则(auto-sharding-long)

分片规则学习

前面部署的时候,就有想到分片规则的问题。规则是什么样子?怎么来定义?

规则列表:

分片枚举

固定分片hash算法

范围约定

取模

按日期(天)分片

取模范围约束

截取数字做hash求模范围约束

应用指定

截取数字hash解析

一致性hash

按单月小时拆分

范围求模分片

日期范围hash分片

冷热数据分片

自然月分片

感觉这个是mycat的精髓部分了,有困难。慢慢攻克。

看看我们现在使用了哪个规则?

用的是auto-sharding-long

这是最简单的范围约定规则

看看它的定义

id

rang-long

解释下 name是规则名字,columns段是分片的表字段,algorithm段是使用的函数

看看函数,在rule.xml下面有这个定义

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

autopartition-long.txt

解释下,name是函数名字,mapfile是要读取的配置文件

看看配置文件

[root@mysql1 conf]# cat autopartition-long.txt

range start-end ,data node index

# K=1000,M=10000.

0-500M=0

500M-1000M=1

1000M-1500M=2

这是默认的配置,也可以直接修改,我们修改下

[root@mysql1 conf]# cat autopartition-long.txt

range start-end ,data node index

# K=1000,M=10000.

0-1K=0

1K-10K=1

10K-100K=2

现在的意思是:

id 0-1K 分配到datanode dn1

id 1K-10K 分配到datanode dn2

id 10K-100K 分配到datanode dn3

是不是这样呢?测试下:

mysql> explain insert into t1(id) values(1);

+-----------+------------------------------+

| DATA_NODE | SQL |

+-----------+------------------------------+

| dn1 | insert into t1(id) values(1) |

+-----------+------------------------------+

1 row in set (0.01 sec)

mysql> insert into t1(id) values(1001);

Query OK, 1 row affected (0.02 sec)

mysql> explain insert into t1(id) values(1001);

+-----------+---------------------------------+

| DATA_NODE | SQL |

+-----------+---------------------------------+

| dn2 | insert into t1(id) values(1001) |

+-----------+---------------------------------+

1 row in set (0.01 sec)

mysql> insert into t1(id) values(10001);

Query OK, 1 row affected (0.02 sec)

mysql> explain insert into t1(id) values(10001);

+-----------+----------------------------------+

| DATA_NODE | SQL |

+-----------+----------------------------------+

| dn3 | insert into t1(id) values(10001) |

+-----------+----------------------------------+

1 row in set (0.00 sec)

mysql>

实现了按范围分片的需求。

本文转自 am2012 51CTO博客,原文链接:http://blog.51cto.com/goome/2050187

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值