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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习 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。案例的环境准备好后,接下来要完成数据库表水平拆分的配置。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
存储 算法 关系型数据库
Mycat【Mycat分片技术(水平拆分-分表、ER表、全局表)】(五)-全面详解(学习总结---从入门到深化)
Mycat【Mycat分片技术(水平拆分-分表、ER表、全局表)】(五)-全面详解(学习总结---从入门到深化)
86 0
|
3月前
|
SQL 关系型数据库 MySQL
Mycat【Mycat高级特性_搭建双主双从、Mycat分片技术_垂直拆分-分库 】(四)-全面详解(学习总结---从入门到深化)
Mycat【Mycat高级特性_搭建双主双从、Mycat分片技术_垂直拆分-分库 】(四)-全面详解(学习总结---从入门到深化)
61 0
|
3月前
|
存储 负载均衡 NoSQL
MongoDB分片技术:实现水平扩展的利器
【4月更文挑战第30天】MongoDB的分片技术是应对数据增长和复杂业务需求的解决方案,它将数据水平拆分存储在多个实例上,实现数据库的水平扩展。分片带来水平扩展性、负载均衡、高可用性和灵活的数据管理。分片工作涉及mongos路由进程、config server和shard实例。设置分片包括部署配置服务器、添加分片、启动mongos、配置分片键和开始分片。选择合适的分片键和有效管理能确保系统性能和稳定性。
|
3月前
|
运维 负载均衡 关系型数据库
Mycat【Mycat分片规则(按日期(天)分片、全局序列)、Mycat高可用(Mycat高可用概述)】(七)-全面详解(学习总结---从入门到深化)
Mycat【Mycat分片规则(按日期(天)分片、全局序列)、Mycat高可用(Mycat高可用概述)】(七)-全面详解(学习总结---从入门到深化)
55 0
|
10月前
38MyCat - 分片规则(自然月分片)
38MyCat - 分片规则(自然月分片)
36 0
|
SQL 算法 Java
自定义水平分库分表策略【范围分片】
自定义水平分库分表策略【范围分片】
|
存储 关系型数据库 MySQL
MyCat - 分片 - 垂直拆分 - 概述及案例场景 | 学习笔记
快速学习 MyCat - 分片 - 垂直拆分 - 概述及案例场景
96 0
MyCat - 分片 - 垂直拆分 - 概述及案例场景 | 学习笔记
|
SQL 存储 关系型数据库
MyCat - 分片 - 垂直拆分 - 测试 | 学习笔记
快速学习 MyCat - 分片 - 垂直拆分 - 测试
88 0
MyCat - 分片 - 垂直拆分 - 测试 | 学习笔记
|
存储 算法 关系型数据库
MyCat - 分片 - 水平拆分 - 分片配置及测试 | 学习笔记
快速学习 MyCat - 分片 - 水平拆分 - 分片配置及测试
122 0
MyCat - 分片 - 水平拆分 - 分片配置及测试 | 学习笔记
|
SQL 中间件 关系型数据库
MyCat - 分片 - 垂直拆分 - 全局表配置 | 学习笔记
快速学习 MyCat - 分片 - 垂直拆分 - 全局表配置
128 0
MyCat - 分片 - 垂直拆分 - 全局表配置 | 学习笔记