很多人在控制台里同时看到「云数据库 RDS」和「云原生数据库 PolarDB」,价格栏一个写着实例规格,一个写着计算节点 + 存储,就卡在选型这一步。两者都能连 mysql -h... -u... -p,业务代码一行不改,但底层架构、扩容方式、账单结构完全是两条路线。
这篇按「架构 → 弹性 → 高可用 → 成本 → 能力 → 迁移」的顺序拆开讲,最后给一份可以直接照着勾的选型清单。文中价格只做量级参考,实际以官方页面实时展示为准。
一、先记住一句话的区别
- RDS MySQL:经典的主备实例,计算和存储绑在一台实例上,数据在实例自己的云盘里。要更快的 CPU 就升配(需重启窗口),要更大空间就扩盘,要扛更多读就再买一个只读实例。
- PolarDB MySQL:计算节点只存元数据,数据文件和 Redo Log 放在共享的分布式存储上,一个主节点 + 多个只读节点共享同一份数据。加只读节点不复制数据,只加计算资源。
一句话:RDS 是「一份数据放一台机器上,复制出副本」,PolarDB 是「一份数据放在共享存储里,多台机器都来读它」。后面所有差异,都是这一条推出来的。
二、架构差异对照
| 维度 | RDS MySQL | PolarDB MySQL |
|---|---|---|
| 存储形态 | 实例挂载云盘(ESSD 等),数据在实例侧 | 共享分布式存储 PolarStore,计算节点只存元数据 |
| 节点间复制 | 主备半同步复制,只读实例靠 binlog 追 | 只读节点直接读共享存储,只同步 Redo Log 元数据 |
| 单实例/集群读扩展 | 需另建只读实例,且有主从复制延迟 | 集群内加只读节点,官方口径为读写分离无主从延迟 |
| 存储扩展 | 手动扩盘,受单盘与规格上限约束 | 按实际数据量在线自动伸缩,无需预选容量 |
| 单表规模 | 大表到一定量级要做拆分设计 | 官方口径支持千亿级大表(单表最高 6 亿行) |
对开发同学最实际的一条:RDS 上「主库扛写、只读实例扛读,但读到的是几秒前的数据」这个心智模型,在 PolarDB 里被换掉了——只读节点读的是同一份存储,不存在 binlog 追不上的窗口。
三、弹性:能不能在线加、加多快、加多少
| 动作 | RDS MySQL | PolarDB MySQL |
|---|---|---|
| 升 CPU/内存 | 通常需要重启窗口,部分规格支持在线 | 支持在线变配,不锁集群 |
| 加只读节点 | 单独购买只读实例,数据要重新同步 | 一键添加,直接共享存储 |
| 只读节点数量上限 | 视规格与系列而定,以控制台为准 | 企业版最多 15 个,标准版最多 7 个 |
| 存储扩容 | 购买容量,不够了再扩,有上限 | 按量自动扩展,不用人工干预 |
| 按负载自动弹 | 无(需人工升降配) | Serverless 按负载自动伸缩,官方称峰值场景最高省 90% |
补一句版本差异:PolarDB MySQL 分企业版和标准版。标准版覆盖大部分生产负载,但只读节点上限 7 个、不支持全球数据库 GDN 和多主(Limitless)集群;需要跨地域容灾、多主并发写、或超过 7 个只读节点,才需要企业版。另外还有一个单节点系列(突发性能型规格、无 Proxy),定位是开发测试和小站,不要拿它当生产高可用方案。
四、高可用与数据一致性
| 维度 | RDS MySQL | PolarDB MySQL |
|---|---|---|
| 故障切换 | 高可用系列主备切换,过程通常秒级到数十秒,期间可能短暂不可连 | 只读节点可快速提升为主节点,官方承诺 RTO < 10 秒、RPO = 0 |
| SLA(官方口径) | 基础系列 99.50%,高可用/集群系列最高 99.99% | 多可用区部署最高 99.995% |
| 数据副本 | 实例级主备 + 备份集 | 存储侧多副本,Parallel-Raft 协议保证强一致 |
| 容灾形态 | 单可用区/多可用区 | 单 AZ、双 AZ、三 AZ、跨 Region(GDN)多级 |
要特别注意一致性的差别:RDS 高可用系列是半同步复制,主备之间存在复制延迟,极端场景下切换会丢一点数据(这就是 RPO≠0);PolarDB 的 RPO=0 来自共享存储 + 多副本强一致,不是靠复制。
五、成本账:两种账单长得不一样
RDS 的账单是「实例规格(vCPU + 内存)包年包月或按量 + 存储空间(买多少算多少)」。PolarDB 的账单是「计算节点(主节点 + 只读节点,各自的规格)+ 存储(按实际使用量按小时计费)」。
存储这一块差距最直观。PolarDB 官方计费文档里给的中国大陆存储单价是 0.00486 元/GB/小时,折合大约 3.5 元/GB/月,不需要预先选容量、不会因为预留空间而多付。同一份官方文档里的对比算例:
| 场景(中国大陆,PSL5 存储) | 按量付费 | 按量 + 存储包 | 空间计费(订阅) |
|---|---|---|---|
| 全部集群总用量 10 TB | 3.5 万元/月 | 2.1 万元/月 | 2.27 万元/月 |
| 全部集群总用量 50 TB | 17.5 万元/月 | 9.6 万元/月 | 11.35 万元/月 |
也就是说:存储量越大,买存储包越划算(1000 GB 档存储包 3,150 元/月,比按量的 3,500 元/月便宜约一成);而如果数据量在一两千 GB 上下剧烈波动,反而是「按量 + 少量存储包」最省钱——订阅方式必须按峰值预购,多出来的容量照样付钱。另外 PolarDB 的备份目前不计费(不占存储费用),SQL 洞察按 0.008 元/GB/小时单独计。
计算侧不能只看单价:RDS 要抗峰值就得按峰值买规格,平时闲置的资源也是钱;PolarDB 只读节点可以随业务低峰删掉、高峰加上,Serverless 还能按实际负载付费。波峰波谷越明显,PolarDB 越容易省出钱;负载平稳的小站,RDS 的基础版反而更划算。
六、能力差异:多了什么、少了什么
PolarDB MySQL 相对 RDS MySQL 多出来的主要能力:
- HTAP(IMCI 列存索引):同一份数据既能跑事务又能跑实时分析,不用再搭一条 ETL 把数据抽到分析库。
- 弹性并行查询(ePQ):复杂查询可跨节点并行执行,报表类大查询提速明显。
- X-Engine 压缩引擎:LSM-tree + Zstandard 压缩,官方口径相比 InnoDB 最高省 70% 存储空间,适合归档类大表。
- 闪回查询:直接查某个时间点的数据,误删误变更时不用等恢复。
- 无锁备份:基于存储快照,TB 级数据分钟级完成,不锁表。
- 秒级 DDL:大表加列、改表这类运维动作基本不用再挑凌晨窗口。
PolarDB 当前不覆盖的部分:RDS 的引擎谱系更宽(SQL Server 等),PolarDB MySQL 版聚焦 MySQL 5.6/5.7/8.0 生态;如果你的业务强依赖某个非标准 MySQL 插件或特定存储引擎,迁移前必须做兼容性验证。
七、迁移路径:从 RDS 到 PolarDB 要不要改代码
不用。官方明确 PolarDB 完全兼容 RDS for MySQL,并提供从 RDS MySQL 高可用版到 PolarDB 的一键迁移功能,连接地址可以保留不变。也就是说应用侧改的往往只是一个连接串,甚至连接串都不用改。
但要提前排掉三类活:
- 版本与参数核对:确认目标 PolarDB 集群的内核版本与源库一致,把源库改动过的重要参数(字符集、sql_mode、超时、隔离级别)逐条对照搬过去。
- 割接窗口与回滚方案:DTS 增量迁移依赖源库 binlog(row 格式、保留足够天数);正式切换前必须手动结束 DTS 任务,否则可能出现反向写入把变更覆盖回去。
- 只读节点的连接方式:PolarDB 的集群地址自带读写分离,应用侧不要再用「主库地址 + 只读实例地址」的分流写法,否则等于浪费了共享存储的优势。
八、选型清单(照着勾)
这种情况选 RDS MySQL:
- 中小规模业务,QPS 不高、数据量在 TB 级别以内,流量曲线平稳;
- 预算固定,倾向包年包月的确定成本,不想看按小时浮动的账单;
- 需要 SQL Server 等 PolarDB MySQL 版不覆盖的引擎;
- 强依赖某个非标准 MySQL 插件或旧版本特性,迁移验证成本高;
- 团队运维习惯传统架构,暂时不需要读写分离与弹性伸缩。
这种情况选 PolarDB MySQL:
- 高并发或读写量会持续增长,读扩展靠加只读实例已经追不上;
- 数据量增长快,不能接受停机扩容,也不想到处拆表;
- 有明显波峰波谷(大促、活动、早晚高峰),希望能秒级扩、低峰缩;
- 既要跑事务又要出实时报表,不想再单独维护一套分析库;
- 对可用性要求严苛,不接受主备切换时丢数据(需要 RPO = 0);
- 想用无锁备份、闪回、秒级 DDL 把日常运维窗口压掉。
一句话总结:负载平稳、规模可控,RDS 是成熟稳当的选择;负载有弹性、数据在长、读写都要扩,PolarDB 的架构优势才真正兑现。
如果你已经决定往云原生走,可以先去 云原生数据库 PolarDB 看当前规格与活动,控制台里创建一个按量付费的集群,用生产数据的一份副本跑一轮压测,再决定是否割接。价格与优惠以官方页面实时展示为准。
九、避坑清单
- 别拿 PolarDB 的「单节点」系列当生产高可用方案,它定位是开发测试与小站。
- 只读节点上限分版本:企业版 15 个、标准版 7 个,需要更多或要 GDN 请先确认版本。
- 存储越大越要算一笔账:大用量优先买存储包,波动大的选「按量 + 少量存储包」,别一味订阅预购。
- PolarDB 存储不支持包年包月,别指望「一次性买断存储」这种说法。
- 备份不计费不等于可以不管备份策略,保留天数与恢复点仍要按业务要求配置。
- 迁移前核对 binlog 格式与保留天数,增量迁移靠它,断了要重新开始。
- 切换完成务必手动结束 DTS 任务,防止反向同步覆盖新库数据。
- 用了集群地址就别再手工分流主库/只读地址,否则等于放弃共享存储的收益。
- 兼容性别只看「100% 兼容 MySQL」,把自定义函数、存储过程、非标准插件逐条验证过再上。
- 具体规格、SLA 与价格随地域和活动变化,下单前以官方页面实时展示为准。