分片(水平拆分)
4.全局表
业务使用场景:
如果你的业务中有些数据类似于数据字典,比如配置文件的配置,
常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大,
而且大部分的业务场景都会用到,那么这种表适合于Mycat全局表,无须对数据进行切分,
要在所有的分片上保存一份数据即可,Mycat 在Join操作中,业务表与全局表进行Join聚合会优先选择相同分片内的全局表join,
避免跨库Join,在进行数据插入操作时,mycat将把数据分发到全局表对应的所有分片执行,在进行数据读取时候将会随机获取一个节点读取数据。
cd /data/mycat/conf
cp schema.xml schema.xml.intfile
vi schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYstem "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checksqlschema="false" sqlMaxLimit="100" datanode="sh1">
<table name="t_area" datanode="sh1,sh2" primaryKey="id" type="global" />
</schema>
<datanode name="sh1" dataHost="oldguo1" database= "taobao" />
<datanode name="sh2" dataHost="oldguo2" database= "taobao" />
<dataHost name="oldguo1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="MysqL" dbDriver="native" switchType="1">
<heartbeat>select user()</heartbeat>
<writeHost host="db1" url="192.168.31.205:3307" user="root" password="123">
<readHost host="db2" url="192.168.31.205:3309" user="root" password="123" />
</writeHost>
<writeHost host="db3" url="192.168.31.206:3307" user="root" password="123">
<readHost host="db4" url="192.168.31.206:3309" user="root" password="123" />
</writeHost>
</dataHost>
<dataHost name="oldguo2" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="MysqL" dbDriver="native" switchType="1">
<heartbeat>select user()</heartbeat>
<writeHost host="db1" url="192.168.31.205:3308" user="root" password="123">
<readHost host="db2" url="192.168.31.205:3310" user="root" password="123" />
</writeHost>
<writeHost host="db3" url="192.168.31.206:3308" user="root" password="123">
<readHost host="db4" url="192.168.31.206:3310" user="root" password="123" />
</writeHost>
</dataHost>
</mycat:schema>
准备数据
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);"
mycat restart
MysqL -uroot -p123456 -h127.0.0.1 -P8066
use TESTDB
insert 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');
检查
MysqL -S /data/3307/MysqL.sock -e "use taobao;select * from t_area;"
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
+----+------+
MysqL -S /data/3308/MysqL.sock -e "use taobao;select * from t_area;"
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
+----+------+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。