水平分片

采用横向切割
把商品表分片,存储到三个数据节点上

数据节点
每一个数据节点,就是一个数据库
每一个数据库,就是一个数据节点

一个mysql实例上,可以有多个数据库
数据库版本 : mysql-5.6

节点1、3
ip:192.168.25.134
数据库名 : db1、db3

节点2
ip:192.168.25.166
数据库名 : db2

Mycat安装

可以单独安装一台服务器
也可以安装到某一个节点上
这里,安装到节点1上

配置schema.xml

Schema.xml作为MyCat中重要的配置文件之一
管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource

Schema标签
用于定义MyCat实例中的逻辑库

Table标签
定义了MyCat中的逻辑表

dataNode标签
定义了MyCat中的数据节点
也就是我们通常说所的数据分片

dataHost标签
在mycat逻辑库中也是作为最底层的标签存在
直接定义了具体的数据库实例、读写分离配置和心跳语句

注意

Linux下,mysql默认区分大小写
设置不区分大小写,在MySQL的配置文件中my.ini中添加
lower_case_table_names = 1

配置信息

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"><!-- auto sharding by id (long) --><table name="TB_ITEM" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /><table name="TB_USER" primaryKey="ID" type="global" dataNode="dn1,dn2" /></schema><dataNode name="dn1" dataHost="localhost1" database="db1" /><dataNode name="dn2" dataHost="localhost2" database="db2" /><dataNode name="dn3" dataHost="localhost1" database="db3" /><dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="hostM1" url="192.168.25.134:3306" user="root"password="root"><!-- can have multi read hosts --></writeHost></dataHost><dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="hostM1" url="192.168.25.166:3306" user="root"password="root"><!-- can have multi read hosts --></writeHost></dataHost>
</mycat:schema>

schema,一个数据库
table,一个数据表,存放到三个数据节点
DataNode,一个数据节点,对应一个数据库
dataHost,一个数据节点,对应一个dataHost

配置server.xml

保存mycat需要的系统配置信息
最常用的配置用户名、密码及权限

配置信息

<user name="test"><property name="password">test</property><property name="schemas">TESTDB</property><property name="readOnly">true</property>
</user>

配置rule.xml

rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义
可以灵活的对表使用不同的分片算法
或者对表使用相同的算法但具体的参数不同。

这个文件里面主要有tableRule和function这两个标签
在具体使用过程中,可以按照需求添加tableRule和function
这里,此配置文件可以不用修改,使用默认即可

创建表
配置完毕后,重新启动mycat
使用mysql客户端连接mycat,创建表

商品表

