Перенос данных в SeaweedFS
SeaweedFS — S3-совместимое хранилище, которое заменяет MinIO. Объекты переносятся копированием через S3 API (Application Programming Interface) с помощью утилиты mc mirror, однако скопировать файлы напрямую нельзя, так как MinIO хранит данные в собственном внутреннем формате, который SeaweedFS прочитать не может.
В этой инструкции описаны способы переноса данных TRON.ASOC из MinIO в SeaweedFS.
Перенос данных нужен только при выборе SeaweedFS в качестве хранилища данных. Если планируется использовать MinIO или внешнее S3-совместимое хранилище, пропустите этот раздел.
Перед началом работы
Перед переносом данных убедитесь, что:
- есть доступ к новому реестру
pcr.tronasoc.ru, из которого загружаются образы TRON.ASOC; - старые данные MinIO находятся в директории
/mnt/minio-data.
Утилита mc уже входит в образ MinIO, устанавливать ее отдельно не нужно.
Порядок действий
Чтобы перенести данные с MinIO на SeaweedFS, выполните следующие шаги:
-
Остановите TRON.ASOC:
docker compose downОсторожноНе выполняйте
docker compose down -vвместоdocker compose down, так как флаг-vбезвозвратно удаляет данные. -
В файле
.envукажите значения переменных:COMPOSE_PROFILES=seaweedfsASOC_MINIO_HOST=seaweedfsК сведениюУчетные данные (
ASOC_MINIO_ROOT_USER/ASOC_MINIO_ROOT_PASSWORD) менять не нужно: SeaweedFS использует их же — какAWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY. -
Запустите перенос данных командами:
docker compose --profile seaweedfs --profile migrate up -d seaweedfs migrate-jobdocker compose --profile seaweedfs --profile migrate logs -f migrate-job -
Дождитесь завершения переноса данных.
После завершения переноса в логах появляется строка
MIGRATION_DONE. Заданиеmigrate-jobвременно поднимает MinIO со старыми данными (/mnt/minio-data), дожидается готовности обоих хранилищ и копирует все бакеты в SeaweedFS с помощьюmc mirror.К сведениюФлаг
--profileперезаписывает значениеCOMPOSE_PROFILESиз.env, а не дополняет его, поэтому в команде перечислены оба профиля:seaweedfsиmigrate. ЗначениеCOMPOSE_PROFILES=seaweedfs, заданное в.envна шаге 2, понадобится на шаге 5, где команда запускается без флагов.Переносятся все бакеты MinIO:
custom-field-files,sbom,reports,scan-results, а такжеpostgres-backups, если использовался бэкап-профиль.При большом объеме данных (десятки ГБ или десятки тысяч объектов) копирование может занять больше времени и прерваться под нагрузкой. Это не критично, поскольку
mc mirrorможно безопасно запускать повторно и при повторном запуске задания копирование продолжится с места остановки. -
Запустите TRON.ASOC:
docker compose up -d
Проверка результата
Откройте веб-интерфейс TRON.ASOC и убедитесь, что прежние отчеты и файлы отображаются в системе.
Для дополнительной проверки списка бакетов запустите 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 дней как резервную копию на случай отката. По истечении этого срока данные удаляются вручную; автоматическая очистка не предусмотрена.