MyCat是什么?
1、一个彻底开源的,面向企业应用开发的大数据库集群
2、支持事务、ACID、可以替代MySQL的加强版数据库
3、一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
4、一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
5、结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
6、一个新颖的数据库中间件产品
为什么要用MyCat?
事实:
基于本人公司需要做项目迁移,把原来的一体式项目整个改变成微服务分布式的架构,但当拆分出多个子应用运行的时候,当应用连接数据库数到2,30的时候,再启动项目经常会出现连接失败的情况,等待连接mysql,所以就想到了使用MyCat这个中间件来解决该问题。
业内:
1、java与数据库紧耦合
2、高访问量高并发对数据库的压力
3、独写请求数据不一致
作用:
1、独写分离
2、数据分片
3、多数据源整合
好,已经说完了mycat的各种作用,那么我们现在就来实际操作一下吧。
1.首先安装mycat,这里我直接在linux服务器上面安装了mycat,安装成功后文件夹目录如下。(不懂得小伙伴随便百度下安装就可以了,应该没什么难度)
2.配置mycat。
首先我们进入文件夹conf,里面有一大堆文件,但最关键得文件就只有3个,分别是server.xml,schema.xml,rule.xml。
schema.xml:定义逻辑库,表、分片节点等内容。
rule.xml:定义分片规则。
server.xml:定义用户以及系统得相关变量,端口等。(修改mycat的帐号密码,同时配置访问的多个库)
先看看server.xml中的关键配置:
<user name="root" defaultAccount="true">
<property name="password">密码</property>
<!-- 同时访问多个 schema 的话使用 , 隔开 -->
<property name="schemas">TESTDB,mycatdb,nacos</property>
<property name="defaultSchema">TESTDB</property>
<!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
<!-- 表级 DML 权限设置 -->
<!--
参数 说明 示例(禁止增删改查)(按顺序与说明对应,0表示禁止,1表示允许)
dml insert,update,select,delete 0000
-->
</user>
再看看schema.xml的关键配置:
-------------逻辑库配置映射好的数据节点--------------
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1" dataNode="dn1"> </schema>
<!-- nacos server -->
<!-- 逻辑库 nacos -->
<schema name="nacos" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn-nacos-1"></schema>
<schema name="mycatdb" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn-blade-1" dataNode="dn-test-1"">
</schema>
-----------从配置的物理数据库服务器中拿到需要映射的库------------
<!-- 设置dataNode 对应的数据库,及 mycat 连接的地址dataHost -->
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
/> -->
<dataNode name="dn1" dataHost="tencent-mysql-1" database="TESTDB" />
<!-- 分片节点 dn-nacos-1 -->
<dataNode name="dn-nacos-1" dataHost="tencent-mysql-1" database="nacos" />
<!-- 分片节点 dn-test-1-->
<dataNode name="dn-test-1" dataHost="tencent-mysql-1" database="test" />
---------------配置物理数据库的服务器地址(自带心跳检测)--------------
<!-- mycat 逻辑主机dataHost对应的物理主机.其中也设置对应的mysql登陆信息 -->
<!-- 节点主机 host-1 -->
<dataHost name="tencent-mysql-1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- 用于标识不同实例,一般 writeHost 我们使用*M1,readHost 我们用*S1 -->
<writeHost host="mysqlHostM1" url="jdbc:mysql://127.0.0.1:3307" user="root" password="密码">
</writeHost>
</dataHost>
2.配置好以后直接进入bin中启动。
3.测试连接,此时可以用navcat测试也可以用命令连接,和mysql完全一样。