一、准备工作

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

150用来安装Mycat,151和152提前安装好Mysql,安装步骤可参考CentOS 7安装MySQL

在两台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/
image.png

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

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

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

5、解压文件

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

image.png

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

mv mycat/ /usr/local/

image.png

三、配置Mycat

1、进入mycat目录下的conf目录
image.png

2、修改server.xml文件

vim server.xml

image.png

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

image.png

3、配置schema.xml

vim schema.xml

image.png

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

image.png

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

image.png

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

image.png

最后配置schema。

image.png

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

image.png

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

vim autopartition-long.txt

image.png

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

./mycat console

image.png

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

./mycat start

四、测试

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

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

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

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

在mysql_152上表中无任何记录
image.png

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

image.png

mysql_151拥有一条id为1的数据

image.png

mysql_152用有一条id为7777777的数据

image.png

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


强力小磊哥
79 声望6 粉丝

翻过一座山,就高过一座山


引用和评论

0 条评论