PolarDB-X 存储引擎核心技术 | Lizard 无锁备份

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 本文重点要介绍全量备份的设计,作为承担在线数据存储的 DN 节点,按照数据保护和容灾的需求,DN 需要支持灵活定制周期策略的备份策略。同时,PolarDB-X 能够处理和存储庞大的数据规模,备份这些数据量(例如高达 20TB 大小的数据集),如果想在更短的时间内完成备份(比如 3~4 小时),这样的备份 SLA 需要在在线业务影响、并行策略上有更多的优化。

作者:攒叶

备份背景

PolarDB-X 分布式数据库,采用集中式和分布式一体化的架构,Data Node 节点可以按照业务的发展和规模的扩大,逐步从集中式,在线平滑的进行水平拆分,扩展到分布式,以线性扩展容量。

数据库的备份恢复,承当了重要的数据安全的保障,按照数据保护和容灾的需求,PolarDB-X 提供了多样化的能力,支持任意时间点的备份恢复(简称 PITR),更多技术细节可以访问:《PolarDB-X 数据库的备份恢复》。


如上图所示,展示了 PolarDB-X 在 PITR 恢复的情况,通过全量备份 + 增量的 binlog 组合可以满足任意时间点的恢复诉求。

另外,PolarDB-X 的数据节点 DN 作为多副本架构,日常的主机运维动作,也会触发副本的动态搬迁、重建等,此时需要依赖备库重搭技术,先通过主库做一次全量备份,通过多副本 Consensus Log 来增量追平副本数据。

本文重点要介绍全量备份的设计,作为承担在线数据存储的 DN 节点,按照数据保护和容灾的需求,DN 需要支持灵活定制周期策略的备份策略。同时,PolarDB-X 能够处理和存储庞大的数据规模,备份这些数据量(例如高达 20TB 大小的数据集),如果想在更短的时间内完成备份(比如 3~4 小时),这样的备份 SLA 需要在在线业务影响、并行策略上有更多的优化。

传统 MySQL 生态的备份挑战

开源 MySQL, 采用 InnoDB 存储引擎保存数据,基于传统的 WAL 架构,其使用 redo log 物理日志来记录数据变更。 Server 层采用 Binary log 作为逻辑日志,记录了数据库实例的变更日志,包括事务型数据修改,非事务型数据修改,结构修改等所有数据库变化,其承担了三个重要的作用:

1.两阶段提交协调日志

MySQL多存储引擎的结构,Binlog 承担了2PC的 coordinator 的职责,参与两阶段提交和恢复流程。

2.数据变更日志

Binlog 记录了数据库实例的所有变更,可以通过变更日志replay一个逻辑 image,构建多类型 cluster。

3.执行集合日志

Binlog 记录了变更的唯一标识 Global Transaction Identifier 即 GTID,用于构建 Executed 集合。

如何确保 Binary log 和 InnoDB 存储引擎的备份一致性,构成了挑战。由于最终要维护 Binlog 和存储引擎参与方的一致性,导致需要一个逻辑时间点,而一般逻辑时间点需要全局 global lock 来实现,这会严重影响在线实例的运行,继而影响用户业务。

Lizard 无锁全量备份设计

PolarDB-X 存储引擎,自研了 Lizard 分布式事务系统,来替换传统的 InnoDB 单机事务系统。针对 InnoDB 事务系统的弊端,Lizard 事务系统,分别设计了 SCN 单机事务系统和 GCN 分布式事务系统来解决这些弊端,有效的支撑分布式数据库能力。

同时,PolarDB-X 在 Lizard 事务引擎的基础上,相比于传统 MySQL 的物理备份的局限性,引入新设计的 Lizard 无锁备份,让备份过程对用户业务透明,真正做到无感。

Lizard 无锁备份的核心,即放弃物理备份过程中的 Binlog 备份,只保留存储引擎参与方的备份,而 Binlog 的三个最重要的职责:

1.两阶段提交协调日志

所有一阶段 prepare 状态的存储引擎参与方,统一按照 rollback 处理。

2.变更日志

DN 在使用备份集恢复新实例的时候,强制以 follower 或者 learner 角色加入 cluster,接收由集群 leader 使用 X-Paxos 协议发送的 Binlog 日志。

3.执行集合

