MyCat介绍
Mycat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在。
开发人员只需要连接MyCat即可,而具体底层用到几台数据库,每一台数据库服务器里面存储了什么数据,都无需关心。具体的分库分表的策略,只需要在MyCat中配置即可。
优势:
性能可靠稳定
强大的技术团队
体系完善
社区活跃
准备工作
Mycat是采用java语言开发的开源的数据库中间件,支持Windows和Linux运行环境,下面介绍MyCat的Linux中的环境搭建。我们需要在准备好的服务器中安装如下软件:
MySQL、JDK、Mycat
三台测试机
1:10.168.5.183,安装JDK,Mycat,MySQL
2:10.168.5.193,安装MySQL
3:10.168.5.194,安装MySQL
MySQL安装步骤可以参考我的另一篇学习手记《Centos7中Mysql 8的安装手记》
JDK安装
1:下载jdk-8u171-linux-x64.tar.gz包,并将改JDK包上传到临时目录下。
2:将上传的压缩包进行解压,并通过-C参数指定解压文件存放目录为 /usr/local。
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local
3:使用vim命令修改/etc/profile文件,在文件末尾加入如下配置
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
4:为了使更改的配置立即生效,需要重新加载profile文件,执行命令:
source /etc/profile
5:检查JDK包是否安装成功,如下图所示,表示JDK已经安装成功
Mycat安装
1:将Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz包上传到临时目录下
2:解压MyCat的压缩包
tar -zxvf Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz -C /usr/local/
Mycat各目录介绍
bin : 存放可执行文件,用于启动停止mycat
conf:存放mycat的配置文件
lib:存放mycat的项目依赖包(jar)
logs:存放mycat的日志文件
Mycat概念介绍
在MyCat的整体结构中,分为两个部分:上面的逻辑结构、下面的物理结构。
在MyCat的逻辑结构主要负责逻辑库、逻辑表、分片规则、分片节点等逻辑结构的处理,而具体的数据存储还是在物理结构,也就是数据库服务器中存储的。
Mycat入门演示
三台测试机,主要用来演示如何通过直接操作Mycat而达到对三台实体机器上对mysql数据库的操作
一:在三台mysql数据库机器上都建立一个名叫db01的数据库,建立好以后,不要再对这三台数据库进行任何的建库,建表操作
二:配置Mycat服务
在mycat的conf目录下,需要配置schema.xml和server.xml的文件
Schema.xml配置
Server.xml配置
我们只需要找到最后面,配置如下指定信息即可
完成Mycat配置后,mycat就能正常启动了,在启动前,我们还需要将mycat/lib目录下,将mysql-connector-java-5.1.35.jar这个包给删除替换掉,如下所示 :
删除旧包
将下载来的mysql-connector-java-8.0.22.jar这个包复制到mycat/li目录下,并将该包的权限改成777即可,如下所示:
Mycat启动
bin/mycat start启动mycat
bin/mycat stop停止mycat
可以查看mycat/logs目录下的wrapper.log文件,确认mycat是否正常启动,如下图:
Mycat使用
mycat使用的端口是8066端口
Mysql -h 10.168.5.183 -P 8066 -u root -p
成功连接mycat后,我们就能像操作mysql一样,操作mycat.
此时,只有在mycat上存在一张叫做tb_order的逻辑表,在主机10.168.5.193、10.168.5.194上并不存在tb_order的表,因此,我们在mycat中建立一张实体的tb_order表,
create table tb_order(id bigin not null,title varchar(100) not null,primary key(id))engine=innodb default charset=utf8;
建立好以后,我们查看5.193和5.194的数据库,这时就能发现这两个库中已经有tb_order
这张表了。
验证数据分库分表
插入三条数据,如下所示,我们在mycat中添加了三条数据,可以看到,在5.183的机器上能看到新增加的数据,但是5.193和5.194却没有数据。
造成该问题的原因,是因为我们现在采用的默认策略原因引起的,该默认策略规则如下:
如果id的值在1-500w之间,数据将会存储在第一个分片数据库中。
如果id的值在500w-1000w之间,数据将会存储在第二个分片数据库中。
如果id的值在1000w-1500w之间,数据将会存储在第三个分片数据库中。
如果id的值超出1500w,在插入数据时,将会报错。
以上,我们完成了mycat的安装、入门使用及验证情况,对于分库分表详细的策略说明,我将在后续学习手记中进行分享。