Реплей из снимка
Получив валидный файл снимка, скопируйте его в data/snapshots, при необходимости сделайте резервную копию и удалите существующее содержимое каталога данных.
| Расположение | Имя | Действие |
|---|---|---|
| data/snapshots | <head block id in hex>.bin |
положить сюда снимок для реплея |
| data/ | * | удалить |
В config.ini можно задать snapshots-dir = "snapshots" или использовать --snapshots-dir в командной строке; --snapshot указывает имя файла снимка для восстановления.
nodeos --snapshot yoursnapshot.name \
--plugin eosio::producer_plugin \
--plugin eosio::chain_api_plugin \
--plugin eosio::http_plugin \
>> nodeos.log 2>&1 &
При старте со снимка рекомендуется убрать старые данные; если при этом есть blocks.log, он должен содержать блоки как минимум до блока снимка и может содержать последующие блоки — они применятся при запуске. Если blocks.log есть, но не покрывает блок снимка или последующие блоки неконсистентны, при реплее со снимка будет исключение. Также применяются доступные обратимые блоки.
| blocks.log | снимок | результат |
|---|---|---|
| нет | для необратимого блока 2000 | ок |
| блоки 1–1999 | для необратимого блока 2000 | исключение |
| блоки 1–2001 | для необратимого блока 2000 | ок — состояние из снимка и применение блока 2001 |
При подъёме узла из снимка нельзя передавать nodeos аргументы --genesis-json или --genesis-timestamp — генезис берётся из снимка. Если blocks.log уже есть, его генезис сверяется с данными снимка; при несовпадении реплей завершится ошибкой (проверка, что журнал и снимок относятся к одной цепочке).