个人随笔
目录
MyCat水平分片环境搭建
2020-07-05 18:12:38

在上一篇MyCat读写分离环境搭建我搭建了一个读写分离环境,其实是基于mysql的主从复制功能来搭建的,但是我们知道,mycat的功能可不仅仅如此,最典型的功能大概就是水平分片了额,其实官方文档以及写的很清楚了,这里就搭建个例子,环境什么的可以参考我上一篇博文。

主要是三个配置文件:server.xml.schema.xml rule.xml。我这里的配置如下。

server.xml

  1. <user name="root">
  2. <property name="password">123456</property>
  3. <property name="schemas">test</property>
  4. </user>

schema.xml

  1. <schema name="test" checkSQLschema="false" sqlMaxLimit="100">
  2. <table name="user_info" dataNode="db_node1,db_node2" rule="role1"/>
  3. </schema>
  4. <dataNode name="db_node1" dataHost="db_host1" database="test" />
  5. <dataNode name="db_node2" dataHost="db_host2" database="test" />
  6. <dataHost name="db_host1" maxCon="1000" minCon="10" balance="0"
  7. writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  8. <heartbeat>select user()</heartbeat>
  9. <writeHost host="hostM1" url="192.168.157.6:3306" user="root" password="123456"> </writeHost>
  10. </dataHost>
  11. <dataHost name="db_host2" maxCon="1000" minCon="10" balance="0"
  12. writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  13. <heartbeat>select user()</heartbeat>
  14. <writeHost host="hostM2" url="192.168.157.7:3306" user="root" password="123456"></writeHost>
  15. </dataHost>

rule.xml

  1. <tableRule name="role1">
  2. <rule>
  3. <columns>city</columns>
  4. <algorithm>hash-int</algorithm>
  5. </rule>
  6. </tableRule>
  7. <function name="hash-int" class="io.mycat.route.function.PartitionByFileMap">
  8. <property name="mapFile">partition-hash-int.txt</property>
  9. <property name="type">1</property>
  10. <property name="defaultNode">1</property>
  11. </function>

partition-hash-int.txt

  1. BEIJIN=0
  2. GUANGZHOU=1

上面就基本上OK了,其实很简单,基本上都有默认配置,我们只需要拿出来改改即可,不懂的配置项参考官方文档即可。

测试

1、先在两个库建好表

  1. create table user_info(id int,name varchar(20),city varchar(20));

2、插入数据

  1. insert into user_info(id,name,city) values(1,'A','GUANGZHOU');
  2. insert into user_info(id,name,city) values(2,'B','GUANGZHOU');
  3. insert into user_info(id,name,city) values(3,'C','BEIJIN');
  4. 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了才可以,真的很坑爹,还有有时候报什么端口被占用的也是,吗,明明已经把进程全部都杀掉了也不行,服了,

总结

因为实在太简单的入门了,所以这里基本上没有什么解释标注,也没有举其他的分片规则类似取模,按日期什么的,以后有遇到再说吧。

 208

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2