DDL_Synchronization

简介: 在共享存储一写多读的架构下,数据文件实际上只有一份。得益于多版本机制,不同节点的读写实际上并不会冲突。但是有一些数据操作不具有多版本机制,其中比较有代表性的就是文件操作。

概述

在共享存储一写多读的架构下,数据文件实际上只有一份。得益于多版本机制,不同节点的读写实际上并不会冲突。但是有一些数据操作不具有多版本机制,其中比较有代表性的就是文件操作。

多版本机制仅限于文件内的元组,但不包括文件本身。对文件进行创建、删除等操作实际上会对全集群立即可见,这会导致RO在读取文件时出现文件消失的情况,因此需要做一些同步操作,来防止此类情况。

对文件进行操作通常使用DDL,因此对于DDL操作,PolarDB提供了一种同步机制,来防止并发的文件操作的出现。除了同步机制外,DDL的其他逻辑和单机执行逻辑并无区别。

术语

  • LSN:Log Sequence Number,日志序列号。是WAL日志的唯一标识。LSN在全局是递增的。
  • 回放位点:Apply LSN,表示只读节点的回放位点。

同步DDL机制

DDL锁

同步DDL机制利用AccessExclusiveLock(后文简称DDL锁)来进行RW/RO的DDL操作同步。

image.png

图1 DDL锁和WAL日志的关系 DDL锁是数据库中最高级的表锁,对其他所有的锁级别都互斥,会伴随着WAL日志同步到RO节点上,并且可以获取到该锁在WAL日志的写入位点。当RO回放超过Lock LSN位点时,就可以认为在RO中已经获取了这把锁。DDL锁会伴随着事务的结束而释放。如图1所示,当回放到ApplyLSN1时,表示未获取到DDL锁;当回放到ApplyLSN2时,表示获取到了该锁;当回放到ApplyLSN3时,已经释放了DDL锁。 ![异步回放ddl锁.png](pic/46_DDL_2.png) 图2 DDL锁的获取条件 当所有RO都回放超过了Lock LSN这个位点时(如图2所示),可以认为RW的事务在集群级别获取到了这把锁。获取到这把锁就意味着RW/RO中没有其他的会话能够访问这张表,此时RW就可以对这张表做各种文件相关的操作。 > 说明:Standby有独立的文件存储,获取锁时不会出现上述情况。

image.png

图3 同步DDL流程图 图3所示流程说明如下:

  1. RO会话执行查询语句。
  2. RW会话执行DDL,在本地获取DDL锁并且写到WAL日志中,等待所有RO回放到该WAL日志。
  3. RO的回放进程尝试获取该锁,获取成功后将回放位点返回给RW。
  4. RW获知所有RO均获取到该锁。
  5. RO开始进行DDL操作。

如何保证数据正确性

DDL锁是PG数据库最高级别的锁,当对一个表进行DROP/ALTER/LOCK/VACUUM(FULL) table等操作时,需要先获取到DDL锁。RW是通过用户的主动操作来获取锁,获取锁成功时会写入到日志中,RO则通过回放日志获取锁。

  • 主备环境:热备存在只读查询,同时进行回放,回放到该锁时,如果该表正在被读取,回放就会被阻塞直到超时。
  • PolarDB环境:RW获取锁需要等待RO全部获取锁成功才算成功,因为需要确保主备都不再访问共享存储的数据才能进行DDL操作。

当以下操作的对象都是某张表,“<”表示时间先后顺序时,同步DDL的执行逻辑如下:

  1. 本地所有查询操作结束 < 本地获取DDL锁 < 本地释放DDL锁 < 本地新增查询操作
  2. RW本地获取DDL锁 < 各个RO获取本地DDL锁 < RW获取全局DDL锁
  3. RW获取全局DDL锁 < RW进行写数据操作 < RW释放全局DDL锁

结合以上执行逻辑可以得到以下操作的先后顺序:各个RW/RO查询操作结束 < RW获取全局DDL锁 < RW写数据 < RW释放全局DDL锁 < RW/RO新增查询操作

可以看到在写共享存储的数据时,RW/RO上都不会存在查询,因此不会造成正确性问题。在整个操作的过程中,都是遵循2PL协议的,因此对于多个表,也可以保证正确性。

