mycat分表扩展之按日期(天)分片
1.修改schema.xml配置文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYstem "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="orders1" checksqlschema="true" sqlMaxLimit="100" datanode="dn1">
<table name="customer" datanode="dn2" ></table>
<table name="orders" datanode="dn1,dn2" rule="mod_rule" autoIncrement="true" fetchStoreNodeByJdbc="true">
<!--orders_detail与orders表根据order_id关联-->
<childTable name="orders_detail" primaryKey="id" joinKey="order_id" parentKey="id" />
</table>
<!--定义全局表-->
<table name="dict_order_type" datanode="dn1,dn2" type="global" ></table>
<!--分片枚举-->
<table name="orders_ware_info" datanode="dn1,dn2" rule="sharding_by_intfile" ></table>
<!--范围约定-->
<table name="payment_info" datanode="dn1,dn2" rule="auto_sharding_long" ></table>
<!--按日期(天)分片-->
<table name="login_info" datanode="dn1,dn2" rule="sharding_by_date" ></table>
</schema>
<datanode name="dn1" dataHost="host1" database="orders1" />
<datanode name="dn2" dataHost="host2" database="orders1" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="MysqL" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="jdbc:MysqL://192.168.2.130:3306" user="root"
password="kht123">
</writeHost>
</dataHost>
<dataHost name="host2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="MysqL" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="jdbc:MysqL://192.168.2.131:3306" user="root"
password="kht123">
</writeHost>
</dataHost>
</mycat:schema>
<tableRule name="sharding_by_date">
<rule>
<columns>login_date</columns>
<algorithm>shardingByDate</algorithm>
</rule>
</tableRule>
<!--
# columns:分片字段,algorithm:分片函数
#dateFormat :日期格式
#sBeginDate :开始日期
#sEndDate:结束日期,则代表数据达到了这个日期的分片后循环从开始分片插入
#sPartionDay :分区天数,即默认从开始日期算起,分隔 2 天一个分区
-->
<function name="shardingByDate" class="io.mycat.route.function.PartitionByDate">
<property name="dateFormat">yyyy-MM-dd</property>
<property name="sBeginDate">2019-01-01</property>
<property name="sEndDate">2019-01-04</property>
<property name="sPartionDay">2</property>
</function>
#用户登录信息表
CREATE TABLE login_info
(
`id` INT AUTO_INCREMENT comment '编号',
`user_id` INT comment '用户编号',
`login_date` date comment '登录日期',
PRIMARY KEY(id)
);
#插入数据
INSERT INTO login_info(id,user_id,login_date) VALUES (1,101,'2019-01-01');
INSERT INTO login_info(id,user_id,login_date) VALUES (2,102,'2019-01-02');
INSERT INTO login_info(id,user_id,login_date) VALUES (3,103,'2019-01-03');
INSERT INTO login_info(id,user_id,login_date) VALUES (4,104,'2019-01-04');
INSERT INTO login_info(id,user_id,login_date) VALUES (5,103,'2019-01-05');
INSERT INTO login_info(id,user_id,login_date) VALUES (6,104,'2019-01-06');
INSERT INTO login_info(id,user_id,login_date) VALUES (7,101,'2019-01-07');
INSERT INTO login_info(id,user_id,login_date) VALUES (8,102,'2019-01-08');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。