概述
Mycat
是数据库中间件。官网:http://www.mycat.io/
中间件
是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通。
数据库中间件
连接Java
等应用程序和数据库。
为什么要用Mycat
?
Java
与数据库紧耦合。- 高访问量高并发对数据库的压力。
- 读写请求数据不一致。
Mycat
作用
读写分离
数据分片
- 垂直拆分(分库)
- 水平拆分(分表)
- 垂直+水平拆分(分库分表)
多数据源整合
Mycat
支持多数据源
Mycat
实现原理
Mycat
的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL
语句,首先对SQL
语句做了一些特定的分析,比如:分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL
发往后端的真实数据库,并将返回的结果做适当的处理,最终在返回给用户。
这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用的是Mycat
还是MySQL
。
安装启动
安装
下载地址:http://dl.mycat.org.cn/。选择版本进行下载即可。
本文使用的是1.6.7.6
Linux
版本。
Linux
下载地址:http://dl.mycat.org.cn/1.6.7.6/20220524101549/Mycat-server-1.6.7.6-release-20220524173810-linux.tar.gzWin
下载地址:http://dl.mycat.org.cn/1.6.7.6/20220524101549/Mycat-server-1.6.7.6-release-20220524173810-win.tar.gz
解压即可使用
配置文件
schema.xml
:定义逻辑库、表、分片节点等内容。rule.xml
:定义分片规则。server.xml
:定义用户以及系统相关变量,如端口等。
启动
-
修改配置文件
server.xml
修改用户信息,与
MySQL
区分,如下:<user name="mycat" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">TESTDB</property> </user>
-
修改配置文件
schema.xml
删除
<schema>
标签的表信息,<dataNode>
标签只保留一个,<writeHost>
、<readHost>
只留一对<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema> <dataNode name="dn1" dataHost="host1" database="testdb" /> <dataHost name="host1" 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="hostM1" url="192.168.110.145:3306" user="root" password="123456"> <!-- can have multi read hosts --> <readHost host="hostS1" url="192.168.110.145:3306" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema>
-
验证数据库访问情况
Mycat
作为数据库中间件要和数据库部署在不同机器上,所以要验证远程访问情况。mysql -uroot -p123456 -h 192.168.110.145 -P 3306 #如远程访问报错,请建对应用户 grant all privileges on *.* to root@'缺少的host' identified by '123456';
-
启动程序
- 控制台启动:
mycat/bin
目录下执行./mycat console
- 后台启动:
mycat/bin
目录下执行./mycat start
- 控制台启动:
登录
-
登录后台管理窗口
此登录方式用于管理维护
Mycat
mysql -umycat -p123456 -P 9066 -h 192.168.110.145
常用命令如下:
# 查看数据库 show database # show 帮助 show @@help
-
登录数据窗口
此登录方式用于通过
Mycat
查询数据,我们选择这种方式访问Mycat
mysql -umycat -p123456 -P 8066 -h 192.168.110.145