引言
选择托管 MySQL 平台并非只是寻找最低月费那么简单。高可用、读副本、IOPS、备份、私有网络、监控以及连接管理的成本往往超过基础实例本身。本指南将对比五种不同架构模型的平台——基于 Vitess 的分片、自动扩缩的 Aurora、超大规模云厂商托管 MySQL 以及多云托管的开源方案——帮助 Node.js SaaS 团队基于真实的成本估算做出生产级决策。
本文涉及的平台包括:PlanetScale Vitess、Amazon Aurora MySQL Serverless v2、Google Cloud SQL for MySQL、Azure Database for MySQL 灵活服务器以及 Aiven for MySQL。定价信息基于 2026 年 7 月 12 日查询的官方页面,购买前请务必确认当前价格、区域可用性和套餐限制。
快速结论
| 平台 | 最佳场景 | 定价模式 | 核心优势 | 主要权衡 |
|---|---|---|---|---|
| PlanetScale Vitess | 需要横向分片和高连接数的 SaaS 产品 | 基于资源的集群、VTGate、存储、出口流量及附加组件 | 兼容 MySQL 的 Vitess 架构,附带数据库工作流工具 | 与传统独立 MySQL 服务器不完全相同 |
| Amazon Aurora MySQL Serverless v2 | 负载波动的 AWS 原生工作负载 | 按 ACU 小时计费,外加存储、I/O、备份和数据传输 | 自动扩缩,深度集成 AWS 服务 | 计费维度多,且存在非零的最低容量 |
| Google Cloud SQL for MySQL | 已使用 Google Cloud 的团队 | vCPU、内存、存储、网络、高可用及版本定价 | 标准的 MySQL,享受承诺使用折扣 | 读副本和高可用会显著推高实际成本 |
| Azure Database for MySQL 灵活服务器 | 需要私有网络的 Azure 原生 SaaS | 可突发、通用或内存优化计算层级,另加存储和 IOPS | 灵活的规格、启停机制及 Azure 生态整合 | 成本因区域、层级、IOPS、备份和预留策略差异很大 |
| Aiven for MySQL | 希望获得打包托管运维的多云团队 | 提供免费和固定入门套餐,随后为更大型方案 | 多云可移植性和低成本的开发人员套餐 | 从入门套餐跳到生产高可用套餐时价格显著上升 |
对于小型常规工作负载,Aiven 提供了简单的起点。若架构以 AWS、Google Cloud 或 Azure 为中心,采用其原生数据库服务通常能减少网络和身份管理的复杂性。只有当横向扩展和 Vitess 成为刚需而非远期愿景时,PlanetScale 才具备差异化优势。
对比托管 MySQL 时需要关注什么
高可用与恢复
高可用确保在实例或区域故障时服务仍能运行。备份和按时间点恢复(PITR)用于防范意外删除、错误部署和数据损坏。每个生产系统两者都需要。
承诺使用前,请验证负载下的故障转移行为、备用实例的计费方式、备份保留窗口、跨区域恢复选项以及实际的恢复速度。
连接限制与连接池
Node.js 应用通常使用连接池。如果十个应用实例各打开 50 个连接,数据库就已收到 500 个连接,还没算上后台作业、数据迁移、管理工具和故障转移余量。
// 使用 mysql2 的安全连接池配置(注释已翻译)
import mysql from 'mysql2/promise';
const pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
waitForConnections: true,
connectionLimit: 20, // 每个实例保守限制
queueLimit: 0, // 无限制队列(实践中通常快速失败)
enableKeepAlive: true,
keepAliveInitialDelay: 10000,
});
Serverless 函数在并发调用时若每个调用都打开新的连接池,可能引发连接风暴。请使用托管数据库代理(如 RDS Proxy、Cloud SQL Auth Proxy)或对每个函数实例强制实施严格的连接池上限。
读扩展与写扩展
读副本可用于分流报表、仪表盘和最终一致性读流量,但并不能提升单一主库的写入能力。PlanetScale 的 Vitess 架构旨在通过横向分片解决写入扩展问题。若单主库足以应对写入吞吐量,超大规模云厂商的服务就更简单。
ORM 兼容性
Prisma、Drizzle、Sequelize、TypeORM、Knex 和 mysql2 均可搭配托管 MySQL 使用,但团队应测试:
- 针对目标引擎版本的数据迁移
- 事务隔离级别与预处理语句的处理
- 故障转移重连行为及连接错误的暴露方式
- 在使用读副本时的读写路由
- 时区处理及特定引擎的 SQL 特性
// 带连接池和只读副本感知的 Prisma 数据源(注释已翻译)
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
// 通过中间件或独立客户端使用只读副本
const replicaUrl = process.env.DATABASE_REPLICA_URL;
平台对比
PlanetScale Vitess
PlanetScale 提供一个基于 Vitess 的 MySQL 兼容平台。Vitess 在 MySQL 实例之上增加了路由、分片和控制层,架构上有别于独立 MySQL 服务器。
定价要素(发布前请确认):实例大小、VTGate 配置、超出首 10 GB 的存储、需要至少 3 个实例才能实现高可用的生产分支,以及超出包含的 100 GB 的出口流量。
PlanetScale 适合真正需要横向分片、高连接规模和数据库部署工作流分支的团队。其权衡在于架构本身:请验证事务、迁移、查询模式和连接行为,而非假定所有常规 MySQL 模式都能原封不动地工作。
Amazon Aurora MySQL Serverless v2
Aurora 深度集成 VPC、IAM、CloudWatch、RDS Proxy、AWS Backup、Lambda、ECS 和 EKS。Serverless v2 按 Aurora 容量单位(ACU)进行扩缩。
示意定价(美国东部,发布前请确认):Aurora 标准版每 ACU 小时 $0.12,Aurora I/O 优化版每 ACU 小时 $0.156,最低 0.5 ACU。存储、标准版下的 I/O、备份、读副本和跨可用区流量都会增加总成本。
Aurora 适合负载可变且要求私有网络的 AWS 原生应用。主要风险在于想当然地认为自动扩缩能保证低成本——持续的容量和密集的 I/O 可能导致有必要与预配置实例进行对比。
// 通过 RDS Proxy 和 IAM 认证连接 Aurora(注释已翻译)
import { Signer } from '@aws-sdk/rds-signer';
const signer = new Signer({
hostname: process.env.RDS_PROXY_ENDPOINT,
port: 3306,
username: 'iam_user',
});
const token = await signer.getAuthToken();
const connection = await mysql.createConnection({
host: process.env.RDS_PROXY_ENDPOINT,
user: 'iam_user',
password: token,
ssl: { rejectUnauthorized: true },
});
Google Cloud SQL for MySQL
Cloud SQL 提供常规的托管 MySQL,附带维护、备份、读副本、高可用、私有网络以及深度 Google Cloud 集成。Google 目前区分 Enterprise 和 Enterprise Plus 两个版本。
示意定价(发布前请确认):Enterprise 版本起价为每 vCPU 小时 $0.0413 和每 GB 内存小时 $0.007,SSD 存储为每 GB 月 $0.17。Enterprise Plus 起价更高,并承诺更强的可用性 SLA。区域和版本对定价影响显著。
Cloud SQL 天然适合 Cloud Run、GKE 或 Compute Engine 工作负载。一年和三年承诺使用折扣有助于稳定生产负载,但估算时必须将高可用、读副本和连接管理成本纳入其中。
Azure Database for MySQL 灵活服务器
Azure 灵活服务器运行 MySQL 社区版,支持可突发、通用和内存优化三种计算层级,并提供 VNet 集成、防火墙控制的公共访问、读副本、自动备份、可配置 IOPS 以及启停功能。
关键成本杠杆:微软声明服务器停止时会停止计算计费,从而降低开发与预发布环境成本。确切价格取决于区域、层级、存储、IOPS、备份保留、高可用配置和预留实例。
Azure 适合需要私有 VNet 访问的 App Service、AKS、Functions 及虚拟机工作负载。可突发计算层级可能适用于开发或轻度负载,但生产规模设计必须考虑 I/O 和故障转移行为。
Aiven for MySQL
Aiven 提供跨多个云和区域的托管 MySQL,包含备份、PITR、读副本、加密、VPC 对等连接和监控集成。
当前公开套餐(发布前请确认):免费版(学习/评估),Developer 版每月 $5,Startup 版每月 $75 起,Business 版每月 $180 起。Aiven 宣称可预测的计费与 99.99% 运行时间 SLA,但请核实实际提供该 SLA 的套餐与拓扑结构。
Aiven 适合看重多云选择、打包运维、托管升级和可预测分档定价的团队。主要权衡在于从开发套餐到生产高可用套餐的价格跃升。
托管 MySQL 的真实成本构成
实例费用只是第一项。请按以下八个层面建模,得出切实的十二个月预测:
| 成本层面 | 应包含内容 |
|---|---|
| 计算 | vCPU、内存、ACU、突发积分或集群节点 |
| 高可用 | 备用实例与跨区域故障转移容量 |
| 存储 | 主数据、读副本、临时空间及增长预留 |
| I/O 与 IOPS | 读、写、预配置 IOPS 或 I/O 优化定价 |
| 网络 | 出口流量、私有端点、跨可用区与跨区域流量 |
| 备份 | 快照、PITR 日志、长期保留与导出 |
| 可观测性 | 查询洞察、日志、指标与第三方监控 |
| 运维 | 迁移、支持、事件响应与工程时间 |
请对比正常流量、峰值流量、故障转移负载以及十二个月的增长预期。一个每月 $50 的实例,加上高可用、备份、IOPS 和出口流量后,可能轻松变成每月 $300。
Node.js 连接与部署指南
使用有界连接池
每个长期运行的 Node.js 进程只创建一个共享连接池。设定最大连接数、获取超时、空闲超时以及等待连接的请求队列。
总连接预算 = (应用实例数 × 池上限) + 作业 + 迁移 + 管理工具 + 故障转移余量
区别对待 Serverless
在支持复用连接的运行时中,跨热调用复用连接。池大小保持保守(每个函数实例个位数)。考虑使用托管数据库代理(RDS Proxy、Cloud SQL Auth Proxy)进行连接多路复用。切勿为每个 HTTP 请求创建新的连接池。
将分析查询与事务分离
大批量导出和仪表盘扫描不应与面向客户的事务争抢资源。当报告体量增长时,将分析查询路由至读副本、数据仓库或独立的分析存储。
在负载下测试故障转移
托管的故障转移仍会引发连接错误与重试。记录连接池错误、事务失败、主机变化和查询延迟。上线前执行一次可控的故障转移与恢复测试。
// 记录池错误以便观察故障转移(注释已翻译)
pool.on('error', (err) => {
console.error('意外的池错误', {
code: err.code,
fatal: err.fatal,
message: err.message,
});
});
pool.on('acquire', (connection) => {
// 追踪连接获取情况,用于池大小调整
});
pool.on('release', (connection) => {
// 追踪释放情况,用于泄漏检测
});
决策框架
- 若确有横向分片和高连接规模的刚性需求,且能接受 Vitess 的架构差异,选择 PlanetScale Vitess。
- 对于已投入 VPC、IAM 和 CloudWatch 的可变 AWS 原生负载,选择 Aurora Serverless v2。
- 若需在 GCP 中使用常规 MySQL 并享受承诺使用折扣,选择 Google Cloud SQL。
- 若依赖 Azure 网络、运维工具链和微软云采购,选择 Azure 灵活服务器。
- 若追求多云可移植性与打包的托管开源运维,选择 Aiven。
在最终决定前,请使用接近生产的数据量、真实的连接数、故障转移与恢复测试、ORM 迁移执行以及十二个月总体成本模型来验证您的候选方案。
生产就绪检查清单
- 选择受支持且已知支持终止日期的 MySQL 版本
- 为所有数据库流量启用 TLS 与私有网络
- 凭证存储在机密管理器(AWS Secrets Manager、Google Secret Manager、Azure Key Vault、HashiCorp Vault)中
- 配置自动备份与按时间点恢复
- 上线前从备份执行一次完整恢复测试
- 为关键生产工作负载启用高可用
- 设定带获取超时和空闲超时的有界连接池
- 监控连接数、慢查询、存储利用率和 IOPS
- 在真实负载下测试故障转移并测量恢复时间
- 验证 ORM 迁移与事务在目标引擎上的行为
- 将报表与分析流量从事务流量中分离
- 记录读副本的一致性保证与维护窗口
- 预估跨可用区和跨区域网络费用
- 在尚未需要之前就编写好退出与迁移方案
按公司阶段的建议
初期 SaaS
除非 Vitess 或自动扩缩确实解决了已知且量化的痛点,否则选用小规模常规托管 MySQL 实例即可。Aiven Developer 或一个较小的云服务商原生实例或许已足够,但不要依赖未经过备份和可用性测试的免费套餐。尽早建立严格的连接池规范。
成长型 SaaS
优先考虑高可用、私有网络、按时间点恢复、查询监控和可预期的连接行为。使用真实的数据库大小、查询模式和流量特征对比服务商。建模时务必计入高可用、备份、IOPS 和出口流量,而非仅看基础实例价格。
企业或大规模平台
评估多区域恢复、合同 SLA、审计日志、加密控制、专属支持、复制延迟、写入扩展策略、连接代理以及迁移协助。当必须横向分片时,PlanetScale 的重要性会提升。若数据库需深度对齐某朵云的身份、网络与合规框架,超大规模云厂商服务仍是极具吸引力的选择。
总结
不存在普适的最佳托管 MySQL 平台。PlanetScale 在 Vitess 和横向扩展方面提供了最具差异化的架构。Aurora Serverless v2 对可变的 AWS 原生负载极具吸引力。Cloud SQL 和 Azure 灵活服务器 在各自云生态中提供熟悉的托管 MySQL 体验。Aiven 则带来可移植的托管服务体验和低成本的入门套餐。
请基于写入扩展需求、连接行为、云边界、可用性目标、恢复要求和总成本做出选择——而非只看标价。将故障转移、恢复、迁移和连接池测试视为采购标准,而非上线后的任务。基于真实数据和经测试验证的假设做出的数据库决策,将在生产环境中带来成倍的回报。