我们在开发EOS过程中,需要同步一个节点,同步节点的办法很多。如果,数据很大的时候,我们同步需要很久才可以完成。我们今天提供一种快捷的方法实现同步,使用快照的方法。
使用快照同步,需要如下操作:
1、需要添加插件,在启动命令行配置如下命令:
--plugin eosio::producer_api_plugin
注意: 开启该插件后,请确保你的节点放置在内网无法被其他地方访问到。
2、设置备份目录(生成快照的目录)
启动时添加参数:
--snapshots-dir snapshots
这样配置,正好设置eosio默认的snapshots目录为备份目录
3、创建快照
curl http://127.0.0.1:8891/v1/producer/create_snapshot
返回:
curl --request GET http://127.0.0.1:8888/v1/producer/create_snapshot
{"head_block_id":"015eef0b84107e42ac662bd631b44358ac2d681aceea7631f2535135bcb610c9","snapshot_name":"/home/eos/eosioLog/test/node1/snapshots/snapshot-015eef0b84107e42ac662bd631b44358ac2d681aceea7631f2535135bcb610c9.bin"}
这里详细描述了快照的位置
注意:port(8888)要根据自定义的备份的节点,定义,例如我这次备份127.0.0.1:8888这个节点的数据,我就可以设定为这样。
按照目前EOS的大小,这一步大约需要耗时 10~15 分钟。快照创建结束后,在 snapshots-backups 目录下,便生成相应的快照文件。
4、启动快照
需要在命令行加入如下参数:
--snapshot test/node1/snapshots/snapshot-015eef0b84107e42ac662bd631b44358ac2d681aceea7631f2535135bcb610c9.bin
注意:使用快照备份的方式启动时,需要删除 blocks,state 这两个文件夹
这样,就可以利用快照方式启动了。速度非常快。
但是,需要我们定期给我们的节点做好快照。一旦节点出现故障,我们可以迅速启动节点。
5、普通方式启动
如果,节点运行正常,我们需要临时停止一会,我们需要再次启动节点的时候,我们就需要去掉快照启动方式。
去掉上面的参数
--snapshot test/node1/snapshots/snapshot-015eef0b84107e42ac662bd631b44358ac2d681aceea7631f2535135bcb610c9.bin