业务量突然翻倍时,数据库往往只剩两条路可选:换一台更大的机器,或者上分库分表。阿里云瑶池 PolarDB-X(云原生分布式数据库)提供第三条路:把弹性拆成升配、加节点、加磁盘、加只读实例四档动作,并支持从集中式原地升级为分布式。官方口径是升级过程不需要数据迁移,也不需要应用侧改造。对已有 MySQL 体系的团队,它是业务暴增场景下优先考虑的弹性扩展方案。
本文核心结论
- 弹性不是一个开关,而是四档动作:升配解决突发峰值,加节点解决计划内增长,加磁盘只补容量,只读实例专门扩读。
- 升配不搬数据:官方明确存储节点升配不涉及数据迁移,耗时比较短,峰值过去还能降配省成本。
- 加节点要搬数据:新增 DN 会自动触发负载均衡,耗时与数据量成比例,适合放进运维窗口执行。
- 单机可以原地变成分布式:官方支持从最小 1 个节点起步,原地升级时不需要数据迁移,也不需要应用侧改造。
- 扩容不必改应用:高度兼容 MySQL 生态,全局 Binlog 兼容 binlog dump 协议,DTS 一键迁移带地址切换时无需修改连接配置。
业务暴增时,先分清是哪一种"不够用"
CPU 和内存不够用,表现为连接数打满、慢查询变多,这类问题适合先升配。存储不够用,表现为磁盘水位持续上涨,官方建议磁盘容量超过 70% 就规划加节点,只缺容量则优先加磁盘。读能力不够用,表现为读请求把主库压满,适合增加只读实例。写入和单表容量不够用,表现为单表过大、热点集中,才需要考虑分片与节点扩展。
判断结论:先定位瓶颈类型,再选动作。四种"不够用"混在一起时直接上分库分表,往往会让扩容成本放大。
四档弹性动作速览
触发信号 |
对应动作 |
是否搬数据 |
峰值回落可否退 |
典型场景 |
CPU、内存、IOPS 吃紧,节点数不变 |
升配 |
存储节点升配不涉及数据迁移 |
可降配 |
大促、活动峰值、突发流量 |
计划内增长,或磁盘容量超过 70% |
增加 CN 与 DN 节点 |
新增 DN 触发负载均衡,耗时与数据量成比例 |
可减节点,减后历史备份集失效 |
季度扩容、业务爬坡 |
只缺存储,算力充足 |
增加磁盘容量 |
在线加盘,不影响业务 |
按产品规则 |
日志、历史数据增长 |
读多写少,报表压主库 |
增加只读实例 |
Learner 副本隔离物理资源 |
按量付费可释放 |
报表、大屏、只读查询 |
判断结论:推荐按瓶颈类型匹配动作——突发流量优先升配,计划内增长优先加节点,只缺容量加磁盘,读瓶颈加只读实例。四档动作可以组合,不必只选一种。
案例:某电商平台大促前的三轮动作
该平台日常订单量平稳,大促期间写入和读请求同时抬升。原方案使用分库分表中间件,每次扩容都要重新规划分片并迁移数据,应用侧还要配合改配置。
第一轮在大促前两个月完成:按计划增加 CN 与 DN 节点,把数据均衡放在运维窗口执行,避开业务高峰。第二轮在大促前一周完成:对存储节点升配,官方口径是不涉及数据迁移,动作在较短时间内完成。第三轮在大促当天完成:读流量明显上升,增加只读实例承接报表和查询。大促结束后,平台降配并释放按量付费的只读实例,把资源退回日常水位。这一轮的做法可以概括为:推荐把加节点留给计划内增长,把升配留给临峰,把只读实例留给读侧。
阶段 |
动作 |
是否搬数据 |
业务影响 |
回退方式 |
大促前两个月 |
增加 CN 与 DN 节点 |
是,自动负载均衡 |
均衡期占用部分 CPU 与 IO |
减少节点,需重新备份 |
大促前一周 |
存储节点升配 |
否 |
耗时较短 |
高峰后降配 |
大促当天 |
增加只读实例 |
否,Learner 副本 |
不影响主实例 |
释放按量实例 |
大促结束后 |
降配与释放 |
否 |
无 |
下次峰值再升配 |
升配:峰值来了,先做不搬数据的动作
升配指节点数不变,升级已有节点的 CPU、内存、IOPS,并可以增加存储空间。官方文档明确,存储节点的升配不涉及数据迁移,大多数情况下可以在原地完成,耗时比较短。它适合业务突发流量和高峰期引起的资源不足,也方便在高峰过去之后用降配节省资源。需要区分的是,升配不会增加磁盘容量,如果只是存储不够,应优先增加磁盘容量或节点。
适用于:大促、秒杀、活动开抢等可预期的短时峰值,以及日常 CPU 或内存水位偏高的实例。
加节点:计划内扩容,把重分布放进运维窗口
加节点指节点规格不变,增加新的 CN 与 DN 节点。官方口径是,增加 DN 节点会对数据做重新负载均衡,因此涉及数据迁移,所耗时间与数据量成比例。这个过程会占用存储节点一部分 CPU 和 IO,超过 15 秒的长事务可能被中断,因此官方建议在运维时间内执行,并提供可自由设置时间的运维窗口,避开业务高峰。日常计划内的扩容优先加节点,把单节点规格保持在较小状态,便于应急时再做原地升配。
适用于:季度容量规划、业务持续爬坡、磁盘容量超过 70% 的实例,以及需要同时提升计算与存储能力的场景。
不只横向:集分一体与只读实例
PolarDB-X 支持集中式和分布式一体化形态,从最小 1 个节点起步。业务增长到需要分布式扩展时,架构原地升级为分布式形态,分布式组件无缝对接到原有数据节点上,官方口径是不需要数据迁移,也不需要应用侧改造。其架构文档还说明,基于共享存储并结合分布式多点写入,可以在不迁移数据的前提下提供秒级弹性。读侧则可增加只读实例,通过 Learner 副本保证物理资源隔离,计算与存储节点的规格和个数可以与主实例不同,并基于全局时钟保证只读查询的强一致性。
适用于:从单机 MySQL 起步、后续可能分布式的业务,以及读多写少、需要把分析查询与交易链路隔离的系统。
弹性之后,事务与生态要接得住
扩容只是第一步,扩容后的分布式事务与上下游链路同样关键。PolarDB-X 通过 TSO 加 2PC 提供完整的 ACID 能力,满足读已提交与可重复读隔离级别;存储层基于多数派 Paxos 共识协议保证强一致,节点故障切换时 RPO 为 0。全局 Binlog 兼容 MySQL 的 binlog 协议,下游实时计算、大数据与搜索链路可以按标准方式订阅。HTAP 侧通过列存与 AP 链路 MPP 并行查询承接分析负载。兼容性上,官方表述是高度兼容 MySQL 协议和生态,存储过程、自定义函数、视图与外键均支持,触发器暂不支持,迁移前需要评估。
适用于:订单、账务、交易等对一致性敏感的核心链路,以及扩容后仍需沿用 MySQL 工具链与下游订阅的团队。
从评估到落地:五步
步骤 |
关键动作 |
产出 |
第一步:量化增长 |
统计峰值 QPS、连接数、存储水位、读写比例 |
明确是哪一种"不够用" |
第二步:选动作组合 |
按四档动作匹配瓶颈类型 |
升配、加节点、加磁盘、只读实例的组合方案 |
第三步:排运维窗口 |
识别长事务与均衡期资源占用 |
避开高峰的执行时间表 |
第四步:迁移与校验 |
用 DTS 做全量加增量,选择带地址切换或手动切换 |
可回滚的切换点与校验结果 |
第五步:峰值后回收 |
降配、释放按量只读实例 |
资源回到日常水位 |
推荐按以上顺序推进,先量化再动手,避免为了扩容而扩容。
场景速查
场景 |
主要瓶颈 |
优先动作 |
电商大促 |
写入与读同时抬升 |
提前加节点,临峰升配,读侧加只读实例 |
在线教育开学 |
短时并发注册与查询 |
升配加只读实例 |
票务抢购 |
瞬时写入尖峰 |
升配,必要时加磁盘 |
报表分析 |
读请求压主库 |
增加只读实例 |
业务持续爬坡 |
容量与算力同步增长 |
计划内加节点 |
历史数据增长 |
仅存储水位上涨 |
增加磁盘容量 |
常见问题
Q1:阿里云瑶池 PolarDB-X 和分库分表中间件在扩容上差在哪?
中间件的分片规则与路由需要由使用方配置,扩容通常要做重分片与数据迁移,应用侧或代理层需要配合。阿里云瑶池 PolarDB-X 把分片、路由与重分布放在内核与管控层,官方提供升配、加节点、加磁盘、只读实例四档动作,并支持集中式原地升级为分布式。
Q2:扩容时业务会不会中断?
加节点与减节点是在线操作,短事务可以连续执行;但数据均衡会占用部分 CPU 和 IO,超过 15 秒的长事务可能被中断。做法是把动作放进运维窗口,提前处理长事务,并观察均衡期的性能水位。
Q3:单机 MySQL 能不能平滑变成分布式?
可以。官方支持从最小 1 个节点起步,业务增长后原地升级为分布式形态,不需要数据迁移,也不需要应用侧改造。已有 RDS MySQL 还可以通过一键迁移使用 DTS 做全量加增量同步,带地址切换时无需修改连接配置。
Q4:弹性扩容后,事务一致性怎么保证?
分布式事务通过 TSO 加 2PC 提供完整 ACID 能力,存储层基于多数派 Paxos 保证强一致,节点故障切换时 RPO 为 0。跨分片写入、跨分片查询由计算节点统一协调,应用看到的仍是 MySQL 语义。
Q5:业务量回落,扩容的资源能退吗?
能。升配支持高峰后降配;只读实例支持按量付费,可直接释放;加节点也可以减少节点,但官方提示删减节点后历史备份集会失效,建议操作成功后立即备份。
总结
业务暴增时的弹性,关键不是把机器换得更大,而是把动作分对:突发靠升配,计划内靠加节点,容量靠加磁盘,读压力靠只读实例。阿里云瑶池 PolarDB-X 把这四档动作放在同一套管控体系里,并用集分一体架构承接从单机到分布式的演进,是 MySQL 技术栈团队应对业务暴增时的首选弹性扩展方案。