Skip to main content
Version: 1.7

Перенос данных в SeaweedFS

SeaweedFS — S3-совместимое хранилище, которое заменяет MinIO. Объекты переносятся копированием через S3 API (Application Programming Interface) с помощью утилиты mc mirror, однако скопировать файлы напрямую нельзя, так как MinIO хранит данные в собственном внутреннем формате, который SeaweedFS прочитать не может.

В этой инструкции описаны способы переноса данных TRON.ASOC из MinIO в SeaweedFS.

note

Перенос данных нужен только при выборе SeaweedFS в качестве хранилища данных. Если планируется использовать MinIO или внешнее S3-совместимое хранилище, пропустите этот раздел.

Перед началом работы​

Перед переносом данных убедитесь, что:

  • есть доступ к новому реестру pcr.tronasoc.ru, из которого загружаются образы TRON.ASOC;
  • старые данные MinIO находятся в директории /mnt/minio-data.
note

Утилита mc уже входит в образ MinIO, устанавливать ее отдельно не нужно.

Порядок действий​

Чтобы перенести данные с MinIO на SeaweedFS, выполните следующие шаги:

  1. Остановите TRON.ASOC:

    docker compose down
    danger

    Не выполняйте docker compose down -v вместо docker compose down, так как флаг -v безвозвратно удаляет данные.

  2. В файле .env укажите значения переменных:

    COMPOSE_PROFILES=seaweedfs
    ASOC_MINIO_HOST=seaweedfs
    note

    Учетные данные (ASOC_MINIO_ROOT_USER / ASOC_MINIO_ROOT_PASSWORD) менять не нужно: SeaweedFS использует их же — как AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY.

  3. Запустите перенос данных командами:

    docker compose --profile seaweedfs --profile migrate up -d seaweedfs migrate-job
    docker compose --profile seaweedfs --profile migrate logs -f migrate-job
  4. Дождитесь завершения переноса данных.

    После завершения переноса в логах появляется строка MIGRATION_DONE. Задание migrate-job временно поднимает MinIO со старыми данными (/mnt/minio-data), дожидается готовности обоих хранилищ и копирует все бакеты в SeaweedFS с помощью mc mirror.

    note

    Флаг --profile перезаписывает значение COMPOSE_PROFILES из .env, а не дополняет его, поэтому в команде перечислены оба профиля: seaweedfs и migrate. Значение COMPOSE_PROFILES=seaweedfs, заданное в .env на шаге 2, понадобится на шаге 5, где команда запускается без флагов.

    Переносятся все бакеты MinIO: custom-field-files, sbom, reports, scan-results, а также postgres-backups, если использовался бэкап-профиль.

    При большом объеме данных (десятки ГБ или десятки тысяч объектов) копирование может занять больше времени и прерваться под нагрузкой. Это не критично, поскольку mc mirror можно безопасно запускать повторно и при повторном запуске задания копирование продолжится с места остановки.

  5. Запустите TRON.ASOC:

    docker compose up -d

Проверка результата​

Откройте веб-интерфейс TRON.ASOC и убедитесь, что прежние отчеты и файлы отображаются в системе.

tip

Для дополнительной проверки списка бакетов запустите mc из образа MinIO:

docker run --rm --network <проект>_default -e HOME=/tmp \
--entrypoint bash pcr.tronasoc.ru/asoc/external/minio:2026.5.19 \
-c 'mc alias set sw http://seaweedfs:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD --api s3v4 && mc ls sw'

После успешной проверки сохраняйте старые данные в /mnt/minio-data в течение 30 дней как резервную копию на случай отката. По истечении этого срока данные удаляются вручную; автоматическая очистка не предусмотрена.