当前位置: 首页 > news >正文

Mycat中间件

一、概述
Mycat是开源的,活跃的、基于java语言编写的MySQL数据库中间件。可以像使用MySQL一样使用mycat,对于开发人员来说根本感觉不到mycat的存在;

二、安装
Mycat是采用java语言开发的开源数据库中间件,支持windows和linux运行环境,下面介绍Mycat和Linux中的环境搭建。需要安装MySQL,JDK,MYCAT
1.安装jdk
(1)上传到linux服务器,并解压
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local

 (2)配置环境变量
使用vim命令修改/etc/profile文件,在文件末尾加入如下配置
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH

(3)重新加载profile文件
为了使更改的配置立即生效,需要重新加载profile文件,执行命令:
source /etc/profile

2.安装mycat
(1)上传mycat安装包

(2) 解压MyCat的压缩包
tar -zxvf Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz -C /usr/local/

(3)删掉mysql5版本的驱动包
进入/usr/local/mycat/lib
rm -rf mysql-connector-java-5.1.35.jar 

(4)更改权限
chmod 777 mysql-connector-java-8.0.22.jar

3.目录结构
 

三、入门
1.分片配置schema.xml文件
<mycat:schema xmlns:mycat="http://io.mycat/">
#逻辑结构
<schema name="DB01" checkSQLschema="true" sqlMaxLimit="100">
<table name="TB_ORDER" dataNode="dn1,dn2,dn3" rule="auto-sharding-long"/>
</schema>
<dataNode name="dn1" dataHost="dhost1" database="db01"/>
<dataNode name="dn2" dataHost="dhost2" database="db01"/>
<dataNode name="dn3" dataHost="dhost3" database="db01"/>
#连接信息
<dataHost name="dhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="master" url="jdbc:mysql://192.168.194.130:3306?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="123456"/>
</dataHost>
<dataHost name="dhost2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="master" url="jdbc:mysql://192.168.194.150:3306?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="123456"/>
</dataHost>
<dataHost name="dhost3" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="master" url="jdbc:mysql://192.168.194.151:3306?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="123456"/>
</dataHost>
</mycat:schema>

2.配置server.xml文件

    <!-- 表级 DML 权限设置 -->
        <!--     
        <privileges check="true">
            <schema name="DB01" dml="0110" > 
                <table name="TB_ORDER" dml="1110"></table>
            </schema>
        </privileges>        
         -->
    </user>

    <user name="user">
        <property name="password">123456</property>
        <property name="schemas">DB01</property>
        <property name="readOnly">true</property>
    </user>

3.启动mycat
切换到mycat的安装目录,执行如下指令,启动mycat
启动:bin/mycat start
停止:bin/mycat stop
启动之后,占用端口号8066

4.分片测试
访问mycat就相当于访问MySQL
登陆:mysql -h 192.168.194.130 -P8066 -uroot -p123456

然后可以在mycat中创建表,并往表结构中插入数据

四、Mycat配置
schema.xml
schma.xml作为mycat中最为重要的配置文件之一,涵盖了mycat的逻辑库,逻辑表,分片规则,分片节点及数据源的位置;
主要包含了以下三组标签;
schema标签
datanode标签
datahost标签
(1)schema标签
<schema name="db01" checkSQLschema="true" sqlMaxLimit="100">
        <table name="TB_ORDER" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
    </schema>
用于定义mycat实例中的逻辑库,一个mycat实例中,可以由多个逻辑库,可以通过schema标签来划分不同的逻辑库;mycat中的逻辑库的概念,等同于MySQL中database概念,需要操作某个逻辑库下的表时,也需要切换逻辑库
核心属性:
name:指定自定义的逻辑库库名
checksqllschema:在SQL语句指定了数据库名称,执行时是否自动去除;true:自动去除,false:不自动去除
sqlMaxLimit:如果未指定limit进行查询,列表查询模式查询多少条记录
table标签定义了mycat中逻辑库schema下的逻辑表,所有需要拆分的表都需要在table标签中定义
核心属性:
name:定义逻辑表表名,在该逻辑库下唯一;
datanode:定义逻辑表所属的datanode,该属性需要datanode标签中的name对应;多个datanode逗号分隔;
rule:分片规则的名字,分片规则名字是在rule.xml中定义的;
primaryKey:逻辑表对应真实表的主键;
type:逻辑表的类型,目前逻辑表只有全局表和普通表,如果未匹配,就是普通表,配置为global;

(2)datanode标签
datanode标签中定义了mycat中的数据节点,也就是我们通常说的数据分片,一个datanode标签就是一个独立的数据分片;
核心属性:
name:定义数据节点名称;
dataHost:数据库实例主机名称,引用dataHost标签中name属性;
database:定义分片所属数据库

(3)datahost标签
该标签在mycat逻辑库中作为底层标签存在,直接定义了具体的数据库实例、读写分离、心跳语句;
核心属性:
name:唯一标识,供上层标签使用;
maxCon/minCon:最大连接数/最小连接数;
balance:负载均衡策略,取值0,1,2,3
writetype:写操作分发方式(0:写操作转发到第一个writeHost,第一个挂了,切换到第二个;1:写操作随机分发到配置的writeHost)
dbDriver:数据库驱动,支持native、jdbc;


http://www.mrgr.cn/news/91416.html

相关文章:

  • 【TI C2000】F28002x的系统延时、GPIO配置及SCI(UART)串口发送、接收
  • leetcode-495.提莫攻击
  • 【16届蓝桥杯寒假刷题营】第2期DAY1I
  • 视点坐标及鼠标交点坐标的信息显示(七)
  • 基于SpringBoot的“高考志愿智能推荐系统”的设计与实现(源码+数据库+文档+PPT)
  • 计算机视觉中图像的基础认知
  • Chrome多开终极形态解锁!「窗口管理工具+IP隔离插件
  • 计算机视觉:卷积神经网络(CNN)基本概念(一)
  • 【深度解析】图解Deepseek-V3模型架构-混合专家模型(MoE)
  • VMware Workstation 17.0 Pro创建虚拟机并安装Ubuntu22.04与ubuntu20.04(双版本同时存在)《包含小问题总结》
  • 【数据结构基础_链表】
  • mysql 学习16 视图,存储过程,存储函数,触发器
  • SQL复习
  • STM32创建静态库lib
  • javacv将mp4视频切分为m3u8视频并播放
  • docker 基础命令使用(ubuntu)
  • 250217-数据结构
  • 【个人开发】deepspeed+Llama-factory 本地数据多卡Lora微调【完整教程】
  • 设计模式14:职责链模式
  • 【R语言】聚类分析