2026 独立数据库 VPS:MySQL/Postgres 的磁盘 IO、内存与备份怎么选
2026-08-15 · DevCraft Studio
前后端分离后数据库该独立部署。本文讲清 NVMe IO 对查询性能的决定作用、InnoDB Buffer Pool 与 shared_buffers 的内存比例、主从读写分离最低配置,并横向对比 Vultr、Contabo、CloudCone,帮你把数据库当心脏来养。
延伸阅读
更多相关攻略推荐:2026 独立站 PCI-DSS 自查清单:SAQ A 还是 A-E、2026 只选月付 VPS:不锁年付、随时退的试错策略、2026 海外仓/ERP 系统自建部署:独立服务器还是云 VPS?、2026 实测:VPS 上自托管 AI 编程助手——Continue、【知识库自托管 02】2026 实测:VPS 自托管 Anythin。
引子:为什么数据库不该和网站挤在一台机器
很多团队起步时为了省事,把 Web 应用、Nginx、定时任务、数据库全塞在一台机器上。流量小的时候皆大欢喜,一旦业务起来、并发一高,慢查询开始堆积,你查来查去会发现:Web 进程在抢内存、日志在抢磁盘 IO、数据库在抢 CPU,三者互相踩脚,结果全站一起变慢甚至雪崩。
数据库是业务的心脏,一旦慢或挂,全站跟着崩。便宜 VPS 站的角度,最划算的一刀就是:把数据库从 Web 机拆出来,单独用一台独立 VPS。这一台机器独享资源、不被应用层干扰,配上 NVMe 和大内存,查询稳定性和可预期性会立刻上一个台阶。本文就站在一个做外贸独立站、出海 SaaS 或小程序后端的大陆用户视角,把独立数据库 VPS 怎么选讲透。
数据库吃哪三宝:CPU、内存、磁盘 IO 的事
理解数据库对硬件的胃口,记住三个敏感点就够了。
缓存靠内存。 无论是 MySQL 的 InnoDB 还是 PostgreSQL,都会把热数据、索引尽量放在内存里。内存越大,缓存命中率越高,需要回磁盘的次数越少,查询越快。反之内存小,频繁回盘,延迟直接起飞。
事务写落盘靠磁盘 IO。 每一条 INSERT/UPDATE/DELETE 最终要写进 WAL(预写日志)或 redo 日志,落盘快慢直接决定写吞吐。数据库 90% 的日常工作是 4K 随机读写(索引、日志、page cache miss 回盘),这恰恰是磁盘最吃力的活。
复杂查询靠 CPU。 聚合、排序、多表 JOIN 这些操作,CPU 算得越猛越快。但相比内存和 IO,大多数 Web 业务的数据库瓶颈先出在内存和 IO 上,CPU 一般够用,除非你天天跑重分析。
结论很朴素:给数据库独立一台机器,就是让它独享这三样,不再被 Web 层分走。混布时最惨的不是慢,而是你根本分不清瓶颈在谁身上。
NVMe 是命门:4K 随机读写与 IOPS 门槛
标题里把磁盘 IO 放最前面,是因为它是数据库性能最容易被忽视、也最容易踩坑的地方。数据库的日常不是大文件顺序拷贝,而是海量 4K 随机读写。这种负载下,硬盘类型的差距被放大到天壤之别。
| 维度 | NVMe SSD | SATA SSD | HDD 机械盘 |
|---|---|---|---|
| 连接方式 | 直连 PCIe 总线 | SATA 接口 | 磁头寻道 |
| 延迟 | 微秒级 | 亚毫秒到毫秒 | 数毫秒到十几毫秒 |
| 随机 4K IOPS | 数十万级 | 几万级 | 数百级 |
| 顺序带宽 | 数 GB/s | 约 550 MB/s 上限 | 约 200 MB/s |
| 数据库适用 | 生产首选 | 轻量可用 | 基本不行 |
实测口径里,多数评测建议数据库盘的 IOPS 至少 10,000 起步,繁忙分析库要到 25,000–50,000 以上。还有个隐藏坑:共享 IOPS 池。有些便宜 VPS 的 NVMe 是和邻居共享 IOPS 配额的,邻居一高 IO,你的库就变慢。挑机器时优先选「独享 NVMe 配额」的商家,比共享池稳得多。一句话:生产库必须 NVMe,且 IOPS 尽量不被摊薄。
内存怎么给:InnoDB Buffer Pool 与 shared_buffers 的比例
内存是数据库最该堆的资源。两个核心参数要记住。
MySQL 的 InnoDB 用 innodb_buffer_pool_size 缓存数据和索引,经验值是设为物理内存的 70%–80%。比如一台 8 GB 的库机,buffer pool 给到 6 GB 左右,热数据基本都在内存里,回盘极少。PostgreSQL 用 shared_buffers,通常给物理内存的 25%–40%,其余留给操作系统 page cache(OS 也会帮你缓存文件)。
下面给个对照,照着机器内存填:
| 机器内存 | MySQL innodb_buffer_pool_size | PG shared_buffers | 适用 |
|---|---|---|---|
| 4 GB | 约 3 GB | 约 1 GB | 小站、测试 |
| 8 GB | 约 6 GB | 约 2 GB | 中型 Web / 电商 |
| 16 GB | 约 12 GB | 约 4-6 GB | 高并发业务 |
| 32 GB+ | 约 24 GB+ | 约 8-12 GB | 大型 SaaS / 分析 |
调法很简单,改配置文件后重启即可(PG 示例,值按实际内存):
# postgresql.conf(8GB 机器示意)
shared_buffers = 2GB
effective_cache_size = 6GB
maintenance_work_mem = 512MB
# my.cnf [mysqld](8GB 机器示意)
innodb_buffer_pool_size = 6G
innodb_buffer_pool_instances = 4
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
注意 innodb_flush_log_at_trx_commit=1 加 sync_binlog=1 是强一致写法,掉电不丢事务,但会稍微牺牲一点写性能,生产库建议开着。
CPU 怎么看:OLTP 看主频,OLAP 看核数
CPU 不是数据库最紧的资源,但选型有讲究。简单记:OLTP(在线事务,短平快的高并发读写)看单核主频,因为单个事务要算得快;OLAP(分析型,聚合、报表、大 JOIN)看核数,因为可以并行算。
MySQL 主库偏单核频率,PostgreSQL 做分析时多核更舒服。对绝大多数 Web 应用,2–4 vCPU 已经够用;只有当你的查询里大量出现复杂聚合、多表关联、实时分析时,才需要往上加核。别一上来就买 16 核,多数时候那 12 个核在空转,钱花冤枉了。先小后大、监控后再升,是数据库选型最稳的节奏。
三款便宜 VPS 横向对比
本文相关的三家是 Vultr、Contabo、CloudCone,都适合做独立数据库(价格以商家页面为准)。
| 商家 | 适合档位(示意) | 内存 / 存储要点 | 付款与退款 |
|---|---|---|---|
| Vultr | 2 vCPU/4 GB 约 18-24 美元/月;更高档 8/16 GB 起 | 按小时计费灵活、机房多;2.5 美元基础套餐 IPv6-only 无 IPv4;块存储可扩容 | 信用卡/PayPal/加密货币;部分地区支付宝以页面为准 |
| Contabo | 高内存低价档(8/16/32 GB RAM) | 内存给得大方、性价比高,适合缓冲池;NVMe 以页面为准 | 信用卡/PayPal;部分地区支付宝以页面为准;退款以页面为准 |
| CloudCone | 年付/月付低档,洛杉矶 MC 机房;可加高防 IP | 便宜、国内支付方便;NVMe 与具体 IOPS 以页面为准 | 支付宝/PayPal/信用卡;新用户首台 7 天无理由退款(按小时计费) |
怎么选:要内存大又便宜、缓冲池想给足,看 Contabo;要按小时计费、随时扩块存储、机房多选 Vultr(但别买 2.5 美元那档,没 IPv4);想用支付宝、年付更省、还要顺手加高防 IP 防被打,看 CloudCone。对大陆用户,CloudCone 支持支付宝且洛杉矶 MC 三网相对友好,先 7 天测一轮 IO 再留。
主从读写分离:最低配置与能省多少延迟
业务再上一层,单库扛不住读压力时,就该上主从读写分离。原理:主库(primary)只负责写(INSERT/UPDATE/DELETE),从库(replica / read slave)通过异步复制拿到数据后,专门承担只读 SELECT。读流量被分流走,主库专心写,互不抢。
这么做能带来三件事:查询延迟可降最高约 60%(有电商实测);备份对主库影响大幅下降(有实测称降 82%);从库本身就是持续更新的热备,灾备更稳。还有个中文实测:日均 10 万级查询的电商,上主从后平均响应从 320ms 降到 90ms,年度因库故障停机减少 67%。
最低配置参考(生产建议主 1 + 从 2,1 读均衡 + 1 备份/分析):
| 角色 | CPU | 内存 | 磁盘 | 关键参数 | 作用 |
|---|---|---|---|---|---|
| 主库 | 4 核+ | 8 GB+ | SSD / NVMe RAID1 | log-bin, gtid, buffer pool 70-80% | 写 + 强一致读 |
| 从库(读) | 2 核+ | 4 GB+ | 同主或略低 | read_only=ON, gtid | 分流只读查询 |
| 从库(备/分析) | 2 核+ | 4 GB+ | 预留归档空间 | read_only=ON | 备份、报表、离线分析 |
关键提醒:复制是异步的,从库有秒级延迟,强一致读(比如刚下单立刻查余额)要去主库。从库务必开 read_only=ON,否则误写会导致主从不一致。MySQL 主从核心配置示意:
# 主库 my.cnf
server-id = 1
log-bin = mysql-bin
binlog_format = mixed
gtid_mode = ON
enforce_gtid_consistency = ON
# 从库 my.cnf
server-id = 2
read_only = ON
gtid_mode = ON
enforce_gtid_consistency = ON
一小时上手:在 VPS 上装 PG/MySQL 并调缓冲池
独立数据库 VPS 到手后,部署很快。以 Ubuntu 为例,装 PostgreSQL:
sudo apt update
sudo apt install -y postgresql
# 编辑 /etc/postgresql/*/main/postgresql.conf 调整 shared_buffers 等
sudo systemctl restart postgresql
装 MySQL:
sudo apt update
sudo apt install -y mysql-server
sudo mysql_secure_installation
# 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 调整 innodb_buffer_pool_size
sudo systemctl restart mysql
装完别急着上线,先做三件事:① 改默认监听,只允许应用机通过内网连,别把 3306/5432 裸到公网;② 调好缓冲池比例(前面表格照填);③ 建一个专用低权限账号给应用用,别用 root/admin 直连。应用连接串填数据库 VPS 的内网 IP,延迟低又安全。记得开防火墙只放行应用机 IP 和必要端口。
备份与高可用:pg_dump / mysqldump / 快照 / 副本即热备
数据库最怕的不是慢,是没备份。三层备份叠加最稳。
逻辑备份:pg_dump / mysqldump 定期导出 SQL,方便跨版本恢复、单表还原。
pg_dump -U postgres 你的库 > backup_$(date +%F).sql
mysqldump -u root -p --single-transaction 你的库 > backup_$(date +%F).sql
快照:VPS 提供的磁盘快照,能秒级回到某个时间点,适合作为「兜底」。但快照依赖同一存储,最好再异地存一份。
副本即热备:前面讲的主从,从库本身就是持续更新的备份,主库挂了从库能顶。把这三层组合起来:每天逻辑备份 + 定期快照 + 一台从库,基本能睡安稳觉。
注意:只做快照不做逻辑备份是常见误区,因为快照恢复的是整盘状态,想单独捞一张误删的表会很麻烦。逻辑备份和快照都要有,且备份文件传到另一台机器或对象存储,别和数据库同机,否则盘坏了备份一起没。
自己动手验证:压测磁盘 IO 与缓存命中率
机器到手先压一轮,确认买到的 NVMe 不是缩水盘。用 fio 测随机读(数据库典型负载):
fio --name=randread --ioengine=libaio --rw=randread \
--bs=4k --numjobs=4 --size=1G --runtime=60
看输出的 IOPS 和延迟,对照商家宣称值,明显偏低就说明 IOPS 被共享池摊薄了,考虑换独享配额机型。数据库层也要看缓存命中率:PostgreSQL 查 pg_stat_database 的 blks_hit / (blks_hit + blks_read),命中率低于 99% 说明内存不够、该加 RAM 或调大 shared_buffers;MySQL 看 Innodb_buffer_pool_read_hit,同理。命中率低 = 回盘多 = 慢,是最该优先解决的信号。
风险提示:混布坑、共享 IOPS、跨公网复制
几个高频坑,落地前先记牢。
- 数据库与 Web 混布:慢查询拖垮全站、互相抢内存 IO,前面已讲透,能拆就拆。
- 用 SATA SSD / HDD 跑生产库:并发稍高即 IO 瓶颈,查询卡成狗。
- 共享 IOPS 池:邻居高 IO 时你的库变慢,选独享 NVMe 配额更稳。
- 内存太小、缓冲池覆盖不了热数据:疯狂回盘、查询慢,加内存立竿见影。
- 主从跨公网复制:延迟高且不安全的场景应避免,强烈建议同机房内网复制。
- 从库忘了 read_only=ON:误写导致主从不一致,排查起来要命。
- 只做快照不做逻辑备份:想单表恢复时抓瞎。
还有个加分项:ECC 内存和 RAID(RAID1/RAID10)对数据完整性很友好,属于高可用投入,预算允许就上。合规上,本文只讲合规业务的数据库(建站、电商、分析),不涉及任何翻越网络审查用途。
结语:把数据库当心脏来养
回到开头:数据库是业务心脏。把它从 Web 机拆出来独立部署,配上 NVMe、大内存、正确的缓冲池比例,必要时上主从读写分离,再叠三层备份——这一套下来,查询稳了、扩展有路、出事能恢复。成本上,一台十几到几十块月付的独立数据库 VPS,换来的是远比混布省心的稳定性,对前后端分离后的业务是必选项而非可选项。
落地建议:先用 Contabo/CloudCone 这类高内存低价机型起一台 8 GB 的独立库,调好缓冲池、只允许应用机内网连;等业务读压上来了,加一台从库做读写分离;永远记得三层备份和命中率监控。把数据库当心脏来养,业务才跑得动。