Mycat的安装其实只要解压下载的目录就可以了,非常简单。
安装完成后,目录如下:

目录

说明

bin

mycat命令,启动、重启、停止等

catlet

catlet为Mycat的一个扩展功能

conf

Mycat 配置信息,重点关注

lib

Mycat引用的jar包,Mycat是java开发的

logs

日志文件,包括Mycat启动的日志和运行的日志。

配置

Mycat的配置文件都在conf目录里面,这里介绍几个常用的文件:

文件

说明

server.xml

Mycat的配置文件,设置账号、参数等

schema.xml

Mycat对应的物理数据库和数据库表的配置

rule.xml

Mycat分片(分库分表)规则

拓扑图

mycat实现MySQL数据库分表_分表

环境准备工作

项目

Mycat

MySQL1

MySQL2

IP

11.112.0.123

11.112.0.10

11.112.0.51

Port

8066/9066

3066

3066

两套MySQL数据库为相互独立的。

两套MySQL数据库创建例表如下:

create database lunch;
CREATE TABLE item (
id INT NOT NULL AUTO_INCREMENT,
value INT NOT NULL default 0,
indate DATETIME NOT NULL default '1990-01-01 00:00:00',
PRIMARY KEY (id)
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;

修改相关配置文件:

schema.xml

 version="1.0"?>

<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="lunch" checkSQLschema="false" sqlMaxLimit="100">
<table name="item" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2" rule="mod-long" />
schema>


<dataNode name="dn1" dataHost="mysql1" database="lunch" />
<dataNode name="dn2" dataHost="mysql2" database="lunch" />


<dataHost name="mysql1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user();heartbeat>
<writeHost host="mysql1" url="11.112.0.10:3306" user="root" password="root">
writeHost>
dataHost>

<dataHost name="mysql2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user();heartbeat>
<writeHost host="mysql2" url="11.112.0.51:3306" user="root" password="root">
writeHost>
dataHost>
mycat:schema>

配置文件中使用mod-long方式进行分表,规则文件为rule.xml。本例中使用两套MySQL做分库,需要把rule.xml中mod-long配置进行修改,<property name="count">2</property>

<function name="mod-long" class="io.mycat.route.function.PartitionByMod">

<property name="count">2property>
function>

修改server.xml,schemas中配置的与schema.xml中配置的一样

<user name="root" defaultAccount="true">
<property name="password">123456property>
<property name="schemas">lunchproperty>
user>

启动mycat

mycat start

登录mycat

mysql -uroot -p123456 -h mycat1 -P 8066

use lunch;

执行插入数据操作

insert into item(id,value,indate) values(1,100,now());
insert into item(id,value,indate) values(2,100,now());
insert into item(id,value,indate) values(3,100,now());
insert into item(id,value,indate) values(4,100,now());
insert into item(id,value,indate) values(5,100,now());
insert into item(id,value,indate) values(6,100,now());
insert into item(id,value,indate) values(7,100,now());

查看数据

mycat实现MySQL数据库分表_分表_02

从上图可知数据已插入库中。

分别登录MySQL1和MySQL2查看数据情况

MySQL1

mycat实现MySQL数据库分表_分表_03

MySQL2

mycat实现MySQL数据库分表_分表_04

可以看到数据分别插入到不同的库中

参考:​​https://www.jianshu.com/p/2d1a81b2dafc​

​https://www.cnblogs.com/mracale/p/8989248.html​