一、准备工作
3台CnetOS7服务器,我这里是安装在虚拟机上的三台服务器,ip地址分别为192.168.0.150,192.168.0.151,192.168.0.152。

150用来安装Mycat,151和152提前安装好Mysql(安装步骤可参考
https://segmentfault.com/a/11...。

在两台MySQL服务器上分别创建school_151,school_152,并在这两个库中创建相同的表students。

DROP TABLE IF EXISTS `students`;CREATE TABLE `students` (  `id` int NOT NULL,  `name` varchar(255) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

二、安装Mycat

1、从Mycat官网下载安装包:http://www.mycat.org.cn/

2、主页往下翻选择下载版本,这里选择的是1.6.7.1版本

3、选择Linux版本,开始下载

4、将下载好的文件上传到服务器上,我这里的服务器是虚拟机上CentOS7系统

5、解压文件

tar -zxvf Mycat-server-1.6.7.4-test-20191022170541-linux.tar.gz

6、解压完毕,将解压后的文件转移到/usr/local目录下(这一步可做可不做)

mv mycat/ /usr/local/

三、配置Mycat

1、进入mycat目录下的conf目录

2、修改server.xml文件

vim server.xml

server.xml里面配置了system、firewall和user,我们现在需要修改一下user里面的schemas,这是mycat的逻辑库名,需跟schema.xml里面的schema标签的name对应,如果需要配置多个schema,可以用,隔开。我们将schemas设置成school,保存并退出。

3、配置schema.xml

vim schema.xml

首先配置dataHost,我们这里有两台Mysql服务器,所以需配置两个dataHost。

将两台Mysql服务器的url,user,password分别配置到dataHost下的writeHost,先将writeHost下的readHost注释掉。为了便于记忆这里将两个dataHost的name分别改为dh151,dh152。接下来配置dataNode。

我们配置两个dataNode,dataHost属性分别对应前面配置的两个dataHost的name,database属性对应两台Mysql服务器中的school_151,school_152,并将name分别设置为dn151,dn152。

最后配置schema。

schema的name属性对应server.xml中配置的schema,shcema下面的table标签的name属性与Mysql中的表名一致,dataNode属性对应上面配置的两个dataNode标签的name,rule属性表示的是分片规则,这里使用的是auto-sharding-long。这里只保留一个table标签,将其他的table标签注释掉。保存并退出。

4、修改autopartition-long.txt。因为我们配置的分片规则auto-sharding-long是根据id范围进行分片的,autopartition-long.txt默认配置了三个分片范围,我们只有两台Mysql进行分片,所以这里将最下面的1000M-1500M=2注销掉。

vim autopartition-long.txt

5、启动Mycat。进入mycat目录下的bin目录,输入以下命令。

./mycat console

console表示将启动信息显示在控制台,如果不需要显示启动信息,可以用:

./mycat start

四、测试

1、使用Navicat连接Mycat,跟连接Mysql一样,Mycat的端口为8066。

2、成功连接后,可以看到Mycat下面会有一个school的数据库,这是逻辑库,非实体库。school下面有一张students表。

3、此时,我们两台Mysql服务器上的school_151、school_152下students表中无任何数据。我们在Mycat中新建查询并插入一条id为1的数据

在mycat和mysql_151上,可以查询到这条新添加的数据。

在mysql_152上表中无任何记录

我们在mycat中再次插入一条id为7777777的记录,此时,mycat表中有了两条记录

mysql_151拥有一条id为1的数据

mysql_152用有一条id为7777777的数据

至此,Mycat成功安装并实现了简单的分库分表。