本文咱们来介绍下MyCat的分库分表操做mysql
在rule.xml
中定义了各类myCat支持的分片规则。程序员
注意
:算法
在master
中分别建立3个数据库demo1
,demo2
,demo3
,由于主从的关系会同步到从库中。sql
create database demo1 default character set utf8; create database demo2 default character set utf8; create database demo3 default character set utf8; 复制代码
修改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"> <table name="t_user" dataNode="dn1,dn2,dn3" rule="crc32slot" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="demo1" /> <dataNode name="dn2" dataHost="localhost1" database="demo2" /> <dataNode name="dn3" dataHost="localhost1" database="demo3" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="192.168.88.180:3306" user="root" password="123456"> <!-- can have multi read hosts --> <readHost host="hostS2" url="192.168.88.181:3306" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema> 复制代码
注意
:后端
dataNode
crc32slot
writeHost
和readHost
的配置没变 由于使用的是crc32slot
算法,且有3个数据库,因此须要修改rule.xml中的配置微信
同时咱们须要删除掉ruledata
目录中的规则文件,否则修改的3
不会起做用前后端分离
重启mycat服务微服务
查看分配规则测试
先删除原来建立的t_user
表,而后经过mycat建立t_user
表示,经过mycat建立会多出来一个_slot
字段。
CREATE TABLE t_user ( `id` INT, `name` VARCHAR (30), `age` INT, PRIMARY KEY (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8; 复制代码
在mycat客户端插入数据,而后去对应的物理库中查询具体的状况
insert into t_user(id,name,age)values(1,'HG-93',14) 复制代码
注意
:插入语句的语法要完整,不要偷懒省略字段,尤为是id
自增加!!!
数据按照咱们设置的规则分别存储到了各自数据的表结构中了。
而后咱们来看下查询操做,经过mycat看可否将全部的数据都查询出来,