news 2026/4/23 14:32:46

数据库高并发高可用解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据库高并发高可用解决方案

一、高可用方案(HA, High Availability)

  • ​缓存高可用​​:通过双写和双读主备,或利用缓存集群的数据同步与故障自动转移机制实现。
  • ​数据库高可用​​:
    • ​读高可用​​:通过读写分离(如MHA)及分库冗余实现。
    • ​写高可用​​:通过主从双备,结合keepalived与虚拟IP实现自动故障转移。

二、高并发方案

根据业务读写特点选择架构:

  • 读多写少、读并发高:采用主从分离。
  • 写并发高:采用水平分库。
  • 读写并发均高:先进行水平分库,再为每个分库部署主从集群。此外,可使用缓存缓解读并发压力。

2.1 读写分离、主从复制与分组架构

三者指同一架构模型,即主从复制(AB复制):将主库数据复制到一个或多个从库,主库负责写,从库负责读,通常为一主多从。在高可用场景中常简称为MHA。

2.1.1 优势
  • 支持更大读并发与吞吐量,提升读性能;写库独立,提升写性能。
  • 读写库分离,减少锁冲突,优化写性能。
  • 通过从库冗余实现“读高可用”。
  • 易于扩展,增加从库可显著提升读性能。
2.1.2 MySQL主从复制过程(异步)
  1. Master开启binlog,记录数据变更。
  2. Slave的IO线程向Master请求指定binlog及position之后的内容。
  3. Master的IO线程返回对应binlog内容及position。
  4. Slave将binlog写入relay-log,并创建master.info文件记录连接信息。
  5. Slave的SQL线程监控relay-log,解析并执行SQL,实现数据同步。

2.2 分库分表

2.2.1 水平切分(分片架构)
  • ​目标​​:线性提升写性能,降低单库数据量,解决数据量大导致的写瓶颈。
  • ​常见方案​​:
    • ​范围法​​:
      • 优点:保持数据顺序;精准控制数据量;易于扩展。
      • 缺点:负载可能不均衡(如新用户更活跃)。
    • ​哈希法​​:
      • 优点:数据与请求分布均衡。
      • 缺点:扩展时需数据迁移;一致性哈希可缓解此问题。
    • ​哈希+范围混合分片​​:折中方案,均衡数据与请求分布。
2.2.2 垂直切分
  • ​垂直分表​​:将低频或大字段拆分到扩展表,提升内存命中率与IO性能。
  • ​垂直分库​​:按业务拆分库,降低单库数据量,需结合业务可行性。

2.3 读写分离与分库分表结合

结合两者以进一步提升性能,但架构复杂度较高。

三、常见问题与解决方案

3.1 读写分离与水平分库的区别

  • ​数据量​​:主从分离各节点存全量数据;水平分库各节点存部分数据(1/n)。
  • ​目标​​:主从分离扩展读性能;水平分库扩展写性能。
  • ​场景​​:读多写少用主从;写多用分库;读写均高则先分库再主从。

3.2 主从分离的问题

  • 写节点单点风险,需通过主从双备+keepalived+虚拟IP实现高可用。

3.3 数据库架构选型

  • 初期:单库。
  • 读压力大:分组(主从)。
  • 数据量大:分片(水平分库)。
  • 属性访问频次高:垂直拆分。

3.4 水平切分:分库 vs. 分表

  • ​优先分库​​:避免磁盘IO竞争;易于扩展与迁移。

3.5 瞬时高并发处理

  • 通过MQ消息队列削峰填谷。

3.6 分库后的业务接入与数据访问

  • 通过代理切换数据源,业务层无感知。
  • 数据访问层需处理分片路由与数据聚合,可引入数据库中间件简化。

3.7 非Partition Key查询处理

  • ​全库扫描​​:效率低,但可并发优化。
  • ​索引法​​:建立映射表或缓存(如用户名映射主键)。
  • ​基因法​​:通过非Key属性生成分片位(如用户名生成分片基因)。
  • ​直接生成主键​​:风险为ID冲突,需确保均匀分布。

3.8 多非Partition Key查询

  • 对不可修改字段使用基因法,其他用索引法。

3.9 Partition Key批量查询

  • 法一:访问所有库,合并结果。
  • 法二:按路由规则只访问相关分片。

3.10 跨库分页与模糊查询

  • 跨库分页为业界难题,有多种方案。
  • 模糊查询或范围查询可借助ES等搜索引擎。

3.11 分库数据量与唯一主键

  • 数据量建议:无复杂查询时5千万–1亿条;有复杂查询时1千万–2千万条。
  • 唯一主键通过分布式ID生成器实现。

3.12 主从架构中的多主多从

  • 建议一主多从;若写瓶颈,可水平分库,每分片部署主从。
  • 多主多从需确保数据全量同步,避免数据不一致。

3.13 缓存的作用

  • 缓存高频、低频变数据,降低数据库压力,提升响应速度。

3.14 主从切换数据丢失与避免

  • ​丢数据风险​​:
    • 主库未完全同步时宕机。
    • 脑裂导致老主库仍接收写入。
  • ​恢复​​:通过备份的binlog人工恢复。
  • ​避免​​:
    • 使用双主热备+keepalived。
    • 切换前设置主库只读。

3.15 单库重启与连接管理

  • 重启通过redo log恢复数据,不丢数据。
  • 切换时可配置是否断开连接,如MHA可通过脚本控制。

3.16 分库分表依据

  • 单表数据量大导致SQL延迟高:分表。
  • 实例QPS达到上限、锁冲突严重:分库。

3.17 主从Binlog同步方式

  • 备库指定起始binlog位置后,主库主动推送新日志(基于长连接)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 0:41:37

3D打印效率革命:OrcaSlicer深度定制与性能优化实战指南

3D打印效率革命:OrcaSlicer深度定制与性能优化实战指南 【免费下载链接】OrcaSlicer G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.) 项目地址: https://gitcode.com/GitHub_Trending/orc/OrcaSlicer 你是否曾因切…

作者头像 李华
网站建设 2026/4/23 11:27:18

Peerflix终极评测:颠覆性Node.js流媒体播放神器深度解析

你是否厌倦了漫长的视频下载等待?是否曾因网络缓慢而无法流畅观看高清影片?是否希望在有限的存储空间下享受海量影视资源?Peerflix正是为解决这些痛点而生的革命性工具。这款基于Node.js的流媒体协议客户端通过点对点传输协议实现P2P流媒体传…

作者头像 李华
网站建设 2026/4/23 7:52:10

5分钟掌握Saliency:让你的AI模型“开口说话“的可视化神器

5分钟掌握Saliency:让你的AI模型"开口说话"的可视化神器 【免费下载链接】saliency Framework-agnostic implementation for state-of-the-art saliency methods (XRAI, BlurIG, SmoothGrad, and more). 项目地址: https://gitcode.com/gh_mirrors/sa/s…

作者头像 李华
网站建设 2026/4/22 22:32:53

运维系列【仅供参考】:windows自动更新变成了灰色,不能选择的原因

windows自动更新变成了灰色,不能选择的原因windows自动更新变成了灰色,不能选择的原因windows自动更新变成了灰色,不能选择的原因 现象: 发现我的电脑—属性—自动更新里面所有的按钮都已经是灰色的了, 而且每次开机都会自动运行自动更新,关闭进程也无…

作者头像 李华