数据库主从架构的服务器数量没有固定要求,它完全取决于你的业务需求、高可用性目标、读写分离策略和预算。以下是几种典型配置及其考量因素:
一、 核心配置方案
1. 最小可行配置(2台服务器)
- 架构:1主 + 1从
- 适用场景:
- 开发/测试环境
- 小型生产系统,对高可用性要求不高
- 主要用于读写分离(主库写,从库读),提升读性能
- 风险:主库或从库任一故障都会导致部分功能不可用(如从库宕机则读流量全压到主库)。
2. 标准高可用配置(3台服务器)
- 架构:1主 + 2从
- 适用场景:最经典的生产环境配置。
- 优势:
- 高可用:主库宕机时,可将一个从库提升为新主库(需配合VIP或XX)。
- 负载均衡:两个从库可以分担读请求,并可做跨机房部署。
- 备份:一个从库专用于备份,不影响业务查询。
3. 高可用与容灾配置(4台或以上)
- 架构:1主 + 至少2从 + 1台仲裁/监控服务器
- 或者:跨机房部署,每个机房部署主从(如“主库+从库”在机房A,“另一个从库”在机房B)。
- 目的:
- 机房级容灾:一个机房故障,业务可切到另一机房。
- 更高读性能:应对海量读请求,可水平扩展多个从库。
- 零数据丢失:配合半同步复制,确保数据至少落盘到一个从库。
二、 关键考量因素
-
高可用性目标:
- 允许短暂不可用?2台可能足够。
- 需要自动故障切换?至少需要3台(基于Paxos/Raft的集群如MySQL MGR建议3节点起步)。
-
读写比例:
- 读多写少:可增加从库数量(如1主 + N从)。
- 写压力大:主库可能成为瓶颈,需考虑分库分表。
-
容灾要求:
- 同城容灾:至少部署在2个可用区(AZ),每个AZ至少1个从库。
- 异地容灾:在异地机房部署一个延迟同步的从库。
-
备份与维护:
- 建议专用一个从库做备份、慢查询分析等重型操作,避免影响线上业务。
-
预算与复杂度:
- 每增加一台服务器都会增加硬件/云成本和管理复杂度。
三、 典型场景推荐
| 场景 | 推荐配置 | 说明 |
|---|---|---|
| 开发测试 | 1主1从 | 模拟生产,成本最低。 |
| 小型网站/应用 | 1主2从 | 保证读性能和高可用,行业标配。 |
| 中大型互联网应用 | 1主 + N从 + XX层 | 根据读压力动态扩展从库(N可能为3-10+)。 |
| XX/关键业务 | 跨机房多节点集群 | 例如:MySQL MGR(3节点以上)、Percona XtraDB Cluster。 |
四、 重要补充说明
- 奇数台原则:在需要自动选主的集群(如MGR、Galera)中,部署奇数台(3,5,7…)可以避免脑裂时的投票僵局。
- 不只是服务器数量:架构中通常还需要:
- XX中间件:如ProxySQL、MaxScale,实现读写分离和故障转移。
- 监控与管理节点:如Consul、ZooKeeper(可能共用资源)。
- 云数据库服务:如果使用AWS RDS、阿里云RDS等,它们通常已内置高可用架构(一主一备+只读实例),你只需按需添加只读实例即可。
总结
起步建议从1主2从(共3台)开始,它平衡了性能、可用性和成本。随着业务增长,你可以:
- 垂直扩展:升级单机配置。
- 水平扩展:增加更多从库。
- 架构演进:向分布式集群(如MGR、CockroachDB)或分库分表发展。
最终,最佳数量是在满足 SLA(服务等级协议) 的前提下,结合性能压测结果和成本预算做出的技术决策。
CLOUD技术笔记