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 |
MySQL1 |
MySQL2 |
IP
扫描二维码关注公众号,回复:
3707924 查看本文章
|
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
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <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"> <!-- how many data nodes --> <property name="count">2</property> </function>
修改server.xml,schemas中配置的与schema.xml中配置的一样
<user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">lunch</property> </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());
查看数据
从上图可知数据已插入库中。
分别登录MySQL1和MySQL2查看数据情况
MySQL1
MySQL2
可以看到数据分别插入到不同的库中
参考:https://www.jianshu.com/p/2d1a81b2dafc
https://www.cnblogs.com/mracale/p/8989248.html