分片(水平拆分)
4.全局表
1业务使用场景: 2如果你的业务中有些数据类似于数据字典,比如配置文件的配置, 3常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大, 4而且大部分的业务场景都会用到,那么这种表适合于Mycat全局表,无须对数据进行切分, 5要在所有的分片上保存一份数据即可,Mycat 在Join操作中,业务表与全局表进行Join聚合会优先选择相同分片内的全局表join, 6避免跨库Join,在进行数据插入操作时,mycat将把数据分发到全局表对应的所有分片执行,在进行数据读取时候将会随机获取一个节点读取数据。 7 8 9cd /data/mycat/conf 10cp schema.xml schema.xml.intfile 11 12vi schema.xml 13<?xml version="1.0"?> 14<!DOCTYPE mycat:schema SYSTEM "schema.dtd"> 15<mycat:schema xmlns:mycat="http://io.mycat/"> 16<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="sh1"> 17 <table name="t_area" dataNode="sh1,sh2" primaryKey="id" type="global" /> 18</schema> 19 <dataNode name="sh1" dataHost="oldguo1" database= "taobao" /> 20 <dataNode name="sh2" dataHost="oldguo2" database= "taobao" /> 21 <dataHost name="oldguo1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> 22 <heartbeat>select user()</heartbeat> 23 <writeHost host="db1" url="192.168.31.205:3307" user="root" password="123"> 24 <readHost host="db2" url="192.168.31.205:3309" user="root" password="123" /> 25 </writeHost> 26 <writeHost host="db3" url="192.168.31.206:3307" user="root" password="123"> 27 <readHost host="db4" url="192.168.31.206:3309" user="root" password="123" /> 28 </writeHost> 29 </dataHost> 30 <dataHost name="oldguo2" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> 31 <heartbeat>select user()</heartbeat> 32 <writeHost host="db1" url="192.168.31.205:3308" user="root" password="123"> 33 <readHost host="db2" url="192.168.31.205:3310" user="root" password="123" /> 34 </writeHost> 35 <writeHost host="db3" url="192.168.31.206:3308" user="root" password="123"> 36 <readHost host="db4" url="192.168.31.206:3310" user="root" password="123" /> 37 </writeHost> 38 </dataHost> 39</mycat:schema>
准备数据
1mysql -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);" 2mysql -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 4mycat restart 5mysql -uroot -p123456 -h127.0.0.1 -P8066 6 7use TESTDB 8insert into t_area(id,name) values(1,'a'); 9insert into t_area(id,name) values(2,'b'); 10insert into t_area(id,name) values(3,'c'); 11insert into t_area(id,name) values(4,'d');
检查
1mysql -S /data/3307/mysql.sock -e "use taobao;select * from t_area;" 2+----+------+ 3| id | name | 4+----+------+ 5| 1 | a | 6| 2 | b | 7| 3 | c | 8| 4 | d | 9+----+------+ 10 11mysql -S /data/3308/mysql.sock -e "use taobao;select * from t_area;" 12+----+------+ 13| id | name | 14+----+------+ 15| 1 | a | 16| 2 | b | 17| 3 | c | 18| 4 | d | 19+----+------+