分库分表
问题分析

- 分库分表的中心思想就是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的
拆分策略

1、垂直拆分


2、水平拆分


实现技术
- shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截、解析、改写、路由处理。需要自行编码配置实现,只支持java语言,性能较高
- MyCat:数据库分库分表中间件,不用调整代码即可实现分库分表,支持多种语言,性能不及前者
- 配置环境:

基本概念

应用场景


水平分表的Mycat分片规则
- 范围分片:根据指定字段与其配置的范围与数据节点的对应情况,来决定数据属于哪一个分片
- 取模分片:根据指定的字段值和节点数量进行求模运算,根据运算结果进行分片
- 一致性hash:计算指定字段的hash值,根据hash值进行分片,所谓的一致性hash,是指相同的哈希因子计算值总是被划分到相同的分区表中,不会因为分区节点的增加而改变原来数据的分区位置
- 枚举分片:通过在配置文件中配置可能的枚举值,指定数据分配到不同节点上,适用于按照某些指定字段进行分片
- 指定应用:运行阶段由应用自主决定路由到哪个分片,直接根据字符子串(必须是数字)计算分片号
- 固定分片hash算法:类似于十进制的求模运算,但是为二进制的操作,例如:取id的二进制低10位与1111111111进行位&运算,特点:
- 如果是求模,连续的值,分别分配到各个不同的分片,但是此算法会将连续的值可能分配到相同的分片,降低事物处理的难度
- 可以均匀分配,也可以非均匀分配
- 分片字段必须为数字类型
- 字符串hash解析算法:截取字符串中指定位置的子字符串,进行hash算法,算出分片
- 按(天)日期分片
- 按自然月进行分片
Mycat中间件原理
原理

管理
- Mycat默认开通2个端口,可以在server.xml中进行修改:
mysql -h xxx.xxx.xxx.xxx -p 9066 -uroot -pxxxxx
- 8066数据访问端口,即进行DML和DDL操作
- 9066数据库管理端口,即Mycat服务管理控制功能,用于管理Mycat整个集群状态

Mycat-eye
- 是对mycat-server提供监控功能,不局限于对mycat-server使用,通过IJBC连接对Mycat、MySQL监控,监控远程服务器(目前仅限于linux系统)的cpu、内存、网络、磁盘
- 运行过程中需要依赖zookeeper,因此需要先安装zookeeper
posted @
2025-02-04 01:47
Luna-Evelyn
阅读(
5)
评论()
编辑
收藏
举报
点击右上角即可分享