在阿里云服务器上合理规划多个数据库的端口和资源分配,是保障系统稳定性、安全性和性能的关键。以下是一套完整的建议和最佳实践:
一、端口规划原则
-
避免端口冲突
- 默认数据库端口:
- MySQL:3306
- PostgreSQL:5432
- Redis:6379
- MongoDB:27017
- SQL Server:1433
- 若部署多个同类数据库实例(如两个MySQL),需使用不同端口(如3307、3308)。
- 建议统一制定端口分配表,例如:
| 数据库类型 | 实例名称 | 端口号 |
|————|—————-|——–|
| MySQL | 主业务库 | 3306 |
| MySQL | 日志分析库 | 3307 |
| Redis | 缓存主节点 | 6379 |
| Redis | 缓存从节点 | 6380 |
| MongoDB | 用户数据 | 27017 |
- 默认数据库端口:
-
使用非默认端口增强安全性
- 修改默认端口可减少自动化扫描攻击风险(但不能替代防火墙和认证机制)。
- 避免使用知名服务端口(如80、443、22)。
-
通过安全组控制访问
- 在阿里云安全组规则中限制端口开放范围:
- 只允许特定IP或VPC内网访问数据库端口。
- 不将数据库端口暴露在公网(除非必要且有强认证)。
- 示例:Redis 6379 仅允许应用服务器私有IP访问。
- 在阿里云安全组规则中限制端口开放范围:
二、资源分配策略
-
根据业务优先级划分资源
- 使用
cgroups(Linux)或容器(Docker/K8s)隔离资源。 - 为关键数据库分配更多 CPU 和内存。
- 使用
-
合理配置数据库内存参数
- MySQL:调整
innodb_buffer_pool_size(建议设为物理内存的50%~70%,多实例时按比例分配)。 - PostgreSQL:设置
shared_buffers、work_mem。 - Redis:设置
maxmemory防止内存溢出,启用 LRU 策略。 - MongoDB:依赖系统缓存,确保足够空闲内存供文件系统缓存。
- MySQL:调整
-
CPU 与 I/O 调度优化
- 使用
nice或cpulimit控制低优先级数据库的CPU占用。 - 对高I/O数据库(如OLAP型)考虑使用SSD云盘,并开启I/O调度优化。
- 使用
-
磁盘空间规划
- 为每个数据库分配独立挂载目录:
/data/mysql-main/ /data/mysql-log/ /data/redis/ /data/mongodb/ - 使用独立云盘(高效云盘/SSD)挂载,便于监控和扩容。
- 为每个数据库分配独立挂载目录:
三、部署架构建议
-
推荐使用容器化部署(Docker + Docker Compose / Kubernetes)
# docker-compose.yml 示例 version: '3' services: mysql-main: image: mysql:8.0 ports: - "3306:3306" volumes: - ./mysql-main-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: strongpass deploy: resources: limits: memory: 2G cpus: '1.0' redis-cache: image: redis:7 command: redis-server --port 6379 --maxmemory 1gb ports: - "6379:6379" volumes: - ./redis-data:/data -
使用阿里云 RDS 替代自建数据库(推荐)
- 将核心数据库迁移到阿里云 RDS(MySQL/PostgreSQL/MongoDB),由云平台管理高可用、备份、监控。
- 自建数据库仅用于特殊需求(如测试、开发、定制化中间件)。
-
混合部署场景
- 生产环境:RDS + ECS 上运行轻量缓存(如Redis Sentinel)。
- 测试环境:ECS 上部署多实例数据库,使用不同端口+命名空间区分。
四、监控与维护
-
启用监控
- 使用阿里云 云监控 监控 ECS 的 CPU、内存、磁盘、网络。
- 数据库层面使用 Prometheus + Grafana 或阿里云 ARMS 进行性能监控。
-
日志集中管理
- 使用 SLS(日志服务)收集各数据库日志,便于审计和故障排查。
-
定期备份
- 使用
mysqldump、pg_dump、mongodump定时备份。 - 结合 OSS 存储备份文件,设置生命周期管理。
- 使用
五、安全建议
- 所有数据库启用强密码认证。
- 禁用远程 root 登录(MySQL)或绑定本地地址。
- 启用 TLS 加密(尤其跨网络传输)。
- 定期更新数据库版本,修复安全漏洞。
总结:最佳实践清单
| 项目 | 建议措施 |
|---|---|
| 端口分配 | 非默认端口 + 安全组白名单 |
| 资源隔离 | 容器化或 cgroups 限制资源 |
| 内存配置 | 按实例重要性分配 buffer/cache |
| 磁盘 | 独立挂载点 + SSD 云盘 |
| 架构 | 核心用 RDS,边缘用 ECS 自建 |
| 安全 | 不暴露公网 + 强密码 + TLS |
| 监控与备份 | 云监控 + SLS + OSS 备份 |
通过以上规划,可以在一台阿里云 ECS 上安全、高效地运行多个数据库实例。如业务增长,建议尽早拆分到多台服务器或使用云原生数据库服务。
云小栈