MyCat数据库分片
水平分片
采用横向切割
把商品表分片,存储到三个数据节点上
数据节点
每一个数据节点,就是一个数据库
每一个数据库,就是一个数据节点
一个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数据库分片相关推荐
- MyCAT数据库分片(一)
1. MyCAT介绍 1.1. 什么是MyCAT? 简单的说,MyCAT就是: •一个彻底开源的,面向企业应用开发的"大数据库集群" •支持事务.ACID.可以替代Mysql的加强 ...
- MyCat 数据库分片极简体验
文章目录 MyCat是什么 应用场景实例 实例环境与效果 实例步骤: 1. 下载MyCat并解压 2. 配置 3. 启动 4.测试 错误解决 MyCat是什么 MyCat是数据库分库分表的中间件. 应 ...
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
什么是MYCAT: 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一个 ...
- 深入理解数据库分片中间件MyCat实现原理
作者:田超凡 原创博文,严禁复制转载,仿冒必究 1 海量数据的存储问题 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法 ...
- 定时任务-Quartz、Mycat简单入门、Linux下安装MySQL、Linux下安装MyCAT、Mycat的数据库分片、Mycat读写分离
表现层:页面 后台管理系统.商城门户.搜索系统.订单系统.商品详情系统.购物车系统 中间件:dubbo 系统之间的通信,服务的统计,rpc协议远程过程调用 同步通信 服务层:实现具体的业务逻辑 商品服 ...
- Mycat 月分片方法 - pursuer.chen - 博客园
Mycat 月分片方法 - pursuer.chen - 博客园 从数据库生成ER图的工具:ERAlchemy - OPEN 开发经验库
- Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件
转载自 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件 Mycat是什么 Mycat - 数据库分库分表中间件,国内最活跃的.性能最好的开源数据库中间件! 一个彻底开源 ...
- Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战
目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...
- Mycat数据库中间件(史上最详细)
单机数据库瓶颈: 1.磁盘空间上限 2.服务器性能上限 3.单点故障 数据库性能瓶颈 : 1.单表性能瓶颈 2.单库性能瓶颈 3.读写性能瓶颈 解决方案1:读写分离 1.MySQL读写分离能提高系统性 ...
最新文章
- echarts中toolbox位置_基于QGIS中的LSMS(大规模均值漂移)分割算法
- 判断文件是否为可执行程序
- 嵌入式web服务器预研报告(转)
- 开源Java反编译工具
- gradle 指定springcloud 版本_如何优雅地使用Gradle
- 添加文字 高德地图_教您,如何在高德和腾讯定位自己的店铺位置
- 通过命令行工具使用阿里云资源编排服务
- PyCharm 配置 Git 教程
- Sentaurus入门(3):sde
- 微分算子法解微分方程
- Mac Quicktime 录屏带声音
- 从表征到行动---意向性的自然主义进路(续五)
- python已知两条直角边求斜边_Python实现已知三角形两直角边,求斜边--思路,伪代码,优化...
- Windows服务器忘记密码后找回方法
- 【C语言】如何去求最大公约数和最小公倍数?
- 高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制)
- Arduino入门教程
- jQuery添加元素的方法
- 一个屌丝脱屌的经历【转载】
- 【学习笔记】redis 深入浅出