当数据库异常宕机重启时,数据库实例需要确定每个事务最终要提交还是回滚。为了保证数据的一致性,在Aur

已解决

当数据库异常宕机重启时,数据库实例需要确定每个事务最终要提交还是回滚。为了保证数据的一致性,在Aurora 中对存储服务层Redo 日志定义了哪些概念?

展开
收起
云上静思 2022-09-12 11:09:40 529 分享 版权
1 条回答
写回答
取消 提交回答
  • 推荐回答

    定义的概念如下:

    • 卷完整点(Volume Complete LSN,VCL)。表示存储服务拥有VCL 之前的所有完整的日志。在故障恢复时,所有LSN 大于VCL 的日志都要被截断。

    • 一致性点(Consistency Point LSNs,CPLs)。对于MySQL(InnoDB)而言,每个事务在物理上由多个Mini-Transaction 组成,而每个Mini-Transaction 是最小原子操作单位,例如B 树分裂可能涉及多个数据页的修改,那么这些页修改对应的一组日志就是原子的,当重做日志时,也需要以Mini-Transaction为单位。CPL 表示一组日志中最后一条日志的LSN,一个事务由多个CPL 组成,所以称之为CPLs。

    • 卷持久点(Volume Durable LSN,VDL)。表示所有CPLs 中已持久化的最大LSN,VDL≤VCL,为了保证不破坏Mini-Transaction 原子性,所有大于VDL的日志都需要被截断。例如,VCL 是1007,假设CPLs 是900、1000、1100,则VDL 是1000,那么需要截断1000 以后的日志。

    VDL 表示了数据库处于一致状态的最新位点,在故障恢复时,数据库实例以PG 为单位确认VDL,截断所有大于VDL 的日志。

    以上内容摘自《云原生数据库原理与实践》,这本书可以在电子工业出版社天猫店购买。

    2022-09-12 11:53:34
    赞同 展开评论

数据库领域前沿技术分享与交流

收录在圈子:
+ 订阅
让用户数据永远在线,让数据无缝的自由流动
还有其他疑问?
咨询AI助理