MyCat 学习笔记 第七篇.数据分片 之 按数据范围分片
1 应用场景
Mycat 其实自带了2个数据范围分片的方案,一个是纯数据范围的分片,比如 1至 10000 号的数据放到分片1 ,10001 至 20000号数据放到分片2里。
另一个是数据常量形式的分片,即 10000号进入分片1 ,20000号进入片分2 。
2 环境说明
参考前一篇文章 《MyCat 学习笔记》第六篇.数据分片 之 按月数据分片 http://www.cnblogs.com/kaye0110/p/5160826.html
3 参数配置
3.1 server.xml 配置
参考前一篇
3.2 schema.xml 配置
<!-- t_range_long 表是根据数据范围进行分片,分片组为 dn4\dn5\dn6 ,分布规则为 sharding-long -->
<schema name="RANGEDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="t_range_date" dataNode="dn4,dn5,dn6,dn7,dn8,dn9,dn10,dn11" rule="sharding-by-date" />
<table name="t_range_long" dataNode="dn4,dn5,dn6" rule="sharding-long" />
</schema>
3.3 rule.xml 配置
<!-- sharding-long 规则使用rang-long方案,在sharding_id上做分片 -->
<tableRule name="sharding-long">
<rule>
<columns>sharding_id</columns>
<algorithm>rang-long</algorithm>
</rule>
</tableRule>
<!-- 分片方案实现的类 以及默认数据集结点 -->
<function name="rang-long" class="org.opencloudb.route.function.AutoPartitionByLong">
<property name="mapFile">autopartition-long.txt</property>
<property name="defaultNode">0</property>
</function>
#autopartition-long.txt
#第0至500,0000条记录进入dn1,第500,0001至1000,0000记录进入dn2
# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2
4 数据验证
4.1 Mycat 建表
mysql> CREATE TABLE `t_range_long` (
-> `id` INT NOT NULL,
-> `context` VARCHAR(45) NULL,
-> `sharding_id` VARCHAR(40) NULL,
-> PRIMARY KEY (`id`));
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 4
Current database: RANGEDB
Query OK, 0 rows affected (0.03 sec)
4.2 数据插入与查询
mysql> truncate table t_range_long;
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t_range_long (id,context,sharding_id) values (1,'rec 5000000',5000000); --> dn4
Query OK, 1 row affected (0.00 sec)
mysql> insert into t_range_long (id,context,sharding_id) values (2,'rec 5000001',5000001); --> dn5
Query OK, 1 row affected (0.00 sec)
mysql> insert into t_range_long (id,context,sharding_id) values (3,'rec 10000000',10000000); --> dn5
Query OK, 1 row affected (0.00 sec)
mysql> insert into t_range_long (id,context,sharding_id) values (4,'rec 10000001',10000001); --> dn6
Query OK, 1 row affected (0.01 sec)
mysql> insert into t_range_long (id,context,sharding_id) values (5,'rec 15000000',15000000); --> dn6
Query OK, 1 row affected (0.00 sec)
mysql> insert into t_range_long (id,context,sharding_id) values (6,'rec 15000001',15000001); --> dn4
Query OK, 1 row affected (0.00 sec)
mysql> select * from t_range_long;
+----+--------------+-------------+
| id | context | sharding_id |
+----+--------------+-------------+
| 2 | rec 5000001 | 5000001 |
| 3 | rec 10000000 | 10000000 |
| 1 | rec 5000000 | 5000000 |
| 6 | rec 15000001 | 15000001 |
| 4 | rec 10000001 | 10000001 |
| 5 | rec 15000000 | 15000000 |
+----+--------------+-------------+
6 rows in set (0.00 sec)
4.3 物理库查询
分别对应用dn4\dn5\dn6
mysql> select * from range_db_4.t_range_long;
+----+--------------+-------------+
| id | context | sharding_id |
+----+--------------+-------------+
| 1 | rec 5000000 | 5000000 |
| 6 | rec 15000001 | 15000001 |
+----+--------------+-------------+
2 rows in set (0.00 sec)
mysql> select * from range_db_5.t_range_long;
+----+--------------+-------------+
| id | context | sharding_id |
+----+--------------+-------------+
| 2 | rec 5000001 | 5000001 |
| 3 | rec 10000000 | 10000000 |
+----+--------------+-------------+
2 rows in set (0.00 sec)
mysql> select * from range_db_6.t_range_long;
+----+--------------+-------------+
| id | context | sharding_id |
+----+--------------+-------------+
| 4 | rec 10000001 | 10000001 |
| 5 | rec 15000000 | 15000000 |
+----+--------------+-------------+
2 rows in set (0.00 sec)
5 优缺点分析
用起来还算方便,以后要做数据迁移也相对简单一些,适合做B2B2C系统商户专有数据或是应用租户模式(微商平台)之类。
MyCat 学习笔记 第七篇.数据分片 之 按数据范围分片的更多相关文章
- MyCat 学习笔记 第十篇.数据分片 之 ER分片
1 应用场景 这篇来说下mycat中自带的er关系分片,所谓er关系分片即可以理解为有关联关系表之间数据分片.类似于订单主表与订单详情表间的分片存储规则. 本文所说的er分片分为两种: a. 依据主键 ...
- MyCat 学习笔记 第八篇.数据分片 之 求摸运算分片
1 应用场景 Mycat 自带了多套数据分片的机制,其实根据数值取摸应该是最简单的一种. 优点:数据离散概率较为平均,可以有效的提高应用的数据吞吐. 缺点:比较明显,后期数据运维与迁移比较困难.好在M ...
- MyCat 学习笔记 第六篇.数据分片 之 按月数据分片
1 应用场景 Mycat 有很多数据分库规则,接下来几篇就相关觉得常用的规则进行试用与总结. 一般来说,按自然月份来进行数据分片的规则比较适用于商城订单查询,类似最近1周.2周.3个月内的数据.或是报 ...
- MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程
1 环境说明 VM 模拟3台MYSQL 5.6 服务器 VM1 192.168.31.187:3307 VM2 192.168.31.212:3307 VM3 192.168.31.150: 330 ...
- MyCat 学习笔记 第十一篇.数据分片 之 分片数据查询 ( select * from table_name limit 100000,100 )
1 环境说明 VM 模拟3台MYSQL 5.6 服务器 VM1 192.168.31.187:3307 VM2 192.168.31.212:3307 VM3 192.168.31.150: 330 ...
- Django学习笔记第七篇--实战练习三--关于更有层级的url请求、404错误以及其他响应函数
一.关于更有层级的URL: 可以实现每一个APP一个子URL目录,例如app1的所有操作都在http://www.localhost1.com:5443/app1/xxxx 在工程主文件夹下的工程同名 ...
- Vue.js学习笔记 第七篇 表单控件绑定
本篇主要说明表单控件的数据绑定,这次没有新的知识点 文本框 1.普通文本框 <div id="app-1"> <p><input v-model=&q ...
- MyCat 学习笔记 第九篇.数据分片 之 数值分布
1 应用场景 Mycat 自带了多套数据分片的机制,其实根据数值分片也是比较简单,其实这个和数据取摸是类似的实现. 优.缺点同上一篇 2 环境说明 参考 <MyCat 学习笔记>第六篇. ...
- PHP学习笔记之数组篇
摘要:其实PHP中的数组和JavaScript中的数组很相似,就是一系列键值对的集合.... 转载请注明来源:PHP学习笔记之数组篇 一.如何定义数组:在PHP中创建数组主要有两种方式,下面就让我 ...
随机推荐
- dp --- CSU 1547: Rectangle
Rectangle Problem's Link: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1547 Mean: 给你一些宽为1或2 的木 ...
- 微软开源资源 NET Foundation Projects
网络基础设施.在管理项目(管理工作)的网络基础.目前主要包括网络平台上编译通过.(“罗斯林”)以及项目的ASP.NET的家庭,都是开放的微软开放的技术来源,Inc.(MS开放技术).Xamarin贡献 ...
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列2-基于框架的开发过程
在上篇随笔<Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示>中介绍了我的整个CRM系统的概貌,本篇继续本系列的文章,介绍如何基于我的<winform ...
- 【WP8.1】富文本
之前写过一篇WP8下的富文本的文章,但是写的不是很好,整理了一下,分享一下WP8.1下的富文本处理 富文本处理主要是对表情和链接的处理,一般使用RichTextBlock进行呈现 问题说明: 由于Ri ...
- 【C#】线程之Task
Task开启线程 有两种启动方式: 1.构造创建线程,然后启动 var taskForAction = new Task(() => { //do something }); taskForAc ...
- 发布在IIS的网站,可以用本机IP登录访问,用localhost不可登录访问
之前在IIS发布一个测试的网址,但是用本机IP可以访问,用localhost不可访问
- 译 PrestaShop开发者指南 第三篇 设置本地安装环境
## 环境要求 - Unix, Linux 或 Windows - Web服务器:Apache 1.3 或更高的版本 - PHP:5.2或更高版本 - MySQL:5.0或更高版本 PrestaSho ...
- 解决My eclipse 工程发布时端口占用问题
如果运行后如图的错,需要进行如下操作来解决: a:打开cmd,输入netstat -ano 找到本地地址为8080的最后一项的数字,这个数字就是端口号. b:再输入taskkill /t /pid 端 ...
- 使scp不用输入密码
使scp不用输入密码 有些时候,我们在复制/移动文件 到另一台机器时会用到scp,因为它比较安全.但如果每次都要输入密码,就比较烦了,尤其是在script里.不过,ssh有另一种用密钥对来验证的方式. ...
- python学习笔记2(pycharm、数据类型)
Pycharm 的使用 IDE(Integrated Development Environ ment) :集成开发环境 Vim :经典的linux下的文本编辑器(菜鸟和大神喜欢使用) Emac ...