PolarDB-X DN 新引入了一个组件,即 Lizard Transaction Slot (LTS),作为一个新的强制的参与方引擎,参与到MySQL 所有的变更,包括事务型,非事务型,结构变化等,Gtid Executed 执行集合由 LTS 来维护,以实现幂等控制。

通过以上的替代,覆盖 Binlog 所承担的职责,实现 Lizard 无锁全量备份能力。

Lizard 无锁全量备份架构

Lizard 无锁全量备份引入了一个新的重要组件 Transaction Slot,其作为一个持久化结构,用于记录数据库的变化,其架构图如下:

Transaction Slot 组件

Transaction Slot 作为一个持久化的结构,记录了数据库的事务型变化,其包括:

1.事务状态

通过 state 字段,记录事务的状态,包括active,prepare,commit,rollback等状态,在恢复过程中,通过 state 字段,所有 active 或者 prepare 状态的 transaction 都统一进行 rollback。

2.事务提交版本

通过 SCN 字段,记录事务提交或者回滚的内部版本号,即 System Commit Number。

3.事务全局标记

通过 GTID 字段,记录事务提交或者回滚的唯一标识,即 Global Transaction Identifier 。为了保证记录的完整性,对于数据库的所有变化包括:

  1. 数据操作语言(DML)
  2. 数据定义语言(DDL)
  3. 数据控制语言(DCL)

都强制分配了 Tranaction Slot,以便记录所有的 GTID,从而保证实例恢复后,应用 Binlog 的幂等性。

Lizard 一致性恢复

通过 Transaction Slot 组件, PolarDB-X 存储引擎 DN 节点不再通过 global lock 获取位点,实现了无锁全量备份,而针对全量备份集进行 recovery 过程中,需要处理的三个核心位点,即: Recovery 恢复位点,Consensus 传输位点,Apply 应用位点,无锁全量备份进行了松散处理,并保证了最终一致性。

1.Recovery 恢复位点

物理恢复的位点,按照物理备份中 redo log copy 到的最后日志位置,作为恢复的最终位置,备份过程,copy了从checkpoint 位置之后的所有 redo log,在恢复的时候,重新应用这些 redo log,并回滚所有active/prepare状态的事务。

2.Consensus 传输位点

由于 DN 节点采用 X-Paxos 一致性协议, 其核心是在提交过程中,进行多数派达成,所以在备份结束之前,获取一个多数派 Binary Log 的位点,作为 Consensus 传输位点,在实例恢复过程中,以 Learner 的角色重新加入集群中,从这个位点开始接收 Binary Log。

3.Apply 应用位点

由于没有 Global Lock 的保护,无法获取 Binary Log 和存储引擎一致的应用位点,所以在备份完成之前,获取了一个已经 Applied 位点,在实例恢复后,apply 过程中,通过 Transaction Slot 构建的 GTID executed 集合,进行幂等控制,最终追上集群的位点。

