# 备份与还原数据库

本章将指导您备份与还原节点数据库。

节点入网后,TOPIO 将自动同步链上数据至节点本地数据库。

db 命令如下表所示。

命令 说明
topio db backup 备份数据库。
topio db listBackups 查看备份数据库版本。
topio db restore 还原数据库。
topio db compact 整理数据碎片。
topio db prune 清理无效数据。

# 数据库目录

注意

建议您不要修改数据库目录名称及目录下的文件名称,否则将导致 TOPIO 部分功能无法正常使用!

TOPIO数据目录如下图所示。

Snap52
  • db:存储所有链上数据。
  • log:存储 TOPIO 运行过程中的日志。
  • keystore:存储 keystore 文件。

# 备份数据库

注意:

  • 首次备份数据库为全量备份,后续增量备份时,请使用首次备份路径,如使用与首次不同的备份路径,有可能会导致您的备份数据库不可用。

  • 建议您将测试网数据库和主网数据库备份在不同的目录下。

请求方式

topio db backup 

请求参数

参数名称 是否必选 默认值 类型 说明
backupdir - String 数据库备份目标路径。

选项

选项名称 类型 说明
-h, --help - - 查看命令帮助。
-d, --dir - TEXT 数据库源路径,默认为当前数据路径。

请求样例

以下请求样例中,数据库源路径为 /home/lily/Topnetwork,数据库备份路径为 /home/cathy

topio db backup -d /home/lily/Topnetwork /home/cathy

返回样例

  • 成功返回

    Database backup operating successfully.
    DBversion : 1
    
  • 失败返回

    Backup failed
    Error: the /home/db or /home/pdb does not exist.
    

# 查看备份数据库版本

请求方式

topio db listBackups

请求参数

参数名称 是否必选 默认值 类型 说明
backupdir - String 数据库备份目标路径。

选项

选项名称 类型 说明
-h, --help - - 查看命令帮助。

请求样例

查看 /home/cathy 路径下备份的数据库版本。

topio db listBackups /home/cathy

返回样例

  • 成功返回

    [root@localhost topio-0.0.0.0-debug]# topio db listBackups /home/cathy
    DBversion:1,timestamp:2020-06-05 07:04:02.
    DBversion:2,timestamp:2020-06-05 07:07:29.
    
  • 失败返回

    无。

# 还原数据库

还原数据库前,使用命令 topio db listBackups 查询备份路径下所有的数据库版本。

选择一个版本,还原至一个空的路径下。如不指定版本,则默认还原最新版本。

请求方式

topio db restore

请求参数

参数名称 是否必选 默认值 类型 说明
backupdir - String 数据库源路径。

选项

选项名称 类型 说明
-h, --help - - 查看命令帮助。
-d, --dir - String 数据库还原的目标路径,必须为空。
-D, --DBversion - Integer 备份的数据库版本,如不指定,默认还原最新版本。

请求样例

将路径 /home/cathy 中的数据库版本 2 还原至路径 /home/peter 下。

topio db restore -d /home/peter /home/cathy -D 2

返回样例

  • 成功返回

    Database restore operating successfully.
    
  • 失败返回

    Restore failed
    Error: The target dir for restore is not empty, please input an empty one.
    

# 整理数据碎片

通过整理数据碎片来减少 DB 占用空间,执行过程需要 5 - 10 分钟。

请求方式

topio db compact

请求参数

无。

请求样例

请按以下步骤执行数据碎片整理:

  1. 整理数据碎片前,需要运行以下命令停止 TOPIO 进程:

    ps -ef |grep topio|grep -v 'grep'|awk '{print $2}'|xargs kill -9
    
  2. 执行数据碎片整理:

    topio db compact
    
  3. 重新启动 TOPIO。

    topio node startnode
    

返回样例

数据碎片整理完毕后,会返回以下信息:

xdb_impl::open(),Options.compression=4,bottommost_compression=4
xdb_impl::close,db_root_dir=/chain/db_v3
compact database ok.

# 清理无效数据

清理指定检查点之前的历史无效数据,执行需要等待 3 - 5 分钟。

仅适用于 Advance、Validator、Edge 矿工。

请求方式

topio db prune

请求参数

无。

请求样例

请按以下步骤执行无效数据清理:

  1. 清理无效数据前,需要运行以下命令停止 TOPIO 进程:

    ps -ef |grep topio|grep -v 'grep'|awk '{print $2}'|xargs kill -9
    
  2. 执行无效数据清理:

    topio db prune
    
  3. 重新启动 TOPIO。

    topio node startnode
    

返回样例

  • 成功返回

    init db...
    xdb_impl::open(),Options.compression=4,bottommost_compression=4
    start prune db()...
    total 43637 units in db
    start prune unit account!
    start table account!
    xdb_impl::close,db_root_dir=/chain/db_v3
    prune database ok.
    
  • 异常返回

    若返回以下信息,则说明你尚未设置过默认账户,需要使用 topio wallet setDefaultAccount 设置默认账户。

    please set default account.