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

分片概念:

分片(Sharding)就是用来确定数据在多台存储设备上分布的技术。Shard这个词的意思是“碎片”,如 果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片(Database Sharding)。将一个数据库打碎成多个的过程就叫做分片,分片是属于横向扩展方案。

分片与分表的区别:

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

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


分片策略:

  • 基于范围分片:

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

优点:新的数据可以落在新的存储节点上,如果集群扩容,数据无需迁移。

缺点:热点数据分部不均匀则会导致机器负荷程度的不均匀,会浪费资源也会导致部分机器过载。

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

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

优点:数据分配比较均匀,不容易出现冷热不均,负荷不均的情况。

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

  • 一致性哈希分片

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


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

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

停机扩容,关闭服务不符合现阶段高可用的价值观,并且如果有问题没有及时测试出来启动了服务,运行后发现问题,数据会丢失一部分,难以回滚。该方案虽然简单但只适合小型网站或者对高可用要求不高的程序,或是测试上线阶段。

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

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

 双主双写之后进行同步,在可容忍的延迟下,保证数据的同步完成。(因为高可用要求高的程序下,随时都会存在写的数据录入,所以会有延迟情况)

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

 

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


附: 参考资料《MySQL技术内幕 InnoDB存储引擎》  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分表是一种常用的数据库优化策略,可以将数据按照某种规则分散到不同的表中,从而降低单张表的数据和查询复杂度,提高数据库的性能和稳定性。以下是一个基于MySQL的分表方案: 1. 确定分表规则 首先需要确定分表的规则,可以按照间、地域、业务类型等多个维度进行分表。例如,按照间分表可以将数据按照年、月、日、小间段进行分表;按照地域分表可以将数据按照国家、省份、城市等地理位置进行分表;按照业务类型分表可以将数据按照产品、订单、用户等进行分表。 2. 创建分表 根据确定的分表规则,创建对应的分表。例如,按照间分表可以创建类似于表名为“table_202101”、“table_202102”等不同间段的表;按照地域分表可以创建类似于表名为“table_china”、“table_usa”等不同地理位置的表;按照业务类型分表可以创建类似于表名为“table_product”、“table_order”、“table_user”等不同业务类型的表。 3. 选择合适的分表键 在创建分表,需要选择合适的分表键。分表键决定了数据在分表应该被分配到哪个表中。分表键的选择需要考虑到数据的分布情况和查询的频率。例如,按照间分表可以选择间字段作为分表键,按照地域分表可以选择地理位置字段作为分表键。 4. 管理分表数据 在使用分表后,需要进行分表数据的管理,包括数据的导入、查询、删除、备份等操作。由于数据被分散到不同的表中,需要对分表数据进行整合或者分散查询,可以使用联合查询、视图等技术来实现。在备份分表数据,需要分别备份每个分表,保证数据的完整性和一致性。 总的来说,分表是一种常用的数据库优化策略,可以帮助提高数据库的性能和稳定性。但是,在使用分表需要根据具体的业务需求进行规划和设计,合理选择分表规则和分表键,以及进行分表数据的管理和维护。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值