通过上述位点的获取和应用逻辑,保证了备份集在接入到原始集群后,能够整合协议层、复制层和数据层,最终实现系统各部分之间的严格一致性。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
8天前
|
关系型数据库 分布式数据库 数据库
PolarDB资源隔离技术:在多租户环境中的应用与优化
随着云计算普及,多租户架构助力云服务商提供高效服务。阿里云PolarDB采用独特分布式设计,在多租户环境下确保每个用户数据独立与资源隔离。通过逻辑与物理隔离技术,如Schema和分区,结合分布式存储节点,实现资源独占及安全。此技术不仅保障数据安全,还能动态分配资源,满足高性能需求。通过优化资源分配、增强事务处理及监控机制,进一步提升PolarDB在多租户环境中的表现。
29 4
|
8天前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB开源项目未来展望:技术趋势与社区发展方向
随着云计算的飞速发展,作为核心组件的分布式数据库作用愈发关键。阿里云的PolarDB,一款云原生分布式数据库,自开源后备受瞩目。未来,PolarDB将深化云原生特性,强化容器化支持;发展HTAP能力,融合事务处理与实时分析;运用AI技术实现智能运维。同时,加强全球开源社区合作,拓展多行业应用场景,并构建全面的开发者生态系统,旨在成为领先的云原生数据库解决方案。
23 4
|
3天前
|
存储 Oracle 关系型数据库
PolarDB-X 存储引擎核心技术 | Lizard B+tree 优化
PolarDB-X 分布式数据库,采用集中式和分布式一体化的架构,为了能够灵活应对混合负载业务,作为数据存储的 Data Node 节点采用了多种数据结构,其中使用行存的结构来提供在线事务处理能力,作为 100% 兼容 MySQL 生态的数据库,DN 在 InnoDB 的存储结构基础上,进行了深度优化,大幅提高了数据访问的效率。
|
4天前
|
存储 SQL 关系型数据库
PolarDB-X 存储引擎核心技术 | Lizard 多级闪回
本文介绍了数据库闪回技术,这是一种允许用户恢复到过去某个时间点状态的功能,无需依赖传统备份。闪回技术在误操作修复、数据恢复演练、问题诊断及合规审计等场景下尤为重要。
|
20天前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之数据库处于只读状态,如何恢复其读写功能
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之数据库处于只读状态,如何恢复其读写功能
|
6天前
|
关系型数据库 Serverless 分布式数据库
揭秘PolarDB Serverless:大促洪峰秒级应对,无感伸缩见证科技魔法!一探云数据库管理的颠覆性革新,强一致性的守护神来了!
【8月更文挑战第13天】在云计算背景下,阿里巴巴的云原生数据库PolarDB Serverless针对弹性伸缩与高性能一致性提供了出色解决方案。本文通过一个电商平台大促活动的真实案例全面测评PolarDB Serverless的表现。面对激增流量,PolarDB Serverless能秒级自动扩展资源,如通过调用`pd_add_reader`快速增加读节点分摊压力;其无感伸缩确保服务平滑运行,不因扩展中断;强一致性模型则保障了数据准确性,即便在高并发写操作下也确保库存等数据的同步一致性。PolarDB Serverless简化了数据库管理,提升了系统效能,是追求高效云数据库管理企业的理想选择。
28 7
|
22天前
|
关系型数据库 Serverless 分布式数据库
微测评:云数据库PolarDB
体验并部署了《Serverless高可用架构》-PolarDB后,发现其相较于传统架构优势显著:零代码改造降低迁移门槛,极简易用提升开发效率,自适应弹性确保资源高效利用。
88 0
微测评:云数据库PolarDB
|
4天前
|
关系型数据库 MySQL Serverless
在部署云数据库PolarDB MySQL版 Serverless集群的过程中问题点
在部署PolarDB MySQL Serverless过程中,常见问题包括配置误解、网络配置错误、资源未及时释放及压测不熟练。建议深入理解配置项,确保合理设置伸缩策略;明确业务需求,使PolarDB与现有服务同处一地域与VPC;利用提醒功能管理资源生命周期;按官方指南执行压测。新用户面临的学习曲线、资源管理自动化不足及成本控制难题,可通过增强文档友好性、引入智能成本管理与用户界面优化来改善。
13 1
|
10天前
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
PolarDB是阿里云的高性能分布式数据库,PolarDB Proxy作为关键组件,解析并转发SQL请求至集群。本文概览PolarDB Proxy功能,包括连接池管理、负载均衡及SQL过滤;并提供配置示例,如连接池的最大连接数与空闲超时时间设置、一致哈希路由及SQL安全过滤规则。最后探讨了监控调优、查询缓存及网络优化策略,以实现高效稳定的数据库访问。
37 2
|
11天前
|
存储 关系型数据库 分布式数据库
揭秘PolarDB:中国云原生数据库的超级英雄,如何颠覆传统数据存储?
【8月更文挑战第8天】在数字化时代,数据成为企业的核心资产。随着云技术的发展,企业纷纷向云端迁移,选择合适的云原生数据库至关重要。PolarDB凭借卓越性能、高可靠性和易用性在中国市场领先。它采用存储计算分离架构,支持独立扩展,提高处理大规模数据的效率和灵活性。多副本机制确保数据高可用性和持久性,优于单副本存储方案。兼容多种数据库引擎,提供丰富管理工具,降低迁移和维护成本。按量付费模式帮助企业有效控制成本。因此,PolarDB为企业数字化转型提供了强有力的支持。
38 1

相关产品

  • 云原生分布式数据库 PolarDB-X