在云计算和容器化技术普及的今天,数据库系统需要应对双重高可用挑战:既要防范硬件故障、网络异常等突发意外风险,又要满足滚动升级、弹性伸缩、配置变更等主动运维需求。传统高可用方案在处理计划内切换时往往造成分钟级业务中断,这与现代业务对"持续在线"的严苛要求形成尖锐矛盾。
了解信创数据库PolarDB V2.0
https://www.aliyun.com/activity/database/polardbx-v2
一、传统架构的局限性
(一)主从架构的三大困境
传统主从架构数据库,采用client <--> server的链路,只有一个server节点提供读写,另外一个节点作为冗余热备, 在面对主动切换场景时存在三大困境:

1. 数据一致性陷阱:
-
- 需严格校验日志同步间隙GAP
- 处理半同步模式下的数据丢失风险
- 切换前后需耗费大量时间验证数据完整性
2. 业务连续性断层:
-
- 主库停写导致30-120秒服务拒绝
- 连接池重建引发会话中断
- 事务回滚造成业务逻辑异常
3. 管控复杂度膨胀:
-
- 需开发专用组件处理VIP切换、脑裂检测等复杂状态机
- 异常场景回滚机制增加系统脆弱性
(二)分布式架构的新挑战
分布式架构数据库,采用client <--> proxy <--> servers的链路,通过server多分片的设计实现水平扩展,将server主动切换的运维场景细粒度到单个分片进行。但分布式架构下仍然存在新的挑战:
1. 流量失控风险:
- 传统方案切主后直接断连,导致客户端持续向失效节点发送请求
- 引入Proxy实现流量管控后,Proxy自身升级仍面临无感切换失控风险
2. 会话状态丢失:
- 长连接中的临时表、会话变量等上下文信息无法迁移,破坏业务连续性
- 引入Proxy实现会话保持后,Proxy自身升级仍面临无感切换失控风险
3. Proxy代理架构悖论:
- 引入Proxy后,server端存算一体优势被链路跳数增加所抵消
- Proxy自身升级常使用的双进程方式,又仅限制在同机切换, 不适用跨机切换
二、如何实现真正的“无感切换”?
真正的无感切换方案需同时满足:
- 数据强一致性
- 会话零中断
- 流量自动迁移
- 跨机迁移能力
传统主从架构受限于单机单分片设计,而常规分布式方案又因代理架构产生新的性能损耗和不足,这成为业界长期未解的技术困局。
三、PolarDB-X的无感切换架构
作为阿里云自主研发的云原生分布式数据库,PolarDB-X通过存算分离架构创新,在计算节点(CN)、存储节点(DN)、元数据节点(GMS)三个层面实现全栈无感切换能力。

(一)核心突破点
1. 两层解耦设计
- 计算层(CN):无状态设计,提供SQL计算,支持秒级弹性扩展
- 存储层(DN):基于XPaxos协议的多副本强同步,提供存储高可用服务
2. 计算层CN无感切换
- 双集群热迁移:新建CN集群与旧集群并行运行,负载均衡自动引导新连接
- 智能连接回收:利用连接池生命周期管理,实现旧连接平滑淘汰(而非强制断开)
- 跨机迁移能力:突破传统双进程方案的地域限制,支持AZ级灵活调度
3. 存储层DN无感切换
流量控制阶段
- CN实时感知DN状态,Hold住新事务请求同时放行进行中的事务。
- DN保障会话完整性,自适应等待老会话提交完成。
事务完结阶段
- DN保障XA事务完整性,自适应等待XA两阶段事务提交完成
- DN保障事务原子提交完整性,自适应等待事务组提交队列中任务完成
协议切换阶段
- DN LeaderTransfer指令实现2 RTT内选举切换
- 多副本多数派达成确保强一致性
相比传统主从架构或者分布式架构数据库, PolarDB-X的无感切换差异如下
| 传统主从架构的切主 | 传统分布式架构的切主 | PolarDB-X架构的无感切换 | |
| 数据强一致性 | 不完全保证依赖管控 | 保证依赖内置Paxos协议 | 保证依赖内置XPaxos协议 |
| 会话零中断 | 不保证 | 保证额外引入Proxy组件 | 保证存算分离的CN节点天然Proxy代理 |
| 流量自动迁移 | 不保证 | 保证额外引入Proxy组件 | 保证存算分离的CN节点天然Proxy代理 |
| 跨机迁移能力 | Server支持 | Server支持,Proxy不支持 | DN、CN都支持 |
| 快速切主能力 | 不保证 | 不保证 | 保证 |
以一个CN节点和一个三节点的DN集群的简化PolarDB-X为例,通过CN对DN的实时感知,在高可用切换前,CN会Hold住所有新开启的事务,并尽可能将已开启的事务在当前的DN Leader节点上执行完成。当Leader节点执行完成所有事务后,DN集群发生主动切换,CN感知到新Leader节点后,重新调度Hold的业务请求到新Leader节点上执行,实现无感切换。对于涉及多个DN的分布式事务,在处理高可用切换时,逻辑类似,但会有更多的调度策略细节处理,这里不做展开。

(二)效果验证
PolarDB-X的无感切换方案基于计算节点和管控系统调度实现,不依赖特定硬件设备,且不受可用区限制,即使在跨可用区的切换场景下,也能提供较快的切换和完全无报错的业务体验。
以1000仓64并发TPCC为例的业务流量下,PolarDB-X的无感切换仅以十几条0.5秒内的慢SQL代价,完成了单个存储节点或元数据节点的高可用切换,全程无任何业务流量报错。
查看tpmC的实时流量监控,4次测试切换的TPCC流量曲线(在切换的瞬间有秒级波动,但不是完全跌0)

查看错误日志的监控图表,发现整个高可用切换无任何报错

查看更为详细的SQL审计,可以看到在切换瞬间有0.49秒的慢SQL(但SQL是执行成功,无报错)

(三)在线体验馆
PolarDB-X基于阿里云解决方案体验馆,提供了在线的流量压测+无感切换的效果体验能力,可以方便大家进行对比和体验。
体验馆地址:PolarDB-X无感切换

如上图,呈现了大致体验的效果,其中增加了无感切换 和 普通切换的效果对比,可以看到普通切换的版本在切换过程中有明显的报错,充分体现了"无感切换"的优势效果。
四、总结
PolarDB-X通过存算分离架构创新与全链路协同控制,解决了传统方案在主动切换场景下的业务中断与数据一致性问题,实现了分钟级→秒级的高可用跨越。其设计兼顾分布式扩展性与单机性能优势,为云原生数据库的“持续在线”高可用目标提供了可落地的技术路径。
1870

被折叠的 条评论
为什么被折叠?



