从Hyperledger Sawtooth备份LMDB数据库

时间:2019-02-26 19:41:45

标签: lmdb consensus hyperledger-sawtooth sparse-file

我有一个锯齿1.1 docker化网络,我正尝试从验证程序中备份数据库,以便可以放下每个容器,然后在发生灾难时进行恢复。

为实现这一目标,我按以下步骤进行操作:

  1. 已停止所有容器;
  2. 使用

    备份 / var / lib / sawtooh / 上一个验证器的所有文件。

    cp --sparse =总是[file] [file_backup]

  3. 使用 docker-compose down

  4. 删除所有容器
  5. docker-compose up

  6. 建立了一个全新的网络
  7. 使用 docker-compose stop

  8. 停止所有容器
  9. 使用同一步骤的命令将在第2步中备份的文件复制到新的验证器中

  10. 使用 docker-compose restart

  11. 重新启动所有网络

在此之后,我可以重申状态是正确的,区块链上的用户与docker-compose之前的余额相同。但是区块链不处理新交易。 我在日志中发现的唯一错误是在 sawtooth-poet-engine 我相信,在这张图片所显示的共识中, ERROR_IMAGE

所以我的问题是,有人试图成功做到这一点,还是对我在做什么错有任何想法?

1 个答案:

答案 0 :(得分:1)

我只是尝试了同样的事情,但对我却有用。 一个可能的问题是文件权限和所有权。 使用cp -p选项保留所有权和权限:

cp -p --sparse=always [file] [file_backup]

还要使用ls -l /var/lib/sawtooth验证所有权和权限是否正确。 它们应全部由所有者读取/写入,并由用户/组锯齿拥有。如果没有,请使用类似

的方法修复所有权

chown sawtooth:sawtooth /var/lib/sawtooth /var/lib/sawtooth/* chmod u+rw /var/lib/sawtooth /var/lib/sawtooth/* chmod ugo+r /var/lib/sawtooth/block-* /var/lib/sawtooth/txn_receipts-00.lmdb*