在阿里云上规划多个数据库的端口和资源分配,核心原则是“安全隔离、资源独占、弹性扩展、监控可观测”。切忌将所有业务库混在同一台 ECS 实例或同一套 RDS 实例中,这会导致故障扩散和性能瓶颈。
以下是基于生产环境最佳实践的完整规划方案:
一、 网络与安全层规划(端口与访问控制)
1. 端口规范化管理
不要使用默认随机端口,建立统一的端口映射规范,便于审计和管理。
- MySQL/MariaDB: 建议标准端口
3306,若需多实例隔离,可使用不同内网 IP 对应不同端口,但更推荐通过 VPC 子网隔离。 - PostgreSQL: 标准端口
5432。 - Redis: 标准端口
6379。 - MongoDB: 标准端口
27017。 - SQL Server: 标准端口
1433。
关键策略:严禁将数据库端口直接暴露给公网(0.0.0.0/0)。所有数据库访问必须通过 VPC 内网进行。
2. 安全组(Security Group)精细化配置
利用阿里云安全组实现最小权限原则:
- 创建专用安全组:为每类数据库(如 MySQL-SG, Redis-SG)创建独立的安全组。
- 入方向规则:
- 仅允许应用服务器所在的 ECS 安全组 ID 或特定私网 IP 段访问数据库端口。
- 示例:MySQL-SG 入方向只允许
ECS-App-SG的源地址访问3306端口。
- 出方向规则:通常保持默认允许,但可限制对非必要网络的访问,防止数据泄露。
3. VPC 与子网划分
- 私有子网(Private Subnet):所有数据库部署在私有子网,无公网 IP。
- 公共子网(Public Subnet):仅放置需要公网访问的负载均衡(SLB)、Web 服务器等。
- 跨可用区部署:为确保高可用,主从节点应分布在不同可用区(Zone)。
二、 资源分配策略(计算、存储、内存)
1. 选型决策:自建 vs 云原生托管服务
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 中小规模、快速迭代、运维人力有限 | RDS(云数据库) | 自动备份、高可用、补丁更新由阿里云负责,降低运维复杂度。 |
| 大规模、极致成本优化、特殊内核定制 | ECS + 自建数据库 | 完全掌控 OS 和数据库配置,适合有资深 DBA 团队。 |
| 缓存、会话存储 | Redis 云数据库 | 比自建 Redis 更稳定,支持集群版自动分片。 |
强烈建议:除非有特殊需求,否则优先使用 RDS 和 Redis 云数据库。它们天然解决了端口暴露、资源争抢和高可用问题。
2. 若使用 ECS 自建数据库的资源隔离
如果必须在单台 ECS 上运行多个数据库实例(不推荐用于生产核心库),需进行严格隔离:
-
CPU 与内存限制:
- 使用
cgroups或 Docker 容器化部署每个数据库实例。 - 例如:MySQL-A 限制最大 CPU 50%,内存 4GB;MySQL-B 限制最大 CPU 30%,内存 2GB。
- 避免一个慢查询拖垮整个实例。
- 使用
-
磁盘 I/O 隔离:
- 使用阿里云 ESSD 云盘,并设置 IOPS 上限。
- 不同数据库实例挂载不同的云盘,避免 I/O 竞争。
- 启用云盘的 QoS 功能(如有),限制读写速率。
-
进程级隔离:
- 使用 systemd 管理每个数据库服务,设置
MemoryLimit和CPUQuota。 - 示例(systemd unit 文件):
[Service] MemoryLimit=4G CPUQuota=50%
- 使用 systemd 管理每个数据库服务,设置
3. 若使用 RDS 云数据库
- 按实例隔离:每个业务系统独立购买一个 RDS 实例。
- 优点:物理隔离,互不影响;可按需调整规格。
- 缺点:成本略高。
- 按账号/Schema 隔离:同一 RDS 实例下创建不同用户和 Schema。
- 仅适用于同属一个业务线、负载较轻的场景。
- 注意:无法实现 CPU/内存级别的硬隔离,一个库的慢查询仍可能影响其他库。
三、 高可用与容灾设计
-
主备架构:
- RDS 默认提供主备高可用,自动切换。
- ECS 自建建议使用 MHA、Orchestrator 或 MySQL Group Replication 实现自动故障转移。
-
备份策略:
- 全量备份:每周一次,保留 30 天。
- 增量备份:每日一次,结合 binlog/WAL 日志。
- 异地备份:开启跨地域备份(Cross-Region Backup),防止单区域灾难。
-
读写分离:
- 对于读多写少的场景,启用 RDS 只读实例或自建中间件(如 MyCat、ShardingSphere)。
- 确保应用层正确路由读写请求,避免主库压力过大。
四、 监控与告警
-
基础监控:
- 启用阿里云云监控(CloudMonitor)。
- 关键指标:CPU 使用率、内存使用率、连接数、QPS/TPS、IOPS、磁盘空间。
-
慢查询分析:
- RDS 提供慢 SQL 日志分析和优化建议。
- ECS 自建需定期导出 slow_query_log,并使用 pt-query-digest 等工具分析。
-
告警阈值设置:
- CPU > 80% 持续 5 分钟 → 通知运维。
- 连接数 > 80% 最大值 → 紧急告警。
- 磁盘使用率 > 85% → 准备扩容或清理。
- 主从延迟 > 10 秒 → 检查网络和同步状态。
五、 总结与建议清单
✅ 推荐做法:
- 所有数据库部署在 VPC 私有子网,无公网 IP。
- 使用安全组严格控制来源 IP,仅允许应用服务器访问。
- 核心业务使用独立的 RDS 实例,实现物理隔离。
- 启用自动备份和跨地域备份。
- 配置完整的监控告警体系。
❌ 禁忌做法:
- 数据库端口开放给 0.0.0.0/0。
- 多个无关业务共享同一 ECS 上的数据库实例且无资源限制。
- 忽略磁盘空间增长,导致磁盘写满服务不可用。
- 没有测试过故障切换流程。
通过以上规划,你可以构建一个安全、稳定、可扩展的数据库基础设施,同时符合国内云计算厂商的最佳实践和安全合规要求。
CLOUD云枢