跳转至

导入数据库

原文:https://docs.elrond.com/validators/import-db

通过提供数据库并使用下一节中解释的 import-db 相关标志启动节点,节点能够重新处理以前生成的数据库。 导入数据库流程的可能用例:

  • 索引从创世纪到现在的所有数据;
  • 验证区块链国家;
  • 确保新软件版本没有向后兼容性问题;
  • 检查指定时间的区块链状态(这包括额外的代码更改,但是例如,如果您对块 255255 处的 API 端点的结果感兴趣,您可以使用 import db 并强制节点在对应于该日期的块处停止)。

如何启动流程

假设我们有以下数据结构:

 ~/elrond-go/cmd/node 

在上述路径中找到了node二进制文件。现在,我们有了一个先前构建的数据库(来自一个与起源链同步的观察者,从未交换过碎片)。这个数据库将放在一个目录中,假设我们将它放在节点的二进制文件附近,产生如下的数据结构:

.
├── config │    ├── api.toml
│    ├── config.toml
│    ...
├── import-db
│    └── db
│        └── 1
│            ├── Epoch_0
│            │     └── Shard_1
│            │         ├── BlockHeaders
│            │         │   ...
│            │         ├── BootstrapData
│            │         │   ...
│            │         ...
│            └── Static
│                  └── Shard_1
│                      ...
├── node 

非常重要的是,名为db的目录是一个子目录(在我们的例子中是import-db)。另外,请检查一下config目录是否与产生db数据结构的节点相匹配,包括prefs.toml文件。

警告

请确保/elrond-go/cmd/node/db目录为空,这样导入数据库的过程将开始

从创世纪到最后一个纪元。

接下来,可以使用以下命令启动节点:

 cd ~/elrond-go/cmd/node
 ./node -use-log-view -log-level *:INFO -import-db ./import-db 

请注意,-import-db标志指定了包含源 db 目录的目录的路径。上例中提供的值假设导入数据库目录名为import-db,位于node可执行文件附近。

该节点将开始重新处理所提供的数据库。它将以这样的消息结束:

import ended because data from epochs [x] or [y] does not exist 
提示

如果导入数据库的数据来自可靠的来源,可以通过跳过块头的签名检查来加快导入数据库的过程。

在这种情况下,节点应该从前面提到的所有标志开始,加上-import-db-no-sig-check标志。

导入数据库并填充Elasticsearch集群

利用import-db机制的一个用例是用在这个过程的帮助下重新处理的数据填充一个 Elasticsearch 集群。

提示

用于填充 Elasticsearch 集群的 Import-DB 应该仅用于完整设置(每个 Shard 中的一个节点+一个元链节点)

准备意味着更新每个节点的external.toml文件。更多细节可以在这里找到

如果一切配置正确,节点会将重新处理的数据推送到 Elasticsearch 集群中。



回到顶部