MyCat01-概述
分库分表概述
分库分表应用注意
1.在数据库设计时考虑垂直分库和垂直分表
2.数据量增加时,不要马上做水平分割,而是先考虑缓存处理、读写分离、使用索引等方式。如果以上方式不能解决,再考虑水平分库和水平分表
分库分表问题
1.跨节点连接查询问题(查询垂直分库中的关联数据),这种情况需要分多次查询
2.管理的数据库变多了
分类
纵向切分:将单表拆分成多个表,分散到不同的数据库。或者将单个数据库的多个表按业务类别分散到不同的数据库上
水平分割:按照表中某个字段的某种规则,把表中的许多记录按行切分,分散到多个数据库中
mycat概述
mycat是基于Java的分布式数据库系统中间层,支持JDBC(java数据库连接)形式连接,支持MYSQL、Oracle、Sqlserver、Mongdb等。提供数据读写分离服务。可以实现数据库服务器高可用。提供数据分片服务
mycat工作原理
mycat拦截用户发送的SQL语句,先解析这个SQL查找涉及到的表,然后获取SQL里分片字段的值,并匹配分片函数,获得分片列表,再将SQL发往这些分片去执行,最后收集和处理所有分片结果数据,并返回到客户端
Mycat支持提供10种分片规则
vim /usr/local/mycat/conf/rule.xml
枚举法 sharding-by-intfile
固定分片 rule1
范围约定 auto-sharding-long
求模法 mod-long
日期列分区法 sharding-by-date
通配取模 sharding-by-pattern
ASCII码求模通配 sharding-by-prefixpattern
编程指定 sharding-by-substring
字符串拆分hash解析 sharding-by-stringhash
一致性 hash sharding-by-murmur
目录结构
ls /usr/local/mycat
bin 与服务相关的命令,如:启动、停止
catlet 空的,作用是安扩展功能,比如多表联查
conf 配置文件
lib 使用的jar包,服务运行过程中调用的程序和模块
logs 启动日志和运行日志
wrapper.log mycat服务启动日志
mycat.log 记录SQL脚本执行后的报错内容
重要配置文件
server.xml 设置连接mycat的用户授权
rule.xml 定义mycat分片规则及规则对应的算法
schema.xml 逻辑库表的配置文件
ls /usr/local/mycat/conf/*.txt
autopartition-long.txt partition-hash-int.txt partition-range-mod.txt
ls /usr/local/mycat/conf/*.xml
ehcache.xml log4j.xml router.xml rule.xml schema.xml server.xml
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了