vlambda博客
学习文章列表

MyCat5分钟简单入门

MyCat5简单入门

之前的一篇博客, 讲了mycat的基本概念, 这篇博客就让我们简单的使用一些mycat吧.

还是先看一下老夫本地测试的架构图:

mycat安装

去官网下载最新版本的 mycat, 根据你的系统下载对应的版本.然后上传到128服务器.

MyCat5分钟简单入门

我上传到的是/home/tools/mycat目录, 进入目录, 解压mycat:

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

解压完成后, 会出现一个mycat的目录, 进入这个目录配置mycat

MyCat5分钟简单入门

配置mycat

1. 配置server.xml

进入mycat的conf目录, 修改server.xml这个配置文件,修改如下:

<user name="root"> <property name="password">123456</property> <property name="schemas">user</property></user>

这里面配置的是mycat的登录用户, 密码, 和数据库.我使用的是名字为user的数据库, 那么后面连接上mycat后, 我们就需要新建一个名字为user的数据库

注意: server.xml里面默认又2个用户, 一个是root, 一个是user, 我们可以2个都配置,也可以注释一个.如果2个用户都使用, 就要注意修改schemas为一致

2. 配置schema.xml

同样在conf目录下面, 修改schema.xml. 这个文件很重要, 下面咱们一步一步的配置.

2.1 第一步 配置dataHost

dataHost就是配置我们MySQL数据数据库连接.配置如下:

 <dataHost name="db130" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="M1" url="172.16.224.130:3306" user="root" password="123456"> <!-- can have multi read hosts --> <!--<readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" /> --> </writeHost> <!-- <writeHost host="hostS1" url="localhost:3316" user="root" password="123456" /> --> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost>

修改:

dataHost节点修改: name配置为: db130 # 表示这个数据节点连接的是我们130服务器的mysql

readHost节点是读库配置, 这里我们暂时不配置读库.

因为我们有2条mysql服务器,所以这里需要配置2个dataHost, 这个是另一个配置, 跟上面的基本一样

<dataHost name="db131" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="M1" url="172.16.224.131:3306" user="root" password="123456"> <!-- can have multi read hosts --> <!--<readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" /> --> </writeHost> <!-- <writeHost host="hostS1" url="localhost:3316" user="root" password="123456" /> --> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --></dataHost>

2.2 第二步 配置dataNode

dataNode 是配置mycat的数据节点,配置如下:

<dataNode name="dn130" dataHost="db130" database="user_130" /><dataNode name="dn131" dataHost="db131" database="user_131" />

dn130和dn131是dataNode的名字, dataHost就是配置上一步对应的配置. database就是配置真是真实服务器中的库名称.(到最后你就应该明白了)

2.3 第三步 配置schema

这里是配置mycat的分片规则, 我们先来配置一个最简单的.配置如下:

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <!-- auto sharding by id (long) --> <table name="user" dataNode="dn130,dn131" rule="auto-sharding-long" /></schema>

这里就是主要修改dataNode,修改为我们之前配置的node. 至于后面的rule分片规则, 我们后面再讲, 先配置为默认

3. 在130和131的mysql里面创建数据库

分别在2个mysql里面创建数据库, 注意数据库的名称要与dataNode里面配置的名称一致.表的名称要与2.3节里面的table名字一致.

3.1 创建数据库

130的mysql里面创建数据库:

MyCat5分钟简单入门

131的mysql创建数据库:

MyCat5分钟简单入门

注意: 数据库的名称要与dataNode里面配置的名称保持一致

3.2 创建表

这里创建一个简单的表用于演示, 在2个mysql里面分别执行,

create table user ( id bigint(11) primary key not null auto_increment comment '主键ID', username varchar(50) comment '用户名称') comment '用户表';

注意: 表的名称要与schema标签里面配置的table名字保持一致.

启动mycat

回到mycat的根目录, 运行这个命令启动mycat:

[root@#localhost mycat]# ./bin/mycat console

注意加上 console参数, 表示在前台启动, 能够在控制台里面打印出启动日志, 方便我们调试.

启动可能会遇到的问题

1.服务器没有安装JDK

MyCat5分钟简单入门


通过这个信息可以很容易的看出来, 找不到jvm. 那么解决方法就很简单了, 就是在服务器上安装JDK.这个我就展示了, 网上很多教程.

1.table的rule规则有问题

MyCat5分钟简单入门


可以通过日志看出, 规则里面有这样一个东东 3 > table datanode size : 2这个就是问题的关键.

出现这个错误的原因是这样子滴, 我们之前配置table的rule是这样配置的auto-sharding-long.然后我们去看conf里面的配置文件, 可以找到一个rule.xml的配置, 然搜索错误日志里面的rang-long可以找到这样一个东东:

MyCat5分钟简单入门

可以看出, 映射的文件是autopartition-long.txt. 我们可以在配置里面找到这样一个文件,打开看到的是这样子滴:

MyCat5分钟简单入门

这里其实就是配置的数据库分片的规则, 比如上面这个配置表示,ID为0到500M的数据分配到节点0,ID为500M-1000M的数据分配到节点1, ID为1000M-1500M的数据分配到节点2. 但是我们其实只有2个节点, 但是这里配置的是3个, 所以就报错了.我们删除最后一个节点就完事了

1.配置的小错误 重新启动mycat发现又报错了,这次是一个配置的错误:

MyCat5分钟简单入门

发现我们在第2.3步里面的schema名称是TESTDB, 这个应该修改为我们server.xml里面配置的名称:user 正确的配置如下:

<schema name="user" checkSQLschema="false" sqlMaxLimit="100"> <!-- auto sharding by id (long) --> <table name="user" dataNode="dn130,dn131" rule="auto-sharding-long" /> </schema>


解决完上面的问题, 基本上就能启动成功啦~ 下面就可以用我们的数据库连接工具来连接mycat了

注意: 连接的时候, mycat的默认端口是8066哟

连接上mycat后, 可能会遇到这个错误:

find no Route:select * from `user`.`user` limit 0, 100

修改方法如下: 修改schema.xml的checkSQLschema="false" 改为true, 当这个值为true的时候, 我们执行语句select * from user.user 。mycat会把语句修改为 select * from user 去掉前面的user(也就是数据库的名称)。

测试插入数据

我们在mycat里面分别执行着2个语句

INSERT INTO `user`.`user`(`id`, `username`) VALUES (1, 'test1');INSERT INTO `user`.`user`(`id`, `username`) VALUES (5500000, 'test3');

然后我们会看到这两个数据分别在2个数据库里面, 这就是mycat的分片:

130mysql看到的结果:

131mysql看到的结果:

可以看出我们的mycat是配置成功了滴~

到此, 我们的mycat简单入门教程就结束了~