面试篇-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,路由规则的设置,跨节点分页的问题;


总结

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

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值