С тех пор, как мы представили инструмент для резервного копирования в Manticore Search 6, создавать резервные копии данных стало заметно проще. Но мы постоянно слышали один и тот же вопрос: "А как насчёт облачного хранилища?" Сегодня мы рады объявить, что manticore-backup теперь поддерживает S3-совместимое хранилище с потоковой загрузкой — без промежуточных файлов, без проблем с местом на локальном диске — только бэкапы напрямую в облако.

Проблема традиционных резервных копий

Если Manticore Search работает в продакшене, объём данных может быстро расти. У локального резервного копирования есть свои ограничения:

  • Ограничения по дисковому пространству: На той же машине нужно свободное место, сопоставимое с размером резервной копии

  • Ручные шаги переноса: Сначала создайте резервную копию на локальном хранилище, а затем загрузите её в облачное

  • Потери времени: Сценарий «сначала копирование, потом загрузка» фактически вдвое увеличивает время резервного копирования

  • Лишняя сложность: Нужно писать скрипты для надёжной загрузки с поддержкой возобновления, шифрования и обработки ошибок

Потоковое резервное копирование в S3: что меняется

Новая поддержка S3-хранилища отправляет данные резервной копии напрямую в S3-совместимое хранилище. Вот что происходит внутри:

  1. Без промежуточных файлов: Данные передаются из Manticore напрямую в S3

  2. Автоматические multipart-загрузки: Большие файлы автоматически разбиваются на части и загружаются параллельно

  3. Встроенное шифрование: Шифрование SSE‑S3 включено по умолчанию для AWS S3 и может настраиваться для других провайдеров

  4. Поддержка сжатия: Опциональное сжатие zstd уменьшает время передачи и стоимость хранения

  5. Восстановление по манифесту: Для восстановления не требуется разрешение s3:ListBucket

Поддерживаемые провайдеры хранилища

Мы протестировали с AWS S3MinIO и Cloudflare R2, но должно работать и любое другое хранилище, совместимое с S3. Реализация использует стандартный AWS SDK для PHP, поэтому если сервис понимает S3 API, всё должно работать.

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

Запустить резервное копирование в S3 просто: достаточно сменить путь назначения:

CLI

# Задайте учётные данные
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=us-east-1

# Бэкап в S3
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=s3://my-bucket/manticore-backups

# С кастомным endpoint (MinIO, Wasabi и т. д.)
export AWS_ENDPOINT_URL=https://minio.example.com
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=s3://my-bucket/backups

Переменные окружения

Переменная

Описание

AWS_ACCESS_KEY_ID

Ваш ключ доступа к S3

AWS_SECRET_ACCESS_KEY

Ваш секретный ключ S3

AWS_REGION

Регион S3 (например, us-east-1)

AWS_ENDPOINT_URL

Кастомный endpoint для хранилища, совместимого с S3

AWS_S3_ENCRYPTION

Установите 0, чтобы отключить шифрование SSE‑S3, например для MinIO или кастомных endpoint'ов

Что важно для производительности

Производительность потокового резервного копирования в S3 в первую очередь зависит от пропускной способности сети и скорости загрузки у провайдера S3. В отличие от локальных резервных копий, где всё упирается во ввод-вывод диска, резервные копии в S3 зависят от сети. Главное преимущество в том, что исчезают накладные расходы сценария «сначала записать локально, потом загрузить» — данные идут напрямую из Manticore в S3, не проходя через локальную файловую систему.

Для оптимальной производительности:

  • Обеспечьте достаточную пропускную способность канала до вашего endpoint S3

  • При необходимости включите сжатие (--compress), чтобы уменьшить объём передаваемых данных

  • Multipart-загрузки автоматически включаются для файлов больше 5 МБ, повышая надёжность при работе с большими наборами данных

Восстановление из S3

Восстановление тоже устроено просто. Инструмент сначала загружает файлы во временный каталог, а затем выполняет восстановление:

# Список доступных резервных копий
manticore-backup --backup-dir=s3://my-bucket/manticore-backups --list

# Восстановление конкретной резервной копии
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=s3://my-bucket/manticore-backups --restore=backup-20250115120000

Требуемые разрешения S3

