# 备份与还原数据库
本章将指导您备份与还原节点数据库。
节点入网后,TOPIO 将自动同步链上数据至节点本地数据库。
db 命令如下表所示。
命令 | 说明 |
---|---|
topio db backup | 备份数据库。 |
topio db listBackups | 查看备份数据库版本。 |
topio db restore | 还原数据库。 |
topio db compact | 整理数据碎片。 |
topio db prune | 清理无效数据。 |
# 数据库目录
注意
建议您不要修改数据库目录名称及目录下的文件名称,否则将导致 TOPIO 部分功能无法正常使用!
TOPIO数据目录如下图所示。
- 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
请求参数
无。
请求样例
请按以下步骤执行数据碎片整理:
整理数据碎片前,需要运行以下命令停止 TOPIO 进程:
ps -ef |grep topio|grep -v 'grep'|awk '{print $2}'|xargs kill -9
执行数据碎片整理:
topio db compact
重新启动 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
请求参数
无。
请求样例
请按以下步骤执行无效数据清理:
清理无效数据前,需要运行以下命令停止 TOPIO 进程:
ps -ef |grep topio|grep -v 'grep'|awk '{print $2}'|xargs kill -9
执行无效数据清理:
topio db prune
重新启动 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.