美文网首页
Mycat分库--日期分片实践

Mycat分库--日期分片实践

作者: sknfie | 来源:发表于2020-08-22 15:41 被阅读0次

概述

本文进行日期分片实验。

配置

分片路由:

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
    <table name="t_testtime" primaryKey="id" dataNode="node1,node2" rule="sharding-by-date" ></table>
</schema>

<dataNode name="node1" dataHost="host1" database="db1" />
<dataNode name="node2" dataHost="host2" database="db2" />

<!-- 物理机的 url -->
<dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
    <heartbeat>select user()</heartbeat>
    <writeHost host="server1" url="192.168.201.33:3306" user="root" password="123456"/>
</dataHost>
<dataHost name="host2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
    <heartbeat>select user()</heartbeat>
    <writeHost host="server2" url="192.168.201.35:3306" user="root" password="123456"/>
</dataHost>
</mycat:schema>

分片规则

<tableRule name="sharding-by-date">
                 <rule>
                         <columns>CREATE_TIME</columns>
                         <algorithm>sharding-by-date</algorithm>
                </rule>
        </tableRule>
<function name="sharding-by-date" class="io.mycat.route.function.PartitionByDate">
                <property name="dateFormat">yyyy-MM-dd</property> <!--日期格式-->
                <property name="sBeginDate">2020-08-22</property> <!--开始日期-->
                <property name="sEndDate">2020-08-23</property>
                <property name="sPartionDay">1</property>  <!--每分片天数-->
        </function>

配置说明:

  • columns :标识将要分片的表字段
  • algorithm :分片函数
  • dateFormat :日期格式
  • sBeginDate :开始日期
  • sEndDate:结束日期
  • sPartionDay :分区天数,即默认从开始日期算起,分隔1天一个分区

测试

MySQL [TESTDB]> insert into t_testtime(id, create_time) values(1, '2020-8-22');
Query OK, 1 row affected (0.13 sec)
//错误测试例子
MySQL [TESTDB]> insert into t_testtime(id, create_time) values(2, '2020-7-22'); 
ERROR 1064 (HY000): Can't find a valid data node for specified node index :T_TESTTIME -> CREATE_TIME -> 2020-7-22 -> Index : -31
//后面的日期竟然可以
MySQL [TESTDB]> insert into t_testtime(id, create_time) values(2, '2020-12-22');
Query OK, 1 row affected (0.01 sec)


MySQL [TESTDB]> select * from t_testtime;
+----+-------------+
| id | create_time |
+----+-------------+
|  1 | 2020-8-22   |
|  2 | 2020-12-22  |
+----+-------------+
2 rows in set (0.06 sec)

MySQL [TESTDB]> explain select * from t_testtime;
+-----------+------------------------------------+
| DATA_NODE | SQL                                |
+-----------+------------------------------------+
| node1     | SELECT * FROM t_testtime LIMIT 100 |
| node2     | SELECT * FROM t_testtime LIMIT 100 |
+-----------+------------------------------------+
2 rows in set (0.01 sec)

MariaDB [db1]> select * from t_testtime;
+----+-------------+
| id | create_time |
+----+-------------+
|  1 | 2020-8-22   |
|  2 | 2020-12-22  |
+----+-------------+

MariaDB [db2]> select * from t_testtime;
Empty set (0.00 sec)

相关文章

  • Mycat分库--日期分片实践

    概述 本文进行日期分片实验。 配置 分片路由: 分片规则 配置说明: columns :标识将要分片的表字段 al...

  • Mycat分库--取模分片实践

    概述 本文对分片字段求摸运算进行实验。 配置 有 user 和 t_order 两张数据表,表 user 的数据全...

  • 49 mycat分片集群mysql分片分表策略

    1、数据库集群如何保证自动增长唯一性2、数据库分表分库策略3、MyCat分片集群策略4、MyCat分片策略原理 M...

  • Mycat分库--范围求模分片实践

    概述 先进行范围分片计算出分片组,组内再求模: 优点可避免扩容时的数据迁移,又可以一定程度上避免范围分片的热点问题...

  • mycat分库分片(bat面试)

    概述 Mycat是基于阿里Cobar演变而来的一款开源分布式数据库中间件,是一个实现了MySQL协议的Server...

  • MyCAT+MySQL搭建高可用企业级数据库集群 百度云百度网盘

    内容介绍 MyCAT入门 MYCAT核心配置详解 MYCAT进阶实战之垂直分库 MYCAT进阶实战之水平分库 My...

  • MYSQL分库分表

    大众点评订单系统分库分表实践 利用Mycat中间件实现RDS MySQL的分库分表及读写分离功能 MYSQL数...

  • 架构师进阶实战随堂笔记十

    场景十:分布式数据管理问题 分布式事务和分库分表方法介绍与实践经验分享 目录 分库分表 为什么分片 分库分表策略 ...

  • Mycat分库--全局表实践

    概述 MyCAT 定义了一种特殊的表,称为“全局表”,全局表具有以下特性:• 全局表的插入、更新操作会实时在所有节...

  • Mycat分库--ER Join实践

    概述 基于 E-R 关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上。 ER分片 ER分片父...

网友评论

      本文标题:Mycat分库--日期分片实践

      本文链接:https://www.haomeiwen.com/subject/uvuvjktx.html