数据快照和使用

为了方便开发者进行快速的节点部署,TRON定期提供数据快照。数据快照是TRON网络节点某一时刻的数据库备份的压缩文件,开发者可以通过下载并使用数据快照加快节点同步过程。

数据快照的下载

FullNode数据快照

下表为Fullnode数据快照的下载地址,请根据所在地和节点数据库类型,以及是否需要查询历史内部交易等需求选择适合的数据快照。

Fullnode节点数据源下载地址说明
官方数据源(美洲:美国弗吉尼亚)http://3.219.199.168/LevelDB数据,不包含内部交易(截止2023-5-8约 1250G)
官方数据源(亚洲:新加坡)http://52.77.31.45/LevelDB数据,不包含内部交易(截止2023-5-8约 1248G)
官方数据源(亚洲:新加坡)http://52.77.31.45/saveInternalTx/LevelDB数据,包含内部交易(截止2023-5-8约 1423G)
Trongrid数据源https://backup.trongrid.io/LevelDB数据,包含内部交易(截止2023-5-8约 1527G)

注意:LevelDB和RocksDB的数据不允许混用。FullNode的数据库类型通过配置文件的配置项
db.engine 进行指定,可选值为LEVELDB或者ROCKSDB

Lite FullNode数据快照

TRON网络从GreatVoyage-V4.1.0版本开始,支持Lite FullNode类型的节点。相比于普通的FullNode,Lite FullNode不但数据库小,而且启动速度快,它只需要状态数据和必要的历史数据就可以启动。下表为Lite Fullnode数据快照的下载地址。

Lite Fullnode节点数据源下载地址说明
官方数据源(美洲:美国弗吉尼亚)http://3.219.199.168/LevelDB数据

小提示:如果用户已经有Fullnode的全量数据,可以使用Lite FullNode工具自行将fullnode数据切分成Lite fullnode数据。

数据快照的使用

数据快照的使用步骤如下:

  1. 根据自己需求下载相应压缩备份数据库。
  2. 解压备份数据库压缩文件至output-directory目录,或者根据自己需求指定解压的目标目录。
  3. 启动节点。节点默认读取output-directory目录,如需指定其他目录,请在节点启动时,添加参数 -d 数据库目录名

其它

Lite FullNode工具

Lite FullNode工具用于将全节点(FullNode)的数据切分成快照数据集(Snapshot dataset)和历史数据集(History dataset)两部分。

  • Snapshot dataset: 用于快速启动Lite FullNode节点的必要数据集。
  • History dataset: 用于历史数据查询的归档数据集。

使用本工具进行任何操作之前,需要首先停止当前运行的FullNode节点。 本工具提供了根据当前最新区块高度(latest_block_number)将完整数据切分成两个数据集的功能。通过快照数据集启动的微节点不支持查询此区块高度之前的历史数据。本工具还提供了将历史数据集同快照数据集合并的功能。

更多的设计思想,请参考: TIP-128

Lite Fullnode工具的获取

可以通过编译java-tron源代码来获取 LiteFullNodeTool.jar,步骤如下:

  1. 获取java-tron源码

    $ git clone https://github.com/tronprotocol/java-tron.git
    $ git checkout -t origin/master
    
  2. 编译

    $ cd java-tron
    $ ./gradlew clean build -x test
    

    编译完成之后,LiteFullNodeTool.jar会生成在 java-tron/build/libs/ 目录下。

Lite Fullnode工具的使用

选项
此工具提供了快照数据集和历史数据集独立的拆分功能和合并功能。

  • --operation | -o: [ split | merge ] 此选项用于指定使用拆分功能还是合并功能。
  • --type | -t: [ snapshot | history ] 此选项只能同-o split配合使用。 snapshot 指示切分为快照数据集,history指示切分为历史数据集。
  • --fn-data-path: FullNode数据库的目录。
  • --dataset-path: 切分完成的数据集输出目录。 当操作类型是 split时, dataset-path 用于指示切分完成的快照数据集输出目录或者历史数据集输出目录;当操作类型是 merge时, dataset-path指示历史数据集的输出目录。

例子

通过默认的配置文件启动全节点时,将在当前启动目录下生成一个output-directory目录,在output-directory 目录的database子目录就是将要被切分的数据库。

  • 切分快照数据集

    首先, 停止FullNode并执行命令:

    # 简单起见,将快照数据集存放在`/tmp`目录下
    java -jar LiteFullNodeTool.jar -o split -t snapshot --fn-data-path output-directory/database --dataset-path /tmp
    

    命令执行完毕之后,将在/tmp目录下生成snapshot目录, 将此目录的名字修改为database,并拷贝到Lite FullNode的运行目录output-directory之下。

  • 切分历史数据集

    如果需要查询历史数据,历史数据集必须被生成并合并到微节点数据库中。

    # 简单起见,将历史数据集存放在`/tmp`目录下
    java -jar LiteFullNodeTool.jar -o split -t history --fn-data-path output-directory/database --dataset-path /tmp
    

    命令执行完毕之后,将在/tmp目录下生成history目录,将此目录拷贝到Lite FullNode运行目录output-directory之下,注意需要确保有足够的硬盘空间来存储历史数据集。

  • 合并历史数据集和快照数据集

    历史数据集和快照数据集中都保存了一个info.properties文件,用于记录数据拆分时的区块高度。需要注意的是,两个数据集进行合并时,历史数据集的区块高度必须大于等于快照数据集的区块高度。通过merge操作将历史数据集同快照数据集进行合并之后,微节点将成为一个真正的全节点。

    # 简单起见,假设历史数据集存放在了`/tmp`目录下
    java -jar LiteFullNodeTool.jar -o merge --fn-data-path output-directory/database --dataset-path /tmp/history