MyCat 数据库中间件的使用

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完全一样。

发布了27 篇原创文章 · 获赞 1 · 访问量 3647

猜你喜欢

转载自blog.csdn.net/qq_40111437/article/details/104670631
今日推荐