Mycat 月分片方法

简介:
2016-01-28 17:27 by pursuer.chen, 2024 阅读, 0 评论, 收藏, 编辑

概述  

本篇文章主要介绍Mycat以月进行分片的方法,包括配置方法、注意事项等。

mycat版本:1.4

数据节点:dn1,dn2,dn3

架构:主从

配置  

 创建测试表

CREATE TABLE `tdate` (
   `id` int(11) NOT NULL,
   `createdate` datetime DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

在三个节点上面分别执行创建表语句。

分片配置

<table>参数 

在table参数配置中使用了rule="sharding-by-month"分片函数,同时配置了13个数据节点分别是dn1-dn13,当然数据节点的数目没有限制,在生产环境避免重复重启mycat这个节点的范围大小最好配置超过1年。

<datanode>参数

因为我这里只有三个节点,所以采取三个节点循环作为数据的保存节点,默认1,4,7,10,第二年1月,这些月份的数据保存在节点1。在生产婚假一般会配置12个节点,这样每年的1月可以存在节点1,

 不支持这样写,datanode中的节点定义一定要和table一样
 <dataNode name="dn1,dn4,dn7,dn10,dn13" dataHost="localhost1" database="db1" />

 <datahost>参数

       datahost配置的是主从读写分离,如果第一个writehost宕机了自动切换到第二个writehost

分片函数 

vim rule.xml
复制代码
<tableRule name="sharding-by-month">
                <rule>
                        <columns>createdate</columns>
                        <algorithm>sharding-by-month</algorithm>
                </rule>
</tableRule>

<function name="sharding-by-month"
                class="org.opencloudb.route.function.PartitionByMonth">
                <property name="dateFormat">yyyy-MM-dd HH:mm:ss</property>
                <property name="sBeginDate">2015-01-01 00:00:00</property>

</function>
复制代码

权威指南默认的自然月分片使用的dateFormat格式是yyyy-MM-dd,在这里我是故意这样测试的。

注意:如果dateFormat格式是yyyy-MM-dd那么sBeginDate格式就必须是2015-01-01,否则就是上面我配置的这种对应关系。当我使用dateFormat格式是yyyy-MM-dd的时候我在插入语句的createdate字段使用“2015-01-01 00:00:00”格式的时间也可以识别,反之,我配置dateFormat格式是yyyy-MM-dd HH:mm:ss,当我的插入语句的createdate字段使用“2015-01-01”格式的时间会报错,建议函数这里配置的是什么格式在执行插入语句的时候时间也使用什么格式。

在dateFormat格式是yyyy-MM-dd时分片字段的数据类型可以是date、datetime,在dateFormat格式是yyyy-MM-dd HH:mm:ss是分片字段的数据类型必须是datetime。

sBeginDate是开始时间

测试数据

在mycat中执行插入语句。

insert into tdate(id,createdate) values(1,'2015-01-01 00:00:00');
insert into tdate(id,createdate) values(2,'2015-02-01 00:00:00');
insert into tdate(id,createdate) values(3,'2015-03-01 00:00:00');
insert into tdate(id,createdate) values(4,'2015-10-01 00:00:00');
insert into tdate(id,createdate) values(5,'2016-01-01 00:00:00');

到master中查看数据:

select * from db1.tdate; 
select * from db2.tdate; 
select * from db3.tdate; 

插入的结果也正常的分布到了各个分片中,测试结果正确。

注意事项

1.在进行insert插入时分片字段必须明确在table后面列出,其它的默认字段可以不列出在1.4中不受影响。

2.values中不能使用函数,例如:now()

总结

 mycat对月进行分片总体概念比较清晰,但是因为mycat本身对于容错的处理比较弱,所以在sql语句方面使用尽量简单的标准语法。

 

 

 





本文转自pursuer.chen(陈敏华)博客园博客,原文链接:http://www.cnblogs.com/chenmh/p/5165636.html,如需转载请自行联系原作者

目录
相关文章
|
6天前
|
数据采集 人工智能 安全
|
15天前
|
云安全 监控 安全
|
2天前
|
存储 SQL 大数据
删库跑路?别慌!Time Travel 带你穿回昨天的数据世界
删库跑路?别慌!Time Travel 带你穿回昨天的数据世界
245 156
|
9天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
651 5
|
12天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
792 152
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1903 9
|
3天前
|
机器学习/深度学习 人工智能 监控
别把模型当宠物养:从 CI/CD 到 MLOps 的工程化“成人礼”
别把模型当宠物养:从 CI/CD 到 MLOps 的工程化“成人礼”
224 163