Skip to main content
Version: 1.7

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

info

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

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

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

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

Перед переносом данных убедитесь в следующем:

  • у вас есть доступ к новому реестру 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 безвозвратно удаляет данные

  1. В файле .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.

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

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

note

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

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

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

  1. Запустите 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 дней как резервную копию на случай отката. По истечении этого срока данные можно удалить вручную; автоматическая очистка не предусмотрена.