mycat的分片规则有十几种方式,比如在上面几篇文章中使用的取模mod-long分片法,
1.取模mod-long分片法
即根据id进行十进制求模预算。分片列的值 % 分片数量 = 对应分片的数据库。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
<tableRule name="rule1">
<rule>
<columns>id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">2</property>
</function>
</mycat:rule>
分片规名称为:mod-long
分片列:id
分片数量:2
2.按日期(天)分片sharding-by-date
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
<tableRule name="rule1">
<rule>
<columns>create_date</columns>
<algorithm>sharding-by-date</algorithm>
</rule>
</tableRule>
<function name="sharding-by-date" class="io.mycat.route.function.PartitionByDate">
<!-- how many data nodes -->
<!--<property name="count">2</property> -->
<property name="dateFormat">yyyy-MM-dd</property>
<property name="sBeginDate">2019-05-01</property>
<property name="sPartionDay">10</property>
</function>
</mycat:rule>
从2019-05-01开始,每10天一个分片
db2
db1