loviezhang 2019-12-15
业务使用场景: 如果你的业务中有些数据类似于数据字典,比如配置文件的配置, 常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大, 而且大部分的业务场景都会用到,那么这种表适合于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 | +----+------+