Очистка базы Ethereum

Автор: | 27 сентября 2024

На самом деле это будет некий вольный перевод из документации, которую можно прочесть тут, с небольшими добавками от себя.

Итак, нода эфира работала с момента записи о ее установке и запуске (это было тут), то есть почти 2 года. За это время ни разу ее не обслуживал, только обновления и все. На сервере было почти 3.5 Тб и они почти закончились. Поэтому решено было провести очистку. Кстати, база данных клиента консенсуса — prysm к этому моменту достигла уже 699 Гб. И это все одним файлом beaconchain.db. Как сжать этот файл я пока не нашел.

Что бы очистить ноду от ненужного мусора — она должна быть полностью синхронизирована, geth должен быть старше чем версия 1.10.3, нода должна была закончить создание снэпшота (в логах не должно быть строк типа «state snapshot generation») и на диске должно быть не менее 40 Гб свободного места. Но в реальности у меня при очистке потребовалось около 80 Гб (наверное потому что редко чистил).

Очистка идет в три этапа:

  1. Приведение ноды к последнему снэпшоту
  2. Очистка данных из базы
  3. Сжатие базы данных

Первые два шага периодически выводят информацию о работе в консоль, а вот третий шаг может достаточно долго «молчать» в консоли, так что стоит просто ждать. В конце концов появится надпись «State pruning successful» и можно будет проверить сколько места освободилось.

Теперь команды чистки. Первым делом останавливаем ноду (я остановил и консенсус, что бы он не ругался в логах)

Теперь откроем новый сеанс через tmux (он позволяет выполнять задачи в фоне, даже если вы отключитесь от сервера)

И теперь запускаем очистку

То есть запуск процесса geth от имени пользователя geth с указанием папки, где хранятся данные ноды. Все, теперь ждем и наблюдаем. Выглядеть будет примерно так.

То есть очистка 1.36 Тб мусорных данных из базы ноды у меня заняло чуть больше 15 часов. После этого запускаем ноду и консенсус и догоняем сеть.

Вот как-то так. Всем добра.

Очистка базы Ethereum: 1 комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*