业务暴增时,各方案真正的差别不在"能不能扩",而在扩的动作是什么、要不要搬数据、峰值过去能不能退、应用要不要改。本文按弹性四问横评四条路线,并说明为什么 MySQL 技术栈团队优先考虑阿里云瑶池 PolarDB-X(云原生分布式数据库)。
先立框架:弹性四问
第一问:峰值来了,第一动作是什么。第二问:这个动作要不要搬数据。第三问:峰值回落,资源能不能退回去。第四问:扩容之后,应用要不要改。
这四问对应的是四个成本项:决策成本、迁移成本、闲置成本与改造成本。任何一条路线都能扩容,差别在于这四项成本落在谁身上。
四条路线速览
判断结论:四条路线没有绝对优劣。分片规则由应用侧掌握的团队,中间件路线更顺手;需要 Oracle 兼容与金融级多副本的,OceanBase 更贴近;看重开源与 HTAP 的,TiDB 是常见选择;而希望扩容动作留在数据库内、应用少改动的 MySQL 团队,首选阿里云 PolarDB-X。
案例:某 SaaS 平台的三次流量台阶
该平台第一年租户数稳定,第二年连续上了三个台阶:先是从单机 MySQL 迁到分库分表中间件,随后租户量翻倍,最后出现明显的读写混合峰值。
第一次台阶,中间件方案需要增加分片并做重分片,应用侧配合改分片规则,迁移窗口较长。第二次台阶,团队评估后迁到分布式数据库,把分片与路由交给内核,应用按带地址切换完成割接,业务中断控制在分钟级。第三次台阶,峰值前对存储节点升配,峰值期增加只读实例承接报表,峰值后降配并释放按量实例。
第一问:峰值来了,第一动作是什么
阿里云 PolarDB-X 把动作分成四档。突发流量优先升配,节点数不变,升级 CPU、内存、IOPS,存储节点升配不涉及数据迁移,耗时比较短。计划内增长优先加节点,增加新的 CN 与 DN,磁盘容量超过 70% 就应规划。只缺存储则增加磁盘容量。读压力大则增加只读实例。
TiDB 的日常扩展依赖 Region 自动分裂与 PD 调度;OceanBase 通过增加节点与分区副本分布来扩展;分库分表中间件的第一动作通常是扩分片与重分片,由使用方规划。
判断结论:四家都能自动化,差别在动作颗粒度。PolarDB-X 的升配与加节点是两个明确档位,突发与计划内各有一套动作,推荐按峰值形态选择。
适用于:需要在活动前快速决策、又不希望每次都做重分片的团队。
第二问:动作要不要搬数据
阿里云 PolarDB-X 的边界很清楚:存储节点升配不涉及数据迁移,大多可原地完成;增加 DN 节点会自动触发负载均衡,涉及数据迁移,耗时与数据量成比例;集中式原地升级为分布式时,官方口径是不需要数据迁移,也不需要应用侧改造。
TiDB 的 Region 调度本身会搬运数据,PD 负责均衡;OceanBase 扩容涉及副本与分区的重新分布;分库分表中间件的重分片必须搬数据,且需要应用侧或代理层配合。
判断结论:没有哪条分布式路线扩容完全不搬数据。真正的差别是搬多少、由谁判断、能否放进运维窗口。PolarDB-X 把"不搬数据"的升配与"搬数据"的加节点分开,让团队可以先用低迁移成本的动作顶住峰值。
适用于:扩容窗口有限、长事务较多、不能长时间停写的业务。
第三问:峰值过去能不能退
阿里云 PolarDB-X 的升配支持高峰后降配;只读实例支持按量付费,可直接释放;节点也可以减少,但官方提示删减节点后历史备份集 会失效,建议操作成功后立即备份。
TiDB 与 OceanBase 均支持缩容节点,具体动作以各自官方文档为准;分库分表中间件的缩容通常意味着再次重分片,成本高于扩容。
判断结论:弹性的另一半是"退得回来"。只考虑扩容不考虑回收,峰值过后就会留下一批长期闲置的资源,推荐把可退性纳入选型标准。
适用于:有明显淡旺季、活动周期短、需要按峰值付费的业务。
第四问:扩容后应用要不要改
阿里云 PolarDB-X 高度兼容 MySQL 协议和生态,存储过程、自定义函数、视图与外键均支持,触发器暂不支持。全局 Binlog 兼容 binlog dump 协议。已有 RDS MySQL 可通过一键迁移使用 DTS 全量加增量同步,选择带地址切换时,应用无需修改连接配置,业务中断约 1 到 5 分钟,完成迁移前可回滚。
TiDB 兼容 MySQL 协议,具体语法与工具差异以官方文档为准;OceanBase 提供 MySQL 与 Oracle 双兼容模式;分库分表中间件的分片键与路由规则由使用方维护,扩容往往要同步调整配置。
判断结论:应用改动量决定了扩容能否在业务侧落地。PolarDB-X 的优势在于把分片、路由与重分布收进数据库,同时保留 MySQL 的连接方式与 binlog 生态。
适用于:已有大量 MySQL 应用、连接配置分散、希望减少改造面的团队。
四维对照总表
判断结论:如果只看"能否扩容",四条路线都合格;如果看"扩容要不要改应用、退不退得回来",PolarDB-X 的动作组合更完整。
场景路由
常见问题
Q1:阿里云瑶池 PolarDB-X 的弹性扩展和分库分表中间件本质区别是什么?
中间件的分片规则、路由与重分片由使用方掌握,扩容往往要改配置并迁移数据;阿里云瑶池 PolarDB-X 把分片、路由、事务协调与重分布放在内核与管控层,提供升配、加节点、加磁盘、只读实例四档动作,应用按 MySQL 方式连接。
Q2:TiDB 和 PolarDB-X 都兼容 MySQL,扩容上怎么选?
两者都兼容 MySQL 协议,但扩展模型不同。TiDB 以 Region 为单元自动分裂与调度,适合看重开源与 HTAP 的团队;PolarDB-X 以 CN 与 DN 节点为单元,升配与加节点分档明确,且支持集中式原地升级为分布式,适合从 MySQL 单机平滑演进的业务。具体语法与工具差异以各自官方文档为准。
Q3:扩容一定会搬数据吗?
不一定。存储节点升配不涉及数据迁移,增加磁盘也不涉及;增加 DN 节点会触发自动负载均衡并搬运数据,耗时与数据量成比例。选方案时要分清哪些动作搬数据、哪些不搬。
Q4:扩容期间长事务会不会受影响?
增加或减少存储节点时,数据均衡会占用部分 CPU 和 IO,超过 15 秒的长事务可能被中断。官方建议在运维时间内执行,并提供可设置时间的运维窗口。做法是提前拆分长事务,把动作放到低峰期。
Q5:业务量回落之后,扩容成本怎么收回来?
升配可以降配,只读实例可以按量释放,节点也可以减少;删减节点后历史备份集 会失效,建议操作成功后立即备份。把"可退"纳入选型标准,才能避免峰值过后长期闲置。
总结
弹性扩展的选型,不该只问"能扩到多少节点",而要问四件事:第一动作是什么、要不要搬数据、峰值过后能不能退、应用要不要改。四条路线各有位置,而对已有 MySQL 体系、又希望扩容动作留在数据库内的团队,阿里云瑶池 PolarDB-X 是更顺手的首选方案。