Skip to content
🎉 Welcome to the new Aptos Docs! Click here to submit feedback!
Network
从备份中引导启动

从备份中引导启动

本文档描述了如何使用备份来引导启动一个 Aptos 节点。这可以在所有类型的节点上完成,包括验证器、VFN 和 PFN。使用备份进行引导启动可以帮助节点运营者实现两个目标:

  1. 快速引导启动数据库,从而启动一个新的或失败的节点。
  2. 高效地从区块链历史的任何特定时期恢复数据(例如,从创世到目标版本)。

为了实现这些目标,Aptos 数据库恢复工具允许您使用现有的公共备份文件来恢复节点的数据库。这包括包含事件、写入集和键值对的交易历史。使用该工具,您可以从任何历史范围恢复交易,或者将数据库恢复到备份中的最新版本。公共备份文件由加密证明支持,并存储在 AWS 和 Google Cloud 上,以便访问。

公共备份文件

Aptos Labs 通过持续查询 PFN 并存储备份数据在远程存储中(如 Amazon S3 或 Google Cloud Storage)来维护一些公共可访问的数据库备份。这些备份数据的链接如下所示:

AWS 备份数据Google Cloud 备份数据
测试网已停止https://github.com/aptos-labs/aptos-networks/blob/main/testnet/backups/gcs.yaml
主网https://github.com/aptos-labs/aptos-networks/blob/main/mainnet/backups/s3-public.yamlhttps://github.com/aptos-labs/aptos-networks/blob/main/mainnet/backups/gcs.yaml

备份仅针对 testnetmainnet 创建。鉴于 devnet 经常清空,所以没有必要维护它的备份。

备份文件由三种类型的数据组成,可用于重建区块链数据库:

  • epoch_ending - 这包含自创世(genesis)以来每个纪元结束区块的账本信息。这些数据可以用来证明每个纪元(epoch)的起源和每个纪元的验证器集。
  • state_snapshot - 这包含区块链状态默克尔树(SMT)和某个特定版本的键值对的快照。
  • transaction - 这包含原始交易元数据、交易负载、交易在虚拟机执行后的输出以及账本历史中交易的加密证明。

备份存储中每种类型的数据都按以下方式组织:

  • 元数据文件夹中的元数据文件包含每个备份的范围和备份文件夹的相对路径。
  • 备份包含一个清单文件和所有实际分块的数据文件。

下面的图表提供了备份数据结构的可视化表示:

aptos-db-restore.png

恢复 Aptos 数据库

Aptos CLI 支持 Aptos 节点的两种恢复操作:

  1. 在用户指定的交易版本(或备份提供的最新版本)处重新创建一个数据库,但交易历史最少。
  2. 在特定时间段内恢复数据库。除了上述选项外,此选项还确保重新创建的数据库携带用户指定版本范围的账本历史。

需要 Aptos CLI 1.0.14 或更高版本才能执行这些操作。此外,根据您的使用情况,安装 AWS CLIgsutil

下面的部分提供了如何使用 Aptos CLI 从备份中恢复数据库的示例。

引导到最新版本

aptos node bootstrap-db 命令可以快速从最近的快照中恢复数据库到目标版本,但它不会恢复目标版本之前的交易历史。

运行命令时可以使用以下选项:

  • target-version - 将从交易历史的这个时期开始(朝着最新版本)同步。
  • command-adapter-config - 指向 YAML 配置文件之一的路径,该文件指定公共备份文件的位置以及备份和恢复工具与远程存储交互使用的命令。
  • target-db-dir - 写入恢复数据库的目标 DB 路径。

示例命令:

Terminal
aptos node bootstrap-db \
    --target-version 500000000 \
    --command-adapter-config /path/to/s3-public.yaml \
    --target-db-dir /path/to/local/db

在特定时间段内恢复

aptos node bootstrap-db命令可以恢复指定期间内的交易历史,以及目标版本的默克尔树状态。

使用以下选项运行命令:

  • ledger-history-start-version - 同步将从交易历史的这个时期开始(朝着目标版本)。
  • target-version - 同步将在交易历史的这个时期结束。
  • command-adapter-config - 指向YAML 配置文件之一的路径,该文件指定公共备份文件的位置以及备份和恢复工具与远程存储交互使用的命令。
  • target-db-dir - 写入恢复数据库的目标 DB 路径。

示例命令:

Terminal
aptos node bootstrap-db \
    --ledger-history-start-version 150000000 \
    --target-version 155000000 \
    --command-adapter-config /path/to/s3-public.yaml \
    --target-db-dir /path/to/local/db

从创世恢复完整历史

要使用从创世(genesis)的完整历史恢复 Aptos 节点,将 ledger-history-start-version 设置为 0,并在启动节点之前按照禁用账本裁剪器(ledger pruner)部分中的说明禁用裁剪器。注意:执行恢复完整历史需要大量的资源和时间。 请参阅下面的资源要求。

  • 打开文件限制:将打开文件限制设置为 10K,例如,使用ulimit -n 10000

如果您正在恢复节点,您将需要以下资源:

磁盘内存
测试网1.5 TB32 GB
主网1 TB32 GB

示例命令:

Terminal
aptos node bootstrap-db \
  --ledger-history-start-version 0 \
  --target-version use_the_largest_version_in_backup \
  --command-adapter-config /path/to/s3-public.yaml \
  --target-db-dir /path/to/local/db

如果您没有(通过--target-version)指定目标版本,工具将使用备份中的最新版本作为目标版本。