在上一篇MyCat读写分离环境搭建我搭建了一个读写分离环境,其实是基于mysql的主从复制功能来搭建的,但是我们知道,mycat的功能可不仅仅如此,最典型的功能大概就是水平分片了额,其实官方文档以及写的很清楚了,这里就搭建个例子,环境什么的可以参考我上一篇博文。
主要是三个配置文件:server.xml.schema.xml rule.xml。我这里的配置如下。
server.xml
<user name="root">
<property name="password">123456</property>
<property name="schemas">test</property>
</user>
schema.xml
<schema name="test" checkSQLschema="false" sqlMaxLimit="100">
<table name="user_info" dataNode="db_node1,db_node2" rule="role1"/>
</schema>
<dataNode name="db_node1" dataHost="db_host1" database="test" />
<dataNode name="db_node2" dataHost="db_host2" database="test" />
<dataHost name="db_host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.157.6:3306" user="root" password="123456"> </writeHost>
</dataHost>
<dataHost name="db_host2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="192.168.157.7:3306" user="root" password="123456"></writeHost>
</dataHost>
rule.xml
<tableRule name="role1">
<rule>
<columns>city</columns>
<algorithm>hash-int</algorithm>
</rule>
</tableRule>
<function name="hash-int" class="io.mycat.route.function.PartitionByFileMap">
<property name="mapFile">partition-hash-int.txt</property>
<property name="type">1</property>
<property name="defaultNode">1</property>
</function>
partition-hash-int.txt
BEIJIN=0
GUANGZHOU=1
上面就基本上OK了,其实很简单,基本上都有默认配置,我们只需要拿出来改改即可,不懂的配置项参考官方文档即可。
测试
1、先在两个库建好表
create table user_info(id int,name varchar(20),city varchar(20));
2、插入数据
insert into user_info(id,name,city) values(1,'A','GUANGZHOU');
insert into user_info(id,name,city) values(2,'B','GUANGZHOU');
insert into user_info(id,name,city) values(3,'C','BEIJIN');
insert into user_info(id,name,city) values(4,'D','SHENGZHENG');
按照分片规则,GUANGZHOU 将会在1也就是192.168.157.7库,BEIJIN将会在0库也就是192.168.157.6,其他的默认在1库,经检查数据发现果真如此。
3、MyCat的异常情形
当你的配置文件有问题后,不管你改正还是怎么滴,每次重启还是报一样的错误,真的很无奈,也不知道在哪里缓存了。只能够彻底修改为另一个字符才行,真是服了。
老子改了无数次都不行,后面直接改为3.不用hostM2了才可以,真的很坑爹,还有有时候报什么端口被占用的也是,吗,明明已经把进程全部都杀掉了也不行,服了,
总结
因为实在太简单的入门了,所以这里基本上没有什么解释标注,也没有举其他的分片规则类似取模,按日期什么的,以后有遇到再说吧。