面试篇-Mysql-3+集群+分库分表


前言

你知道Mysql 的集群吗,你了解主从复制的过程吗,当海量数据出现你们是怎么处理的。本文重点对面试的问题进行介绍,祝愿每位程序员都能上岸!!!


一、Mysql 的集群

在线上环境我们一般要部署1主1从,或者1主多从的Mysql 实例,来实现Mysql 的高可用和读写分离;Mysql 主从同步是通过binlog 日志进行的。

1.1 Mysql 集群的搭建:

关于Mysql 主从集群的搭建,可以参考博主下面的文章

1.2 主从同步过程:

在这里插入图片描述

二、Mysql 怎么应对海量数据存储

Mysql 作为关系型数据的存储,单个表的数据量在超过3千万的时候,会出现性能瓶颈;同样的mysql 的一个单例支持的客户端连接和并发量是有一定的瓶颈的;此时系统就需要考虑使用分库分表的技术来实现。

2.1 垂直拆分

2.1.1 垂直分库:

如现在的微服务都已经做到了垂直拆分,每个微服务模块可能都连接自己的Mysql 数据库实例,它的特点是以表为依据,根据业务将不同表拆分到不同库中,按业务对数据分级管理、维护、监控、扩展;在高并发下,提高磁盘I0和数据量连接数;
在这里插入图片描述

2.1.2 垂直分表:

以字段为依据,根据字段属性将不同字段拆分到不同表中。可以做到:冷热数据分离;减少IO过渡争抢,两表互不影响

在这里插入图片描述

2.2 水平拆分:

2.2.1 水平分库:

将一个库的数据拆分到多个库中。解决了单库大数量,高并发的性能瓶颈问题,提高了系统的稳定性和可用性。
在这里插入图片描述

2.2.2 水平分表:

将一个表的数据拆分到多个表中(可以在同一个库内)。优化单一表数据量过大而产生的性能问题;避免IO争抢并减少锁表的几率;
在这里插入图片描述

2.3 你们项目中有使用过分库分表吗:

我们在spring-cloud 管理的spring-boot 中按照不同的业务分别建立了数据库实例,进行了垂直分库。为了应对海量数据的存储,我们项目还使用了Mycat 中间件进行了分库分表。

Mycat的安装和Spring-boot 集成:

2.4 分库分表时你们有遇到过什么技术挑战吗

分库分表后,因为数据会被存放到多个数据库的多个表中中,所以就会遇到分布式事务;分布式全局id,路由规则的设置,跨节点分页的问题;

  • Mycat 设置了许多的分片规则,如:取模,范围,枚举,ER 分片等,分片规则可以参考:分库分表篇-2.2 Mycat-分片规则
  • 对于分布式事务,Mycat1.6版本之后已经通过2阶段提交解决了分布式事务,并且也支持使用雪花算法生成主键id 可以参考:分库分表篇-2.4 springBoot 集成Mycat(1.6) 分库分表,读写分离,分布式事务
  • Mycat 提供了E-R 分片来确保相同关联关系的数据会被分配到同一个数据库,来尽可能避免跨节点的查询;对于跨节点的分页,Mycat 会将sql 发送到多个Mysql 实例,并最后将结果进行汇总返回;

总结

本文对Mysql 集群,及分库分表的一些面试问题进行了梳理。

相关推荐

  1. MySQL 分库

    2024-07-13 11:44:03       26 阅读
  2. MySQL分库实现

    2024-07-13 11:44:03       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 11:44:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 11:44:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 11:44:03       58 阅读
  4. Python语言-面向对象

    2024-07-13 11:44:03       69 阅读

热门阅读

  1. AM243-IPC

    AM243-IPC

    2024-07-13 11:44:03      22 阅读
  2. 【2024暑期实习】接到新需求该如何做?

    2024-07-13 11:44:03       22 阅读
  3. MATLAB中Simulink.exportToTemplate用法

    2024-07-13 11:44:03       22 阅读
  4. C#面:中间件的使用场景有哪些?

    2024-07-13 11:44:03       21 阅读
  5. vue3 学习笔记08 -- computed 和 watch

    2024-07-13 11:44:03       24 阅读
  6. R语言学习笔记6-数据框

    2024-07-13 11:44:03       20 阅读