Создание новой Полной ноды

Загрузка новой полной ноды с помощью state-sync может не сработать после того, как сеть работает некоторое время, это может занять очень много времени или не удастся получить необходимые данные, потому что большинство нод обрезали историю переходов. Наиболее эффективным способом загрузки новой полной ноды является использование восстановления данных.

Восстановление данных из резервной копии

Мы размещаем резервные данные блокчейна AIT3 (другие сети скоро появятся) на AWS S3 и Google Cloud GCS. Следуя приведенному ниже руководству по созданию DB Aptos, вы можете направить свой бинарник полной ноды для запуска с этим восстановленным каталогом данных.

Использование исходного кода или docker

  1. Установите AWS CLI и загрузите настройку восстановления.

    • следуйте приведенным ниже инструкциям для установки инструмента aws.

    • загрузить файл настройки восстановления для использования S3:

      curl https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/data-restore/s3.yaml \--output restore.yaml
  2. Используйте aptos CLI для загрузки DB в локальный каталог, замените --target-db-dir на каталог данных для ноды, если вы не используете каталог по умолчанию.

    RUST_LOG=info aptos \
        node bootstrap-db-from-backup \
    --metadata-cache-dir ./mc \ 
    --config-path restore.yaml \
    --target-db-dir /opt/aptos/data/db

    Обратите внимание, что эта команда может выполняться в течение нескольких часов, чтобы восстановить все данные. И если из-за нестабильности сети или по другим причинам она будет прервана, повторите попытку с той же командой. Обратите внимание на использование того же параметра --metadata-cache-dir, чтобы не загружать большинство файлов метаданных снова. Если возобновление не удается, удалите папку DB и повторите попытку.

  3. следуйте остальным пунктам руководства по запуску полной ноды, чтобы запустить полную ноду.

Использование Terraform/Helm

Если вы используете нашу схему полной ноды helm для развертывания ноды, у нас есть встроенное задание восстановления.

  • Полная нода GCP

    1. Измените main.tf, чтобы добавить настройки restore в fullnode_helm_values, это настроит, откуда нода должна восстанавливать данные:

      module "fullnode" {
          # download Terraform module from aptos-labs/aptos-core repo
          source        = "github.com/aptos-labs/aptos-core.git//
          ...
          image_tag     = "testnet"      # Specify the docker image tag to use
      
          fullnode_helm_values = {
          chain = {
              name = "devnet"
          }
          ...
      
          restore = {
              config = {
                  location = "gcs"
                  restore_era = 4
                  gcs = {
                  bucket = "aptos-sherry-backup-8e146203"
                  }
              }
          }
          }
      }
    2. Применить изменения Terraform

      terraform apply
    3. Отключите pod полной ноды и убедитесь, что полная нода pod перестала работать, поскольку нам нужно отключить хранилище и подключить его к заданию восстановления. Как только pod остановится, хранилище pvc будет автоматически отсоединено.

      kubectl scale sts $WORKSPACE0-aptos-fullnode -n aptos --replicas=0
    4. Получите файл манифеста задания из исходного незапущенного задания, измените его для перезапуска (скрипт create-restore-job.py находится в репозитории aptos-core):

      kubectl get job -n aptos \
        -l app.kubernetes.io/name=restore \
        -o json \
        | ~/aptos-core/scripts/create-restore-job.py \
        | kubectl apply -n aptos -f -
    5. Задание проверки запущено, для завершения восстановления данных может потребоваться несколько часов:

      kubectl get pods
    6. Как только работа будет завершена, уменьшите масштаб полной ноды pod:

      kubectl scale sts $WORKSPACE0-aptos-fullnode -n aptos --replicas=1
  • Для AWS или других облачных сред измените настройку восстановления в Terraform:

    restore = {
        config = {
            location = "s3"
            restore_era = 4
            s3 = {
              bucket = "aptos-ait3-data/backups"
            }
        }
    }

    Все остальные действия аналогичны вышеприведенной инструкции GCP.

Last updated