目录
一、分库分表
1.1介绍
1.1.1问题分析
1.1.2拆分策略
1.1.3垂直拆分
1.1.3.1垂直分库
1.1.3.2垂直分表
1.1.4水平拆分
1.1.4.1水平分库
1.1.4.2水平分表
1.1.5实现技术
二、MyCat概述
2.1介绍
2.2下载
2.3安装
2.4目录介绍
2.5概念介绍
三、MyCat入门
3.1需求
3.2环境准备
3.3配置
3.4测试
3.4.1启动
3.4.2启动
四、MyCat配置
4.1schema.xml
4.1.1schema标签
4.1.2 datanode标签
4.1.3 datahost标签
4.1.4 rule.xml
4.2server.xml
五、MyCat分片
5.1垂直拆分
5.1.1场景
5.1.2准备
5.1.3配置
5.1.4测试
5.1.5全局表
5.2水平拆分
5.2.1场景
5.2.2准备
5.2.2配置
5.2.3测试
5.3分片规则
5.3.1范围分片
5.3.2取模分片
5.3.3一致性hash分片
5.3.4枚举分片
5.3.5应用指定算法
5.3.6固定分片hash算法
5.3.7字符串hash解析算法
5.3.8按天分片算法
5.3.9自然月分片
六、MyCat管理及监控
6.1MyCat原理
6.2MyCat管理
一、分库分表
1.1介绍
1.1.1问题分析
随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:
- 1. IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。 请求数据太多,带宽不够,网络IO瓶颈。
- 2. CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。
为了解决上述问题,我们需要对数据库进行分库分表处理。
分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。
1.1.2拆分策略
分库分表的形式,主要是两种:垂直拆分和水平拆分。而拆分的粒度,一般又分为分库和分表,所以组成的拆分策略最终如下:
1.1.3垂直拆分
1.1.3.1垂直分库
垂直分库:以表为依据,根据业务将不同表拆分到不同库中。
特点:
- 每个库的表结构都不一样。
- 每个库的数据也不一样。
- 所有库的并集是全量数据。
1.1.3.2垂直分表
垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。
特点:
- 每个表的结构都不一样。
- 每个表的数据也不一样,一般通过一列(主键/外键)关联。
- 所有表的并集是全量数据。
1.1.4水平拆分
1.1.4.1水平分库
水平分库:以字段为依据,按照一定策略,将一个库的数据拆分到多个库中。
特点:
- 每个库的表结构都一样。
- 每个库的数据都不一样。
- 所有库的并集是全量数据。
1.1.4.2水平分表
水平分表:以字段为依据,按照一定策略,将一个表的数据拆分到多个表中。
特点:
- 每个表的表结构都一样。
- 每个表的数据都不一样。
- 所有表的并集是全量数据。
在业务系统中,为了缓解磁盘IO及CPU的性能瓶颈,到底是垂直拆分,还是水平拆分;具体是分库,还是分表,都需要根据具体的业务需求具体分析。
1.1.5实现技术
- shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析、改写、路由处理。需要自行编码配置实现,只支持java语言,性能较高。
- MyCat:数据库分库分表中间件,不用调整代码即可实现分库分表,支持多种语言,性能不及前者。
二、MyCat概述
2.1介绍
Mycat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在。
开发人员只需要连接MyCat即可,而具体底层用到几台数据库,每一台数据库服务器里面存储了什么数据,都无需关心。 具体的分库分表的策略,只需要在MyCat中配置即可。
优势:
- 性能可靠稳定
- 强大的技术团队
- 体系完善
- 社区活跃
2.2下载
下载地址: http://dl.mycat.org.cn/
2.3安装
Mycat是采用java语言开发的开源的数据库中间件,支持Windows和Linux运行环境,下面介绍
MyCat的Linux中的环境搭建。我们需要在准备好的服务器中安装如下软件。
- MySQL
- JDK
- Mycat
具体的安装步骤: 参考资料中提供的 《MyCat安装文档》即可,里面有详细的安装及配置步骤。
2.4目录介绍
- bin : 存放可执行文件,用于启动停止mycat
- conf:存放mycat的配置文件
- lib:存放mycat的项目依赖包(jar)
- logs:存放mycat的日志文件
2.5概念介绍
在MyCat的整体结构中,分为两个部分:上面的逻辑结构、下面的物理结构。
在MyCat的逻辑结构主要负责逻辑库、逻辑表、分片规则、分片节点等逻辑结构的处理,而具体的数据存储还是在物理结构,也就是数据库服务器中存储的。</