Mycat 月分片方法
概述
本篇文章主要介绍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 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |
Mycat 月分片方法的更多相关文章
- JAVAEE——宜立方商城13:Mycat数据库分片、主从复制、读写分离、100%Linux中成功安装Mysql的方法
1 海量数据的存储问题 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL ...
- Mysql系列六:(Mycat分片路由原理、Mycat常用分片规则及对应源码介绍)
一.Mycat分片路由原理 我们先来看下面的一个SQL在Mycat里面是如何执行的: , ); 有3个分片dn1,dn2,dn3, id=5000001这条数据在dn2上,id=10000001这条数 ...
- MyCat 枚举分片设计思考,查询命中条件
Mycat多租户实现的两种方式 MyCat,各种分片规则,仅保证插入的时候分片.表关联,join,查询怎么命中分片条件,还是需要设计. 今天稍微测了一下. ER 分片,此方式,插入的时候能分片,但是查 ...
- JAVAEE——宜立方商城13:订单系统实现、订单生成、Mycat数据库分片
1. 学习计划 1.订单系统实现 2.订单生成 3.Mycat数据库分片 2. 订单系统 2.1. 功能分析 1.在购物车页面点击“去结算”按钮,跳转到订单确认页面 a) 必须要求用户登录 b) 使用 ...
- Mycat 分片规则详解--自然月分片
实现方式:按照月份列分片,每个自然月一个分片 优点:使数据按照每月来进行分时存储 缺点:由于数据是连续的,所以该方案不能有效的利用资源 配置示例: <tableRule name="s ...
- MyCat的分片规则
1. 枚举法: 通过在配置文件中配置可能的枚举id,自己配置分片,使用规则: <tableRule name="sharding-by-intfile"> <ru ...
- mycat 离散分片 -> 程序指定分区的分片
1.程序指定分区的分片 此规则是在运行阶段有应用自主决定路由到那个分片. 此方法为直接依据字符子串(必须是数字)计算分区号(由应用传递參数.显式指定分区号). 2,加入配置文件 在function.x ...
- MyCAT ER分片的验证
在这里,构造了两张表,熟悉Oracle的童鞋都知道,dept(部门表)和emp(员工表),其中dept中的deptno是emp表中dept_no的外键. 两表的建表语句如下: create table ...
- MyCAT常用分片规则之分片枚举
MyCAT支持多种分片规则,下面测试的这种是分片枚举.适用场景,列值的个数是固定的,譬如省份,月份等. 在这里,需定义三个值,规则均是在rule.xml中定义. 1. tableRule 2. fun ...
随机推荐
- NetMQ(二): 请求响应模式 Request-Reply
ZeroMQ系列 之NetMQ 一:zeromq简介 二:NetMQ 请求响应模式 Request-Reply 三:NetMQ 发布订阅模式 Publisher-Subscriber 四:NetMQ ...
- sql语句,怎么取查询结果的位置
SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracle: S ...
- ASP.NET 一句代码实现批量数据绑定
摘要:对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定.如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定,作者开发了的插 ...
- dedecms 采集规则过滤与替换
过滤与替换常用操作:点击"常用规则",选择要过滤的代码段,再编辑成我们需要的.如果会文章简单采集了,接下来就需要过滤掉采集内容中的广告和链接及其它代码.一般的写法是{dede:tr ...
- leanote个人版安装
https://github.com/leanote/leanote/wiki/Leanote-%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%89%88%E8%AF%A6%E7%BB% ...
- Mac无法写入移动硬盘
1.使用mac 磁盘工具,格式化移动硬盘 频繁穿插于mac于pc之间者,大批量拷贝大型文件者,请用exfat 首先,排除Fat32,虽然这是兼容性最好的文件格式,但一个不支持4g以上文件的格式(现在随 ...
- 【JBOSS】控制台数据库连接信息
数据库连接 信息 进入 在这个页面中(IP和端口已自己的为主):ConnectionCount 这个项目代表在服务开启后,总共使用的连接数!ConnectionCreatedCount ...
- 基础2.通过Ajax获得servlet数据(最基础)
案列一:从服务器的得到输出的数据 Jsp界面 <script type="text/javascript" src="test.js"></s ...
- fatal error
1. fatal error C1083: 无法打开源文件 编译报此错误: 1>c1xx : fatal error C1083: 无法打开源文件:“Projects\XXXCCCC\VB ...
- 解决弹出的窗口window.open会被浏览器阻止的问题
问题现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,有时候会一直连接,有时候会偶尔拦截, 尝试了很多方法,走了很多弯路,总结一下结果分享大家 原因分析&深入研究 1 ...