MySQL-分布式架构-MyCAT( 六 )

(3)重启mycat
mycat restart (4)模拟数据测试
mysql -uroot -p123456 -h10.0.0.52 -P8066 use TESTDB insert into t5(id,name) values(1,'bj'); insert into t5(id,name) values(2,'sh'); insert into t5(id,name) values(3,'bj'); insert into t5(id,name) values(4,'sh'); insert into t5(id,name) values(5,'tj'); (5)分别登录后端节点查询数据
mysql -S /data/3307/mysql.sock -e "use taobao;select * from t5;"mysql -S /data/3308/mysql.sock -e "use taobao;select * from t5;"1.9.4 Mycat全局表
a b c d join t select t1.name ,t.x from t1 join t select t2.name ,t.x from t2 join t select t3.name ,t.x from t3 join t 使用场景: 如果你的业务中有些数据类似于数据字典,比如配置文件的配置,常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大,而且大部分的业务场景都会用到,那么这种表适合于Mycat全局表,无须对数据进行切分,要在所有的分片上保存一份数据即可,Mycat 在Join操作中,业务表与全局表进行Join聚合会优先选择相同分片内的全局表join,避免跨库Join,在进行数据插入操作时,mycat将把数据分发到全局表对应的所有分片执行,在进行数据读取时候将会随机获取一个节点读取数据 。(1)Mycat全局表参数配置
=====vim schema.xml <table name="t_area" primaryKey="id" type="global" dataNode="sh1,sh2" /> (2)后端数据准备
mysql -S /data/3307/mysql.sock -e "use taobao;create table t_area (id int not null primary key auto_increment,name varchar(20) not null);" mysql -S /data/3308/mysql.sock -e "use taobao;create table t_area (id int not null primary key auto_increment,name varchar(20) not null);" (3)重启mycat
mycat restart (4)模拟数据测试:
mysql -uroot -p123456 -h10.0.0.52 -P8066use TESTDBinsert into t_area(id,name) values(1,'a');insert into t_area(id,name) values(2,'b');insert into t_area(id,name) values(3,'c');insert into t_area(id,name) values(4,'d');(5)分别登录后端节点查询数据
mysql -S /data/3307/mysql.sock -e "use taobao;select * from t_area;" mysql -S /data/3308/mysql.sock -e "use taobao;select * from t_area;" 2.9.5 ER分片
有一类业务,例如商品(goods)跟商品明细(goods_detail),明细表会依赖于商品,也就是说会存在表的主 从关系,这类似业务的切分可以抽象出合适的切分规则,比如根据商品 ID 切分,总之部分业务总会可以抽象出父子关系的表 。这类表适用于 ER 分片表,子表的记录与所关联的父表记录存放在同一个数据分片上,避免数据 Join 跨库操作 。goods join goods_detail on goods.id=goods_detail.good_id (1)ER分片参数配置
=====vim schema.xml<table name="goods" dataNode="sh1,sh2" rule="mod-long"><childTable name="goods_detail" joinKey="goods_id" parentKey="id" /> </table>(2)后端数据表准备
mysql -S /data/3307/mysql.sock -e "use taobao;create table goods (id int not null primary key auto_increment,name varchar(20) not null);" mysql -S /data/3308/mysql.sock -e "use taobao;create table goods (id int not null primary key auto_increment,name varchar(20) not null);" mysql -S /data/3307/mysql.sock -e "use taobao;create table goods_detail (detail_id int not null primary key auto_increment,name varchar(20) not null,goods_id int not null);" mysql -S /data/3308/mysql.sock -e "use taobao;create table goods_detail (detail_id int not null primary key auto_increment,name varchar(20) not null,goods_id int not null);" (3)重启mycat
mycat restart(4)模拟数据测试:
mysql -uroot -p123456 -h10.0.0.51 -P8066 ===========goods use TESTDB insert into goods(id,name) values(1,'dn'); insert into goods(id,name) values(2,'sj'); insert into goods(id,name) values(3,'yf'); insert into goods(id,name) values(4,'bk'); ===========goods_detail use TESTDB insert into goods_detail(detail_id,name,goods_id) values(1,'电脑',1); insert into goods_detail(detail_id,name,goods_id) values(2,'500元',1); insert into goods_detail(detail_id,name,goods_id) values(3,'手机',2); insert into goods_detail(detail_id,name,goods_id) values(4,'红色',2); insert into goods_detail(detail_id,name,goods_id) values(5,'衣服',3); insert into goods_detail(detail_id,name,goods_id) values(6,'s码',3); insert into goods_detail(detail_id,name,goods_id) values(7,'书籍',4); insert into goods_detail(detail_id,name,goods_id) values(8,'linux方向',4); (5)分别登录后端节点查询数据
mysql -S /data/3307/mysql.sock -e "use taobao;select * from goods;select * from goods_detail;"mysql -S /data/3308/mysql.sock -e "use taobao;select * from goods;select * from goods_detail;"[root@db01 ~]# mysql -S /data/3307/mysql.sock -e "use taobao;select * from goods;select * from goods_detail;"+----+------+| id | name |+----+------+| 2 | sj || 4 | bk |+----+------++-----------+-------------+----------+| detail_id | name | goods_id |+-----------+-------------+----------+| 3 | 手机 | 2 || 4 | 红色 | 2 || 7 | 书籍 | 4 || 8 | Linux方向 | 4 |+-----------+-------------+----------+[root@db01 ~]# mysql -S /data/3308/mysql.sock -e "use taobao;select * from goods;select * from goods_detail;"+----+------+| id | name |+----+------+| 1 | dn || 3 | yf |+----+------++-----------+--------+----------+| detail_id | name | goods_id |+-----------+--------+----------+| 1 | 电脑 | 1 || 2 | 500元 | 1 || 5 | 衣服 | 3 || 6 | s码 | 3 |+-----------+--------+----------+[root@db01 ~]#


推荐阅读