搭建个人网站用1核1G云服务器部署MySQL是否足够?

直接给结论:不够,甚至可以说非常糟糕。

1核1G的服务器跑一个轻量级博客(如WordPress)都勉强,再塞进去一个MySQL,基本就是“自杀式部署”。

咱们拆开来看,为什么这个配置会崩:

1. MySQL是内存大户,不是CPU大户

很多人有个误区,觉得数据库主要吃CPU。错。
MySQL启动后,哪怕没有查询,它也会占用大量内存用于缓冲池(InnoDB Buffer Pool)。默认配置下,MySQL在Linux上起步就要吃掉200MB-300MB的RAM。

你的服务器总共才1GB(1024MB)。

  • 系统开销:Linux内核、SSH服务、网络守护进程等,开机就占掉150-200MB。
  • 剩余可用:大约800MB左右。
  • MySQL抢占:如果你不调整配置,MySQL可能瞬间申请512MB甚至更多。一旦超过物理内存,操作系统就会开始疯狂使用Swap(交换分区)。

后果:Swap是基于磁盘的,速度比内存慢几个数量级。一旦触发Swap,你的网站响应时间会从毫秒级变成秒级,甚至直接卡死、超时。对于个人网站,用户打开页面转圈超过3秒,大概率就关掉了。

2. 并发与负载的现实

假设你用的是Nginx + PHP-FPM + MySQL这套经典LAMP/LNMP架构:

  • Nginx本身很轻量,没问题。
  • PHP-FPM每个进程也要占几MB到十几MB内存。如果有10个并发请求,PHP又要吃掉100-200MB。
  • 这时候MySQL如果还在拼命换页,整个系统I/O打满。

哪怕没人访问,MySQL后台的一些维护线程、日志写入也会让这台小机器喘不过气。

3. 实际测试经验

我在知乎和各大技术社区见过无数案例。1核1G装MySQL的典型症状:

  • 重启MySQL后,服务器变慢。
  • 稍微有点访问量(比如几十人同时在线),数据库连接报错 Can't connect to MySQL server 或者 Too many connections
  • 最尴尬的是:你以为问题出在代码或Nginx配置上,折腾半天,最后发现是MySQL把内存撑爆了。

✅ 正确的做法是什么?

既然你是搭建个人网站,核心诉求通常是:成本低、稳定性尚可、维护简单。别硬扛本地MySQL,有以下几个更优解:

方案一:使用云数据库(RDS)—— 推荐指数 ⭐⭐⭐⭐⭐

这是最稳妥的方案。

  • 操作:阿里云、腾讯云、华为云等都有按量付费或包月的入门级云数据库MySQL。
  • 成本:很多厂商对新人有优惠,一个月可能也就20-50元。有些甚至提供免费的PolarDB Serverless额度。
  • 优势
    • 数据持久化有保障,自动备份。
    • 不占用你那宝贵的1核1G服务器资源。
    • 性能稳定,不会因为你的网站流量波动而卡顿。
  • 注意:确保你的云服务器IP在白名单里,或者使用内网互通(如果同账号同区域)。

方案二:SQLite / MariaDB轻量模式 —— 推荐指数 ⭐⭐⭐

如果你的网站内容极少(比如纯静态博客+少量评论),可以考虑不用MySQL。

  • SQLite:文件型数据库,零配置,无后台进程,内存占用极低。适合个人博客、小型CMS。
  • MariaDB/MySQL极致优化:如果你非要本地MySQL,必须手动修改 /etc/my.cnf/etc/mysql/my.cnf
    [mysqld]
    innodb_buffer_pool_size = 64M
    max_connections = 10
    query_cache_type = 0
    tmp_table_size = 16M
    max_heap_table_size = 16M

    并关闭不必要的插件。即便如此,也仅适用于极低流量的场景。

方案三:升级服务器配置 —— 推荐指数 ⭐⭐

如果坚持本地部署,建议至少升级到 2核2G

  • 2GB内存能让MySQL分配128MB-256MB的Buffer Pool,系统运行流畅度提升明显。
  • 成本增加有限,但体验天壤之别。

📌 总结建议

你的需求 推荐方案
预算极低,想白嫖 用SQLite,或者找免费云数据库试用版
追求稳定,不想运维数据库 买云数据库RDS(最推荐)
愿意花点钱,本地部署 升配到 2核2G 以上
坚持1核1G + 本地MySQL 别这么干,除非你只跑Hello World

最后一句忠告:个人网站的核心价值在于内容和展示,不要为了省那几十块钱的数据库费用,把时间浪费在排查OOM(内存溢出)和数据库崩溃上。把钱花在刀刃上,把数据库交给专业的云服务。

未经允许不得转载:云计算HECS » 搭建个人网站用1核1G云服务器部署MySQL是否足够?