一、按天分片

  指定一个时间周期,将数据写入一个数据节点中,例如:第1-10天的数据,写入到第一个数据节点中,第2-20天的数据写入到第二个节点中,第3-30天的数据节点写入到第三个数据节点中。    

  MySQL运维12-Mycat分库分表之按天分片-LMLPHP

  说明1:按天分片要配置一个起始日期,一个结束日期,一个分片间隔时间三个参数

  说明2:按天分片允许当前时间超出配置的开始时间和结束时间,超出时间范围仍然会按照分片间隔时间,继续在多个数据节点之间切换的

  说明3:该案例中分片的起始时间为2023-12-01,结束时间为2023-12-30,一共30天的时间。但是如果当前日期超过了这个时间段,该规则仍然可以用,继续按照分片间隔时间10天,继续分片。

  说明4:该案例中分片间隔时间为10,即10天。所以这里需要至少三个数据节点。因为分片时间范围是30天除以10天的间隔等于3,而如果只配置了两个分片服务器则会报错,因为第1-10天的数据写在了第一个分片服务器上,第10-20天的数据写入到了第二个分片数据库中,从第21天-30的数据,就会找不到分片服务器而报错。

  MySQL运维12-Mycat分库分表之按天分片-LMLPHP

二、准备工作

  逻辑库:hl_logs,先在各个数据节点上创建好数据库。

  MySQL运维12-Mycat分库分表之按天分片-LMLPHP

三、配置rule.xml

<!--    rule.xml示例中没有,需要自己手动实现    -->
<tableRule name="sharding-by-date">
    <rule>
        <columns>create_time</columns>
        <algorithm>sharding-by-date</algorithm>
    </rule>
</tableRule>
12-20 18:12