MyCat - 分片 - 水平拆分 - 概述及案例场景 | 学习笔记

简介: 快速学习 MyCat - 分片 - 水平拆分 - 概述及案例场景

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(二):MyCat - 分片 - 水平拆分 - 概述及案例场景】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/756/detail/13262


MyCat - 分片 - 水平拆分 - 概述及案例场景

内容介绍:

一、概述

二、案例场景

三、准备工作

 

一、概述

什么是水平拆分以及水平拆分和垂直拆分之间的区别。

水平拆分指的是根据表中数据的逻辑关系,将同一张表中的数据按照某种条件拆分到多台数据库(主机)上。

注意是同一张表中的数据拆分到多台数据库上面,也就意味着多台数据库当中存储的表结构一样,但是表结构当中存储的数据是不一样的。这一块和垂直拆分是有区别的。

垂直拆分指的是各个数据库当中,存储的表结构是不一样的。但是水平拆分各个数据库当中存储的表结构一样,但是里面存储的数据不一样。

下面示意图展示的是在垂直拆分示意图基础上进行了水平拆分。

image.png

用户系统、订单系统、支付系统,这三个系统都有单独的数据库,属于垂直拆分。纵向来看订单表,如果这个表的数据量比较大,可以考虑使用水平拆分,将这一张表当中的数据分散存储到多台数据库上。

纵向的订单系统的数据库、订单表,分割到三个数据库上面,三个数据库上都会有这张订单表。但是三台数据库的订单表当中,存储的数据是不一样的,从而就可以来完成可数据库的扩容。

 

二、案例场景

1、案例一

image.png

如上图所示:左侧应用程序直接去访问 MySQL 。

在应用程序当中,通常会去记录当前系统中的一些日志信息。而对于日志,每一天系统都会产生大量的日志。长年累月日志表里边的数据量会变得非常巨大,大到三台服务器已经存储不下这一张表的数据了。那么就需要考虑对这一块的数据库进行分片处理。此时垂直拆分已经不能满足需求,要使用水平拆分。

右侧是应用程序。水平拆分使用 MyCat 进行水平拆分。原来应用程序直接访问MySQL,而这一块应用程序是访问的是 MyCat 。最上面的这个是 MyCat 当中的逻辑库,在逻辑库中有一张逻辑表,这张逻辑表的数据将会分散存储在三个节点,分别是 dateNote1、dateNote2、dateNote3 。这三个数据节点对应的就是三个数据库服务。即原来在一张表当中存储的数据,现在仍然在一张表存储,但是它拆分到三个数据库当中来进行存储的,起到一个横向扩容的作用,并且它可以充分的利用这三台数据库服务器的 cto 以及磁盘等相关资源。

通过水平拆分之后,在这三台服务器上都会有张日志表,但是它们存储的数据是不一样的。对于应用程序而言,不用关心哪一块的日志存储到哪个数据库了,只需要关心在这一块儿要去操作的是 MyCat ,而操作 MyCat 与操作 MySQL 一样。所以对于应用程序来说,基本不需要任何修改。

2、案例二

tb_log 这张表当中的数据量很大,所以会把这张表进行水平拆分,拆分到三个数据库当中,意味着三个数据库当中都会有 tb_log 这张表,而每一个节点当中存储的数据是不一样的。

image.png

 

三、准备工作

1、准备三台数据库实例

192.168.192.157

192.168.192.158

192.168.192.159

157、158、159 三台数据库服务器已经准备好,需要在三排的数据库实例上去创建一个 log_db 数据库。

2、在三台数据库实例中创建数据库

执行建库语句creat database log_db DEFAULT CHARACTER SET utf8mb4;

creat database log_db 设置默认字符集为 utf8mb4,如下图已创建好 log_db (157)数据库。

image.png

输入creat database log_db DEFAULT CHARACTER SET utf8mb4语句,执行完毕后,log_db (158)数据库创建成功。

同理创建 log_db (159)数据库。

分别在 157、158、159 三排数据库实例上创建了一个数据库 log_db。案例的环境准备好后,接下来要完成数据库表水平拆分的配置。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
算法 数据库
Mycat【Mycat分片规则(取模、分片枚举、范围约定)】(六)-全面详解(学习总结---从入门到深化)
Mycat【Mycat分片规则(取模、分片枚举、范围约定)】(六)-全面详解(学习总结---从入门到深化)
247 0
|
存储 算法 关系型数据库
Mycat【Mycat分片技术(水平拆分-分表、ER表、全局表)】(五)-全面详解(学习总结---从入门到深化)
Mycat【Mycat分片技术(水平拆分-分表、ER表、全局表)】(五)-全面详解(学习总结---从入门到深化)
539 0
9、阿里巴巴矢量图库icon-font的运用
前言:今天说下在项目中的使用图标库 GitHub:https://github.com/Ewall1106/mall 一、新建图标项目 1、打开阿里巴巴矢量图库这个网站,进入图标管理中,在里面新建一个项目 iconfont官网 2、然后...
10738 106
|
11月前
|
人工智能 自然语言处理 API
【活动系列】在阿里云百炼构建企业级多模态应用,发布作品赢取礼品
本次活动旨在鼓励开发者围绕AI应用开发实训课中的音视频交互和多模态RAG能力,在实训群内上传智能体效果截图或视频。活动时间为2025年1月22日至3月31日,分为作品提交、评审和结果公布三个阶段。参与者需在阿里云百炼平台上创建应用,并在规定时间内提交作品。奖项设置包括磁吸充电宝、定制保温杯和折叠雨伞等丰厚礼品。所有作品必须为原创,且需使用阿里云百炼平台完成。详细操作指南及注意事项请参见活动页面。
4238 10
|
运维 负载均衡 关系型数据库
Mycat【Mycat分片规则(按日期(天)分片、全局序列)、Mycat高可用(Mycat高可用概述)】(七)-全面详解(学习总结---从入门到深化)
Mycat【Mycat分片规则(按日期(天)分片、全局序列)、Mycat高可用(Mycat高可用概述)】(七)-全面详解(学习总结---从入门到深化)
387 0
|
Cloud Native 关系型数据库 分布式数据库
开发者如何使用云原生数据库PolarDB
【10月更文挑战第5天】开发者如何使用云原生数据库PolarDB
437 2
|
机器学习/深度学习 数据采集 数据可视化
跟着penguins案例学Seaborn之Pairplot
跟着penguins案例学Seaborn之Pairplot
496 1
|
监控 前端开发 JavaScript
带你入门前端工程(一):技术选型
带你入门前端工程(一):技术选型
887 0
|
数据采集 消息中间件 分布式计算
系统架构+技术选型+用例说明|学习笔记
快速学习系统架构+技术选型+用例说明
系统架构+技术选型+用例说明|学习笔记
|
存储 应用服务中间件 Docker
Docker容器无法启动Cannot find /usr/local/tomcat/bin/setclasspath.sh
根据具体情况,你可以尝试以上方法中的一个或多个,以解决 "Cannot find /usr/local/tomcat/bin/setclasspath.sh" 的问题。确保你的Docker容器中包含了完整且正确配置的Tomcat,并且相关文件和目录的权限设置正确。
745 0