分片规则
Mycat 针对数据分表提供了一些编写好的分片规则,在这个博客中,将会把也用到的几个分片规则进行阐述说明。
分片规则在Mycat 配置文件的rule.xml配置文件中
按id求模分片
mod-long
这个分片规则比较好理解,其实就是针对分片关键字段取余,然后进行分片。需要注意的是,分片关键字段必须是整数类型。如果不是整数类型,在插入数据库时就会有无法插入数据的异常。
主键的话有可能会发生重复,因为每一个实体表其实都是在物理节点的数据库中,所以主键的约束会失效,需要自己做分布式主键管理。
按月分片
sharing-by-month
这个分片规则也很好理解,就是按照数据的插入时间或者某个时间关键字段按月进行分片。该分片规则需要有12个数据节点,不然在插入时会提示索引不存在的错误。
<function name="partbymonth"
class="io.mycat.route.function.PartitionByMonth">
<property name="dateFormat">yyyy-MM-dd</property>
<property name="sBeginDate">2019-01-01</property>
</function>
sBeginDate 这个值是开始日期,每一年从1月1日开始的话,就需要12个dataNode,例如该值是2018-01-01,那么插入2019-01-01,就需要配置第13个dataNode。
那么每年都需要提前创建好dataNode,然后重启mycat,这个运维需要注意。
按非整型关键字均分
sharing-by-murmur
这个分片规则是按照非整型关键字进行分片。适合于uuid ,md5 这种类型的分片字段。