赞
踩
mycat就是一个数据库中间件,数据库的代理,它屏蔽了物理数据库,应用连接mycat,然后mycat再连接物理数据库
它支持水平拆分(分库分表,通过分库达到分表),支持多种分片规则,比如范围切片、自然月分片、hash取模分片等
它支持mysql、oracle、mongodb、sql server,并且支持数据库集群。
使用网上的两张图片表示mycat解决的问题
去github下载,Mycat-server-x.x.x-RELEASE-xxxxxxxxxx-win.tar.gz
解压后,修改mycat_home\conf\schema.xml中的url、user、password
修改mycat_home\conf\server.xml
进入mycat_home\bin,启动mycat
登录物理数据库,创建db1、db2、db3
mysql -u[username] -p -P3306
create database db1;
create database db2;
create database db3;
mysql -u[username] -p -P8066
查看表,默认显示schema.xml中配置的表,实际上此时物理数据库没有表,所以查询employee会出错
登录物理数据库。
mycat中,创建employee表,插入数据
create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
insert into employee(id,name,sharding_id) values(1,'leader us',10000);
insert into employee(id,name,sharding_id) values(2, 'me',10010);
insert into employee(id,name,sharding_id) values(3, 'mycat',10000);
insert into employee(id,name,sharding_id) values(4, 'mydog',10010);
mycat中,执行计划显示来自两个数据节点,与schema.xml中配置的一致
物理数据库中,mycat创建了employee表,查看数据,可以发现数据实现了分片
db1中的employee数据,id为1、3两条数据
db2中的employee数据,id为2、4两条数据
最初我是想着mycat可以实现同一个库,某个表的切片而研究的mycat(比如db1中某个employee表,拆分为employee1-99,employee100-199,employee299-299….)。经过上述研究,发现mycat是通过分库而达到的分表,所以是不支持我最初的需求的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。