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