DROP TABLE IF EXISTS `tb_item`;
CREATE TABLE `tb_item` (`id` bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',`title` varchar(100) NOT NULL COMMENT '商品标题',`sell_point` varchar(500) DEFAULT NULL COMMENT '商品卖点',`price` bigint(20) NOT NULL COMMENT '商品价格,单位为:分',`num` int(10) NOT NULL COMMENT '库存数量',`barcode` varchar(30) DEFAULT NULL COMMENT '商品条形码',`image` varchar(500) DEFAULT NULL COMMENT '商品图片',`cid` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',`created` datetime NOT NULL COMMENT '创建时间',`updated` datetime NOT NULL COMMENT '更新时间',PRIMARY KEY (`id`),KEY `cid` (`cid`),KEY `status` (`status`),KEY `updated` (`updated`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';

插入数据

INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('1', 'new2 - 阿尔卡特 (OT-927) 炭黑 联通3G手机 双卡双待', '清仓!仅北京,武汉仓有货!', '29900000', '99999', '', 'http://image.taotao.com/jd/4ef8861cf6854de9889f3db9b24dc371.jpg', '560', '1', '2015-03-08 21:33:18', '2015-04-11 20:38:38');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('5000000', 'new8- 三星 W999 黑色 电信3G手机 双卡双待双通', '下单送12000毫安移动电源!双3.5英寸魔焕炫屏,以非凡视野纵观天下时局,尊崇翻盖设计,张弛中,尽显从容气度!', '1100', '99999', '', 'http://image.taotao.com/jd/d2ac340e728d4c6181e763e772a9944a.jpg', '560', '1', '2015-03-08 21:27:54', '2015-04-12 17:10:43');INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('5000001', '阿尔卡特 (OT-979) 冰川白 联通3G手机', '清仓!仅上海仓有货!', '30900', '99999', null, 'http://image.taotao.com/jd/a69d0d09a1a04164969c2d0369659b1a.jpg', '560', '1', '2015-03-08 21:33:18', '2015-03-08 21:33:18');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('10000000', '阿尔卡特 (OT-927) 单电版 炭黑 联通3G手机 双卡双待', '清仓!仅北京,武汉仓有货!', '24900', '99999', null, 'http://image.taotao.com/jd/9c1fcdf2bf20450788195c707da00a87.jpg', '560', '1', '2015-03-08 21:33:18', '2015-03-08 21:33:18');INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('10000001', '阿尔卡特 (OT-986+) 玫红 AK47 加强版 联通3G手机', '仅上海,广州,沈阳仓有货!预购从速!', '49900', '99999', null, 'http://image.taotao.com/jd/65e2007d41dc4e3cb308833a1a910f8d.jpg', '560', '1', '2015-03-08 21:32:31', '2015-03-08 21:32:31');
INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('15000000', '阿尔卡特 (OT-986+) 曜石黑 AK47 加强版 联通3G手机', '少量库存,抢完即止!<a  target=\"blank\"  href=\"http://sale.jd.com/act/bxYeI1346g.html?erpad_source=erpad\">“领券更优惠!”</a>', '49900', '99999', null, 'http://image.taotao.com/jd/b3251c85da8e4302b7389f3371dd0a68.jpg', '560', '1', '2015-03-08 21:31:36', '2015-03-08 21:31:36');INSERT INTO TB_ITEM(ID,TITLE,SELL_POINT,PRICE,NUM,BARCODE,IMAGE,CID,STATUS,CREATED,UPDATED) VALUES ('15000001', '三星 B9120 钛灰色 联通3G手机 双卡双待双通', '下单即送10400毫安移动电源!再赠手机魔法盒!', '439900', '99999', null, 'http://image.taotao.com/jd/c1775819c7e44b1c903f27514e70b998.jpg', '560', '1', '2015-03-08 21:29:27', '2015-03-08 21:29:27');

分片测试

配置的分片规则为“auto-sharding-long”
mycat会根据此规则自动分片

每个datanode中保存一定数量的数据
根据长整型id进行分片

测试结果
Datanode1:1~5000000
Datanode2:5000000~10000000
Datanode3:10000001~15000000

当15000000以上的id插入时报错
[Err] 1064 - can’t find any valid datanode :TB_ITEM -> ID -> 15000001

解决方法
需要添加节点,存储更多的数据

MyCat数据库分片相关推荐

  1. MyCAT数据库分片(一)

    1. MyCAT介绍 1.1. 什么是MyCAT? 简单的说,MyCAT就是: •一个彻底开源的,面向企业应用开发的"大数据库集群" •支持事务.ACID.可以替代Mysql的加强 ...

  2. MyCat 数据库分片极简体验

    文章目录 MyCat是什么 应用场景实例 实例环境与效果 实例步骤: 1. 下载MyCat并解压 2. 配置 3. 启动 4.测试 错误解决 MyCat是什么 MyCat是数据库分库分表的中间件. 应 ...

  3. MySQL 高可用:mysql+mycat实现数据库分片(分库分表)

    什么是MYCAT: 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一个 ...

  4. 深入理解数据库分片中间件MyCat实现原理

    作者:田超凡 原创博文,严禁复制转载,仿冒必究 1 海量数据的存储问题 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法 ...

  5. 定时任务-Quartz、Mycat简单入门、Linux下安装MySQL、Linux下安装MyCAT、Mycat的数据库分片、Mycat读写分离

    表现层:页面 后台管理系统.商城门户.搜索系统.订单系统.商品详情系统.购物车系统 中间件:dubbo 系统之间的通信,服务的统计,rpc协议远程过程调用 同步通信 服务层:实现具体的业务逻辑 商品服 ...

  6. Mycat 月分片方法 - pursuer.chen - 博客园

    Mycat 月分片方法 - pursuer.chen - 博客园 从数据库生成ER图的工具:ERAlchemy - OPEN 开发经验库

  7. Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件

    转载自 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件 Mycat是什么 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件! 一个彻底开源 ...

  8. Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战

    目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...

  9. Mycat数据库中间件(史上最详细)

    单机数据库瓶颈: 1.磁盘空间上限 2.服务器性能上限 3.单点故障 数据库性能瓶颈 : 1.单表性能瓶颈 2.单库性能瓶颈 3.读写性能瓶颈 解决方案1:读写分离 1.MySQL读写分离能提高系统性 ...

最新文章

  1. echarts中toolbox位置_基于QGIS中的LSMS(大规模均值漂移)分割算法
  2. 判断文件是否为可执行程序
  3. 嵌入式web服务器预研报告(转)
  4. 开源Java反编译工具
  5. gradle 指定springcloud 版本_如何优雅地使用Gradle
  6. 添加文字 高德地图_教您,如何在高德和腾讯定位自己的店铺位置
  7. 通过命令行工具使用阿里云资源编排服务
  8. PyCharm 配置 Git 教程
  9. Sentaurus入门(3):sde
  10. 微分算子法解微分方程
  11. Mac Quicktime 录屏带声音
  12. 从表征到行动---意向性的自然主义进路(续五)
  13. python已知两条直角边求斜边_Python实现已知三角形两直角边,求斜边--思路,伪代码,优化...
  14. Windows服务器忘记密码后找回方法
  15. 【C语言】如何去求最大公约数和最小公倍数?
  16. 高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制)
  17. Arduino入门教程
  18. jQuery添加元素的方法
  19. 一个屌丝脱屌的经历【转载】
  20. 【学习笔记】redis 深入浅出

热门文章

  1. eclipse创建spring boot项目加载不到application.properties配置文件
  2. php websocket
  3. android缓存之Lrucache 和LinkedHashMap
  4. C++ 使用消息派遣类解决处理消息判断
  5. (翻译)为你的MVC应用程序创建自定义视图引擎
  6. const的用法,特别是用在函数前面与后面的区别
  7. Linux workqueue工作原理
  8. LeetCode6-Z字形变换
  9. 跨链Cosmos(3)IBC协议
  10. 百度超级链XChain(1)系统架构