Mysql分片,大数据量时扩容解决方案

 更新时间:2024年06月01日 15:21:03   作者:FYHannnnnn  
这篇文章主要介绍了Mysql分片,大数据量时扩容解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

分片概念

分片(Sharding)就是用来确定数据在多台存储设备上分布的技术。

Shard这个词的意思是“碎片”,如 果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片(Database Sharding)。

将一个数据库打碎成多个的过程就叫做分片,分片是属于横向扩展方案。

分片与分表的区别

分片:表示分配过程,是一个逻辑上概念,表示如何实现。

分库分表:表示分配结果,是一个物理上概念,表示最终实现的结果

分片策略

基于范围分片

根据特定的字段进行拆分,比如ID0-100到 Cluster A节点中,100-200的到Cluster B节点中...

  • 优点:新的数据可以落在新的存储节点上,如果集群扩容,数据无需迁移。
  • 缺点:热点数据分部不均匀则会导致机器负荷程度的不均匀,会浪费资源也会导致部分机器过载。

哈希取模分片(离散分片)

根据Hash算法取模对应一些机器编号进行入库。

  • 优点:数据分配比较均匀,不容易出现冷热不均,负荷不均的情况。
  • 缺点:比较均匀,但是在扩容时会产生大量的数据迁移(因为Hash算法取模要整体重新计算),比如从n台设备扩容到n+1,绝大部分数据需要重新分配和 迁移。

一致性哈希分片

相比较传统的Hash算法,通过环的方式在添加节点(扩容)或者删除节点时,只对增加节点的单个环上进行添加,则无须进行大面积的数据迁移。

在数据库容量有限的情况下,分片,分库,分表也会达到瓶颈,而这时候的扩容方式则需要去横向增加节点扩容处理。

一,初期方案(停机扩容)

停机扩容,关闭服务不符合现阶段高可用的价值观,并且如果有问题没有及时测试出来启动了服务,运行后发现问题,数据会丢失一部分,难以回滚。

该方案虽然简单但只适合小型网站或者对高可用要求不高的程序,或是测试上线阶段。

二,平滑扩容(上线运行之后)

平滑扩容也称之为成倍扩容,例如从两个节点扩到四个节点,通过双主配置双写进行数据同步。

双主双写之后进行同步,在可容忍的延迟下,保证数据的同步完成。

(因为高可用要求高的程序下,随时都会存在写的数据录入,所以会有延迟情况)

同步完成后,则取消掉双主同步,重启即可。

平滑扩容虽然做到了高可用的要求,但是配置程序很复杂、配置双主同步、双主双写、检测数据同步等,且后期数据库扩容,因为是成倍扩容,代价会不断变大。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mysql NULL导致的神坑

    Mysql NULL导致的神坑

    这篇文章主要介绍了Mysql NULL导致的神坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • MySQL 5.0.16乱码问题的解决方法

    MySQL 5.0.16乱码问题的解决方法

    这篇文章主要介绍了MySQL 5.0.16乱码问题的解决方法,需要的朋友可以参考下
    2015-10-10
  • MySql数据库基础之子查询详解

    MySql数据库基础之子查询详解

    所谓子查询是指在一个查询中嵌套了其他的若干查询,即在一个SELECT查询语句的WHERE或FROM子句中包含另一个SELECT查询语句,下面这篇文章主要给大家介绍了关于MySQL子查询的相关资料,需要的朋友可以参考下
    2022-09-09
  • MySQL数据查看SELECT条件大于 小于(小白入门篇)

    MySQL数据查看SELECT条件大于 小于(小白入门篇)

    这篇文章主要为大家介绍了MySQL数据查看SELECT条件大于和小于的语句学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • MySQL中limit语法及用法小结

    MySQL中limit语法及用法小结

    LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录,本文重点介绍MySQL中limit语法及用法小结,感兴趣的朋友一起看看吧
    2023-10-10
  • mysql中的find_in_set字符串查找函数解析

    mysql中的find_in_set字符串查找函数解析

    这篇文章主要介绍了mysql中的find_in_set字符串查找函数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • mysql使用Haversine 公式和ST_Distance_Sphere 函数实现附近的人功能

    mysql使用Haversine 公式和ST_Distance_Sphere 函数实现附近的人功能

    使用 MySQL 来实现“附近的人”功能,可以通过Haversine 公式和ST_Distance_Sphere 函数两种方式来实现,这篇文章主要介绍了mysql实现附近的人功能,需要的朋友可以参考下
    2023-08-08
  • mysql 5.7以上版本下载及安装图文教程

    mysql 5.7以上版本下载及安装图文教程

    这篇文章主要介绍了mysql 5.7以上版本下载及安装图文教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • 浅谈MySQL中不等号索引问题

    浅谈MySQL中不等号索引问题

    本文主要介绍了浅谈MySQL中不等号索引问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 如何添加一个mysql用户并给予权限详解

    如何添加一个mysql用户并给予权限详解

    在很多时候我们并不会直接利用mysql的root用户进行项目的开发,一般我们都会创建一个具有部分权限的用户,下面这篇文章主要给大家介绍了关于如何添加一个mysql用户并给予权限的相关资料,需要的朋友可以参考下
    2023-03-03

最新评论