2026 独立数据库 VPS:MySQL/Postgres 的磁盘 IO、内存与备份怎么选

前后端分离后数据库该独立部署。本文讲清 NVMe IO 对查询性能的决定作用、InnoDB Buffer Pool 与 shared_buffers 的内存比例、主从读写分离最低配置,并横向对比 Vultr、Contabo、CloudCone,帮你把数据库当心脏来养。

延伸阅读

更多相关攻略推荐:2026 独立站 PCI-DSS 自查清单:SAQ A 还是 A-E2026 只选月付 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 SSDSATA SSDHDD 机械盘
连接方式直连 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_sizePG 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 横向对比

本文相关的三家是 VultrContaboCloudCone,都适合做独立数据库(价格以商家页面为准)。

商家适合档位(示意)内存 / 存储要点付款与退款
Vultr2 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 RAID1log-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 的独立库,调好缓冲池、只允许应用机内网连;等业务读压上来了,加一台从库做读写分离;永远记得三层备份和命中率监控。把数据库当心脏来养,业务才跑得动。