1.MyCat简介
MyCat 是目前最流行的基于 java 语言编写的数据库中间件,是一个实现了 MySQL 协议的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分库分表。配合数据库的主从模式还可实现读写分离。
MyCat是基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得 MyCat 变得非常的强大。
MyCat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型NoSQL 方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是哪种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的 SQL 语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。
2.使用MyCat后的 系统架构图
3.使用MyCat 可以解决什么问题
随着业务的发展,当数据库的数据量或者单表的数据量超过极限的时候,对数据库的操作将会比较的缓慢,此时就要考虑到分库分表,这时候应用要面对很多个数据库,就需要对数据库层做一个抽象,来管理这些数据库,而最上面的应用只需要面对一个数据库层的抽象或者说数据库中间件就好了,这就是Mycat的核心作用。
4.MyCat中常用概念
1 切分
逻辑上的切分在物理层面是使用多库[database],多表[table]实现的切分。
1.1纵向切分/垂直切分
就是把原本存储于一个库的数据存储到多个库上。由于对数据库的读写都是对同一个库进行操作,所以单库并不能解决大规模并发写入的问题。例如,我们会建立定义数据库 workDB、商品数据库 payDB、用户数据库 userDB、日志数据库 logDB 等,分别用于存储项目数据定义表、商品定义表、用户数据表、日志数据表等。
优点
1)减少增量数据写入时的锁对查询的影响。
2)由于单表数量下降,常见的查询操作由于减少了需要扫描的记录,使得单表单次查询所需的检索行数变少,减少了磁盘 IO,时延变短。
缺点
1)无法解决单表数据量太大的问题。
1.2横向切分/水平切分
把原本存储于一个表的数据分块存储到多个表上。当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,进行划分,然后存储到多个结构相同的表,和不同的库上。例如,我们 userDB 中的 userTable 中数据量很大,那么可以把 userDB 切分为结构相同的多个 userDB:part0DB、part1DB 等,再将 userDB 上的 userTable,切分为很多 userTable:userTable0、userTable1 等,然后将这些表按照一定的规则存储到多个 userDB 上。
优点
1)单表的并发能力提高了,磁盘 I/O 性能也提高了。
2)如果出现高并发的话,总表可以根据不同的查询,将并发压力分到不同的小表里面。
缺点:
1)无法实现表连接查询。
2.逻辑库
Mycat中定义的 database。是逻辑上存在的。但是物理上是不存在的。主要是针对纵向切分提供的概念。
3.逻辑表
Mycat 中定义的 table。是逻辑上存在,物理上是不存在的。主要是针对横向切分提供的概念。
4.数据主机
真正存放数据的MySql主机地址。IP,域名都可以
5.数据节点
存放数据的DataBase。也就是数据保存的物理节点就是数据节点。
6.分片规则
控制数据的路由规则,也就是如何是指定的数据存放到指定的库、指定的表中。MyCat提供了多种分片算法,例如:哈希,crc32,取模等。也自己编写算法规则,例如枚举等
7.主键自增序列配置
分库分表后,记录主键的自增方式。MyCat提供了三种方式,使用本地文件的方式,使用时间戳的方式,从数据库获取的方式。
8默认端口
MyCat服务的默认端口是8066,也可以修改默认端口。
5.MyCat的命令
1.start 启动 2.pause 暂停 3.resume 继续 4.stop 关闭 5.restart 重启 6.install 安装 7.remove 删除 8.status 状态
6.MyCat的安装
6.1安装环境
1.windows环境
2.JDK1.8
3.MySQL8.0.17
6.2官网上下载windows版本的MyCat,可以根据需要下载其他版本的。
注意:1.6.5以下版本的MyCat只支持表分库,表封面库分表,不支持单库分表。要想实现单库分表功能,必须使用1.6.5及以上版本的MyCat。
下载后解压,自己找位置存放解压后的文件。
6.3配置java环境变量
在warpper.conf文件中配置java环境变量。入下图所示
6.4MyCat服务的安装和启动
以管理员身份打开cmd命令窗口,将目录切换到MyCat解压后的目录下的bin目录下。
MyCat安装,安装命令
mycat.bat install
MyCat启动
mycat.bat start
启动失败去logs目录下wrapper.log的日志文件中查看启动日志,重点关注case by。
MyCat启动失败常见的错误
Caused by: org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 3; 元素内容必须由格式正确的字符数据或标记组成
错误原因:配置文件中有不合法的符号,或者书写格式不正确。认真检查配置文件的格式。
mycat.bat status查看mycat的运行状态。mycat.bat restart重启MyCat服务。
此篇文章MyCat就介绍到这里,后面文章介绍MyCat的具体使用方式。