深入MyCAT

MyCAT是一个数据库中间层,不存储数据,用于实现后端数据库的读写分离、分库分表。它包括逻辑库和逻辑表,通过server.xml、schema.xml、rule.xml等配置文件管理分片规则和数据库连接。常见的分片算法有简单取模、哈希取模和分片枚举。MyCAT还支持垂直分库,通过配置可以实现跨分片查询。
摘要由CSDN通过智能技术生成

MyCAT

什么是MyCAT?

  • MyCAT相当于MySQL的Server层
  • MySQL相当于MyCAT的存储层
  • MyCAT不存储数据,所有数据存储在MySQL中
  • MyCAT是一个数据库中间层
  • 可以实现对后端数据库的分库分表和读写分离
  • 对前端应用隐藏了后端数据库的存储逻辑

什么是数据库中间层及其作用?

在这里插入图片描述

实现后端数据库的读写分离及负载均衡

在这里插入图片描述

对业务数据库进行垂直切分

在这里插入图片描述

对业务数据库进行水平切分

在这里插入图片描述

控制数据库连接的数量

在这里插入图片描述

MyCAT的基本元素

逻辑库
  • 对应用来说相当于MySQL中的数据库
  • 逻辑库对应后端多个物理数据库
  • 逻辑库并不保存数据

在这里插入图片描述

逻辑表
  • 对应用来说相当于MySQL中的数据表
  • 逻辑库对应后端多个物理数据库中的表
  • 逻辑表并不保存数据
逻辑表的类别
  • 分片表与非分片表按是否被分片划分(分片表就是具有相同表结构,但是存储在不同数据库中)
  • 全局表,在所有分片都存在的表
  • ER关系表,按ER关系进行分片的表

MySQL核心配置

常用配置文件间的关系

  • server.xml–对系统参数和用户权限进行配置
  • schema.xml–对逻辑库和逻辑表进行配置
  • rule.xml–逻辑表中涉及水平切分进行规则配置
  • log4j2.xml–配置日志格式
    在这里插入图片描述
server.xml

server.xml用于配置系统相关参数、用户访问权限以及SQL防火墙及SQL拦截功能

<!-- <system>配置MyCAT系统参数-->
<system>
<!-- key-value -->
<property name = "${key} ">${value}</property>
</system>

<system>
<property name="serverPort">8066</property> <property name="managerPort">9066</property>
</system>

<!-- <user>配置MyCAT的访问用户及权限 -->
<user name="user">
		<property name="password">user</property>
		<!-- 用户可访问的数据库 -->
		<property name="schemas">TESTDB</property>
		<property name="readOnly">true</property>
</user>

<!-- 多数据库访问设置-->
<property name="schemas">db1,db2,db3...</property>

<!-- 表级DML权限设置 -->
<!-- 数字代表:insert、updata、seect、delete-->
<privileges check="false">
			<schema name="TESTDB" dml="0110" >
				<table name="tb01" dml="0000"></table>
				<table name="tb02" dml="1111"></table>
			</schema>
</privileges>
log4j2.xml
  • 配置输出日志的格式
  • 配置输出日志的级别
<!-- %5p表示输出的日志级别 -->
<!-- %t日志中记录线程名称 -->
<!-- %m输出代码中提及的消息 -->
<!-- %n是换行符 -->
 <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] (%l) - %m%n</Pattern>
 </PatternLayout>
 
 <!-- 日志级别 All < Trace < Debug < Info < Warn < Error < Fatal < OFF -->
 <asyncRoot level="info" includeLocation="true">
rule.xml
  • 配置水平分片的分片规则
  • 配置分片规则所对应的分片函数
<tableRule name="rule1"><!-- rule1是分片函数(不可重复) -->
		<rule>
			<columns>id</columns><!-- 分片列,MyCAT对分片列进行运算
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值