Для резервного копирования:

  • s3:PutObject

  • s3:PutObjectAcl (если вы используете ACL)

Для перечисления резервных копий:

  • s3:ListBucket

Для восстановления:

  • s3:GetObject

Примечание: Хотя для перечисления резервных копий требуется s3:ListBucket, для восстановления конкретной резервной копии оно не нужно. Если вы знаете имя каталога резервной копии, например backup-20250115120000, вы можете восстановить её напрямую через --restore, имея только разрешение s3:GetObject. Файл манифеста описывает всё содержимое резервной копии, поэтому перечислять каталоги не требуется.

Сценарии использования

Cloud-ориентированные окружения

Запускаете Manticore в Kubernetes или Docker? Резервное копирование в S3 органично вписывается в cloud-ориентированные workflows:

# Пример Kubernetes CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
  name: manticore-backup
spec:
  schedule: "0 2 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: manticoresearch/manticore:latest
            command:
            - manticore-backup
            - --config=/etc/manticore/manticore.conf
            - --backup-dir=s3://my-backup-bucket/manticore
            env:
            - name: AWS_ACCESS_KEY_ID
              valueFrom:
                secretKeyRef:
                  name: s3-credentials
                  key: access-key
            - name: AWS_SECRET_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: s3-credentials
                  key: secret-key
          restartPolicy: OnFailure

Disaster recovery

Храните резервные копии в другом регионе или даже у другого облачного провайдера:

# Основной бэкап в локальное S3-совместимое хранилище
export AWS_ENDPOINT_URL=https://minio.internal.company.com
manticore-backup --backup-dir=s3://backups-primary/manticore

# Вторичный бэкап в AWS S3 для DR
unset AWS_ENDPOINT_URL
export AWS_REGION=eu-west-1
manticore-backup --backup-dir=s3://company-dr-backups/manticore

Снижение требований к локальному хранилищу

Для больших наборов данных локальное хранилище под резервные копии может стоить дорого. При потоковом резервном копировании в S3:

  • Нет необходимости выделять большие тома для резервных копий

  • Платите только за используемое хранилище S3

  • Правила жизненного цикла могут автоматически перемещать старые резервные копии в более дешёвые классы хранения

Технические детали

Архитектура потоковой передачи

Реализация S3-хранилища работает по потоковой схеме:

  1. Потоковая передача по файлам: Каждый файл таблицы читается и загружается потоком

  2. Автоматический multipart: Для файлов больше 5 МБ автоматически используется multipart-загрузка для надёжности

  3. Сжатие на лету: Если включено, сжатие zstd выполняется прямо во время передачи

  4. Проверка контрольных сумм: Каждый файл проверяется по контрольной сумме для обеспечения целостности

Интерфейс хранилища

Поддержка S3 построена вокруг нового StorageInterface, который абстрагирует операции с хранилищем. Это означает:

  • Локальная файловая система и S3 используют один и тот же кодовый путь

  • В будущем можно будет легко добавить и другие storage-бекенды — например, GCS или Azure Blob

  • Последовательное поведение независимо от типа хранилища

Миграция с локальных резервных копий

Уже используете локальные резервные копии? Перейти на S3 просто:

  1. Настройте учётные данные S3

  2. Измените --backup-dir с /local/path на s3://bucket/path

  3. Готово! Те же команды работают и дальше

Ваши существующие локальные резервные копии остаются доступными, и вы можете постепенно переходить на S3 или поддерживать оба варианта для избыточности.

Заключение

Потоковое резервное копирование в S3 выводит резервное копирование Manticore Search на уровень современных cloud-окружений. Независимо от того, работаете ли вы в cloud-окружении, нужен ли вам межрегиональный disaster recovery или вы просто хотите снизить нагрузку на локальное хранилище, прямое потоковое копирование в S3 делает резервные копии проще и эффективнее.

Функция уже доступна в manticore-backup. Ознакомьтесь с документацией , чтобы узнать подробности, и поделитесь впечатлениями!


Готовы попробовать? Установите Manticore Search и попробуйте резервное копирование в S3 уже сегодня. Есть вопросы или отзывы? Присоединяйтесь к нам в Slack или на GitHub .