Mycat是一款基于阿里开源产品Cobar而研发的开源数据库分库分表中间件(基于Java语言开发)。官网所言:Mycat国内最活跃的、性能最好的开源数据库中间件!
- 一个彻底开源的,面向企业应用开发的大数据库集群
- 支持事务、ACID、可以替代MySQL的加强版数据库
- 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
- 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
- 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
- 一个新颖的数据库中间件产品
mysql集群搭建参考此文章:
第一步
将压缩包上传到Linux并且解压
这里用的是1.6.7.4稳定版
解压命令
tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
解压后的目录
第二步
修改配置文件
主要是修改如下3个配置文件
①schema.xml:定义逻辑库,表、分片节点等内容
②rule.xml:定义分片规则
③server.xml:定义用户以及系统相关变量,如端口等
进入到mycat解压目录下的conf目录
配置schema.xml文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 配置逻辑库 name表示逻辑库的名称,后期idea代码连接数据库要用得到 checkSQLschema:是否检查sql语法 sqlMaxLimit最大sql连接数 randomDataNode管理节点名称 -->
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
</schema>
<!-- dataNode定义数据节点标签 name节点名称 dataHost真实服务所在地址 database真实数据库名称-->
<dataNode name="dn1" dataHost="localhost1" database="mytest" />
<!-- 定义真实服务所在地址 name名字 maxCon最大连接数 minCon最小连接数 dbType数据库类型 dbDriver数据库驱动(我们连接数据库用的软件) slaveThreshold从节点连接池个数 -->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 按照心跳机制来判断真实的数据库是否正常运行-->
<heartbeat>select user()</heartbeat>
<!-- 主节点为位置 host名字随意起 url地址 账号 密码 -->
<writeHost host="hostM1" url="192.168.92.241:3306" user="root" password="123456">
<!-- 从节点位置 -->
<readHost host="hostS1" url="192.168.92.242:3306" user="root" password="123456"></readHost>
</writeHost>
</dataHost>
</mycat:schema>
配置server.xml文件
注意:下面图少了标签,导致启动时报错
注意:下面图少了标签,导致启动时报错
注意:下面图少了标签,导致启动时报错
表头的标签不要删错
验证数据库访问情况
Mycat 作为数据库中间件要和数据库部署在不同机器上,所以要验证远程访问情况。
mysql -udhapp -pxxxxxx -h 192.168.92.241 -P 3306
mysql -udhapp -pxxxxxx -h 192.168.92.242 -P 3306
#如远程访问报错,请建对应用户
grant all privileges on . to root@'%' identified by '123123'
启动程序
1、 控制台启动 :去 mycat解压目录下的bin 目录下执行 ./mycat console
2 、后台启动 :去 mycat解压目录下的bin 目录下执行 ./mycat start
为了能第一时间看到启动日志,方便定位问题,我们选择1控制台启动。
启动时报错了:
Caused by: io.mycat.config.util.ConfigException: schema TESTDB didn't config tables,so you must set dataNode property!
原因:
启动:
登录数据窗口测试mycat配置是否成功
在打开一个虚拟机,
此登录方式用于通过 Mycat 查询数据,我们选择这种方式访问Mycat
mysql -umycat -p123456 -P 8066 -h 192.168.92.241
8066是macat默认端口号,后边的ip地址是mycat所在的地址
建立一个spring工程进行测试
application配置文件配置连接Mysql
进行测试:
添加一条数据
修改schema.xml文件测试负载均衡
ctrl+c关掉MyCat
修改配置文件:
启动mycat:
手动修改数据库方便查看效果:
进行查询测试:
添加测试: