速卖通素材
努力

Spring Boot + MySQL + MinIO 三合一部署,最小推荐服务器配置是多少?

服务器

针对 Spring Boot + MySQL + MinIO 三合一部署(即单机共存,非生产高可用,适用于开发、测试、小型内部系统或轻量级 SaaS 原型),最小推荐服务器配置需兼顾三者的资源竞争(尤其是 I/O 和内存),同时保证基本稳定性与可维护性。以下是综合权衡后的务实最小推荐配置


最小推荐配置(生产边缘级 / 稳定测试环境) 项目 推荐值 说明
CPU 4 核(vCPU) Spring Boot(中等负载 Web API)、MySQL(轻量事务)、MinIO(对象读写)均需 CPU;2 核极易成为瓶颈(尤其 MinIO 并发 PUT/GET 或多线程计算校验和时)。
内存 8 GB RAM ⚠️ 关键项!
• Spring Boot(JVM 堆建议 1.5–2.5G)
• MySQL(InnoDB buffer pool 至少 2G,否则磁盘 IO 暴增)
• MinIO(默认内存占用约 500MB–1.5G,但元数据缓存+并发操作需余量)
• OS + 其他进程(日志、监控等)需预留 ≥1G。低于 6GB 极易 OOM 或频繁 GC/swap,强烈不推荐。
存储 100 GB SSD(NVMe 更佳) • 系统 + 应用:~10–15 GB
• MySQL 数据:按业务预估(起步建议 ≥20 GB 可用空间)
• MinIO 存储:必须独立挂载目录(如 /mnt/minio-data),且严禁与 MySQL 数据目录混用同一文件系统(避免 I/O 冲突 & 故障扩散)
• SSD 是硬性要求:HDD 下 MinIO 性能断崖式下降,MySQL WAL 写入延迟高,三者共存几乎不可用。
操作系统 Linux(Ubuntu 22.04 LTS / CentOS Stream 9) 官方支持完善,内核优化好,MinIO 和 MySQL 对 Linux 友好。避免 Windows Server(MinIO 生产不推荐,Java 文件锁/性能问题)。

⚠️ 关键注意事项(比硬件更重要!)

  1. 存储隔离(强制)

    • MySQL 数据目录(如 /var/lib/mysql)与 MinIO 数据目录(如 /mnt/minio-data必须位于不同物理磁盘或至少不同挂载点(理想:MySQL 用一块 SSD,MinIO 用另一块 SSD 或 RAID)。
    • ❌ 同一 SSD 分区存放二者 → 高并发时 I/O 争抢严重,响应延迟飙升,可能触发 MySQL 超时或 MinIO 503。
  2. JVM 与 MySQL 内存调优(必做)

    # Spring Boot 启动示例(避免默认堆过大)
    java -Xms1536m -Xmx2048m -XX:+UseG1GC -jar app.jar
    # MySQL my.cnf 关键项(8GB 总内存下)
    [mysqld]
    innodb_buffer_pool_size = 2G    # ≈25% 总内存,勿超 3G
    innodb_log_file_size = 256M
    max_connections = 150
  3. MinIO 部署方式

    • ✅ 使用 minio server 单节点模式(非 minio gateway),并指定独立数据盘:
      minio server /mnt/minio-data --console-address :9001
    • ❌ 避免 --compat 模式或 Docker 默认 tmpfs 存储(无持久化)。
  4. 网络与安全

    • 开放必要端口:8080(Spring Boot)、3306(MySQL,务必限制访问 IP 或禁用远程)、9000(MinIO API)、9001(MinIO Console)。
    • 生产环境必须启用 HTTPS(Spring Boot + Nginx 反向X_X)及 MinIO TLS。

🚫 绝对不推荐的配置(踩坑警告) 配置 问题
2核4GB RAM MySQL buffer pool <1G → 全表扫描变慢;MinIO 并发 >5 即卡顿;JVM GC 频繁。
HDD 存储 MinIO PUT 延迟 >500ms;MySQL INSERT 响应不稳定;三者共存基本不可用。
共享同一分区 日志刷盘、Binlog、MinIO multipart upload 临时文件互相阻塞,OOM 风险极高。
未调优直接运行 默认 MySQL innodb_buffer_pool_size=128M → 90% 请求走磁盘,性能归零。

💡 升级建议(当用户量/数据量增长后)

  • 50+ 日活 / 10GB+ 对象存储 → 升级至 8核16GB + 2×SSD(MySQL/MinIO 分盘)
  • 生产环境(任何线上业务)必须分离部署
    • Spring Boot + MySQL → 一台(或 MySQL 上云 RDS)
    • MinIO → 独立节点(或 MinIO 分布式集群)
    • 理由:故障隔离、伸缩独立、备份策略解耦、符合云原生最佳实践。

总结一句话

“4核8GB SSD(存储隔离)是三合一部署的稳定底线;低于此配置,不是省钱,是在为运维埋雷。”

如需具体部署脚本(systemd 服务配置、MySQL 初始化、MinIO 用户策略、Spring Boot 连接池配置),我可立即提供 👇

未经允许不得转载:轻量云Cloud » Spring Boot + MySQL + MinIO 三合一部署,最小推荐服务器配置是多少?