当数据库异常宕机重启时,数据库实例需要确定每个事务最终要提交还是回滚。为了保证数据的一致性,在Aurora 中对存储服务层Redo 日志定义了哪些概念?
定义的概念如下:
• 卷完整点(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 的日志。
以上内容摘自《云原生数据库原理与实践》,这本书可以在电子工业出版社天猫店购买。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。