MyCat 教程【分库分表】,java 教程 pdf 百度网盘
2.1 创建 3 个数据库
在master
中分别创建 3 个数据库demo1
,demo2
,demo3
,因为主从的关系会同步到从库中。
create database demo1 default character set utf8;
create database demo2 default character set utf8;
create database demo3 default character set utf8;
2.2 schema.xml 配置
修改 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>
<writeHost host="hostM1" url="192.168.88.180:3306" user="root"
password="123456">
<readHost host="hostS2" url="192.168.88.181:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
注意
:
因为有三个库,所以添加了三个
dataNode
使用的分配规则是
crc32slot
主从和读写分离设置没有动,所以
writeHost
和readHost
的配置没变
2.3 修改 rule.xml 文件
因为使用的是crc32slot
算法,且有 3 个数据库,所以需要修改 rule.xml 中的配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191016163425142.p
ng?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9kcGItYm9ib2thb3lhLXNtLmJsb2cuY3Nkbi5uZXQ=,size_16,color_FFFFFF,t_70)
同时我们需要删除掉ruledata
目录中的规则文件,不然修改的3
不会起作用
重启 mycat 服务
查看分配规则
2.3 在 mycat 中创建 t_user 表
先删除原来创建的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,'波波烤鸭',18)
注意
:插入语句的语法要完整,不要偷懒省略字段,尤其是id
自增长!!!
评论