随着节点的持续运行,节点数据持续增长,这带来了几个问题:
- 持续增长的磁盘空间占用
- 需要迁移数据时,拷贝时间过长
为此,okexchain提供了手动裁剪节点数据的工具。当然,节点也有根据配置项在运行过程中自动裁剪的功能,具体可以看这里。
工具使用说明
请将代码更新到最新,以使用以下功能。
1. 裁剪DB数据
exchaind data prune-compact all -p=false -r 100 --home xxx
exchaind data prune-compact block -p=false -r 100 --home xxx
exchaind data prune-compact state -p=false -r 100 --home xxx
- all:同时裁剪并压缩block和app数据,处理
application.db
blockstore.db
state.db
。
- block:只裁剪并压缩block数据,处理
blockstore.db
state.db
。
- state:只裁剪并压缩app数据,处理
application.db
。
-p
:是否执行pruning操作,如果false,则只执行compact操作。
-r
:指定裁剪高度,此高度(不含)之前的数据将被裁剪掉。如果不指定,则默认保留最后两个高度数据。
--home
:指定数据目录,同exchaind start --home 相同。
2. 查询DB信息
exchaind data query block --home xxx
exchaind data query state --home xxx
- block:查询
blockstore.db
中包含的块高。
- state:查询
application.db
中包含的state version。
--home
:指定数据目录,同exchaind start --home
相同。
3. 最佳实践
- 数据量不太大的情况下,制作最小快照s0,直接执行
exchaind data prune-compact all --home xxx
即可,不用指定其他参数。
- 数据量很大时,比如由s3制作s0,可分多次逐段执行,避免出现OOM。比如:
exchaind data prune-compact all --home -r 10000
exchaind data prune-compact all --home -r 20000
exchaind data prune-compact all --home -r 30000