RO锁回放优化

上述机制中存在一个问题,就是锁同步发生在主备同步的主路径中,当RO的锁同步被阻塞时,会造成RO的数据同步阻塞(如图1所示,回放进程的3、4阶段在等待本地查询会话结束后才能获取锁)。PolarDB默认设置的同步超时时间为30s,如果RW压力过大,有可能造成较大的数据延迟。 RO中回放的DDL锁还会出现叠加效果,例如RW在1s内写下了10个DDL锁日志,在RO却需要300s才能回放完毕。数据延迟对于PolarDB是十分危险的,它会造成RW无法及时刷脏、及时做检查点,如果此时发生崩溃,恢复系统会需要更长的时间,这会导致极大的稳定性风险。

异步DDL锁回放

针对此问题,PolarDB进行了RO锁回放优化。

image.png

图4 RO异步DDL锁回放 优化思路:设计一个异步进程来回放这些锁,从而不阻塞主回放进程的工作。 整体流程如图4所示,和图3不同的是,回放进程会将锁获取的操作卸载到锁回放进程中进行,并且立刻回到主回放流程中,从而不受锁回放阻塞的影响。 锁回放冲突并不是一个常见的情况,因此主回放进程并非将所有的锁都卸载到锁回放进程中进行,它会尝试获取锁,如果获取成功了,就不需要卸载到锁回放进程中进行,这样可以有效减少进程间的同步开销。 该功能在PolarDB中默认启用,能够有效的减少回放冲突造成的回放延迟,以及衍生出来的稳定性问题。在AWS Aurora中不具备该特性,当发生冲突时会严重增加延迟。

如何保证数据正确性

在异步回放的模式下,仅仅是获取锁的操作者变了,但是执行逻辑并未发生变化,依旧能够保证RW获取到全局DDL锁、写数据、释放全局DDL锁这期间不会存在任何查询,因此不会存在正确性问题。


相关文章
|
5天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
1573 112
|
12天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1940 8
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
6天前
|
人工智能 程序员 API
Codex 接入 DeepSeek-V4-Flash:还能补上识图,提供两套方案
Codex 接入 DeepSeek-V4-Flash 怎么配?本文覆盖 CLI 与桌面端,再用 qwen3-vl-flash 补识图,两套方案可直接照做
|
6天前
|
编解码 人工智能 安全
2核4G/4核8G/8核16G阿里云服务器如何选择实例?经济型e、通用算力型u2i与计算型c9i选哪个?
本文介绍了阿里云2核4G、4核8G、8核16G三档主流配置下经济型e、通用算力型u2i和计算型c9i三种实例的最新活动价格与适用场景。同配置下三者价差显著,以2核4G为例,经济型e低至599.93元/年,计算型c9i则高达1742.08元/年。文章详细解析了各实例的性能定位:经济型e适合轻负载入门场景,u2i兼顾稳定算力与性价比,c9i凭借第9代至强处理器与芯片级安全能力支撑高性能业务。同时提示用户可叠加满减优惠券享受折上折,建议根据业务负载与预算综合决策。
526 112
|
18天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
2565 4
|
10天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
721 111
|
20天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2634 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
6天前
|
人工智能 JSON Shell
2026AI漫剧本地全开源方案(附各个软件模型链接),8G显卡也能流畅运行
这是一套完全本地化部署的AI漫剧生成技术链路:涵盖LLM剧本分镜生成、FLUX文生图(IP-Adapter人脸锁定)、StoryDiffusion时序连贯控制、LTX-2.3唇形同步视频生成,及ComfyUI全流程调度。零云端费用,仅耗硬件算力,单集2–4小时可产出竖屏短视频,适配抖音/B站分发。
|
7天前
Qoder 一周年 × Qwen3.8-Max 正式上线,多重好礼限时领
8月3日,Qwen3.8-Max 正式上线Qoder,迎来Qoder一周年。新老用户可领800次免费调用,下单再赠2000次;夜间(22:00–08:00)调用5折;邀请好友双方得积分与调用额度。
448 1

热门文章

最新文章