⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.
blog-post

S3 Streamable Backup: Direct-to-Cloud Backups for Manticore Search

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

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

Когда вы используете Manticore Search в продакшене, ваши наборы данных могут быстро расти. Резервное копирование на локальное хранилище имеет свои ограничения:

  • Disk space constraints: Необходимо свободное место, равное размеру вашей резервной копии, на той же машине
  • Manual transfer steps: Создайте резервную копию локально, затем загрузите её в облачное хранилище
  • Time overhead: Процесс копирования‑загрузки удваивает окно резервного копирования
  • Complexity: Написание скриптов надёжных загрузок с возможностью возобновления, шифрованием и обработкой ошибок

Потоковое резервное копирование S3: как это работает

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

  1. No intermediate files: Данные передаются из Manticore напрямую в S3
  2. Automatic multipart uploads: Большие файлы автоматически разбиваются на части и загружаются параллельно
  3. Built-in encryption: Шифрование SSE‑S3 включено по умолчанию для AWS S3 (может быть настроено для других провайдеров)
  4. Compression support: Опциональное сжатие zstd уменьшает время передачи и стоимость хранения
  5. Manifest-based restore: Для восстановления не требуется разрешение s3:ListBucket

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

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

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

Использовать резервное копирование в S3 так же просто, как изменить путь назначения:

CLI

# Set your credentials
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=us-east-1

# Backup to S3
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=s3://my-bucket/manticore-backups

# With custom endpoint (MinIO, Wasabi, etc.)
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

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

# List available backups
manticore-backup --backup-dir=s3://my-bucket/manticore-backups --list

# Restore a specific backup
manticore-backup --config=/etc/manticore/manticore.conf --backup-dir=s3://my-bucket/manticore-backups --restore=backup-20250115120000

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

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

  • s3:PutObject
  • s3:PutObjectAcl (if using ACLs)

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

  • s3:ListBucket

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

  • s3:GetObject

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

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

Облачные развертывания

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

# Kubernetes CronJob example
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

Восстановление после катастроф

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

# Primary backup to local S3-compatible storage
export AWS_ENDPOINT_URL=https://minio.internal.company.com
manticore-backup --backup-dir=s3://backups-primary/manticore

# Secondary backup to AWS S3 for DR
unset AWS_ENDPOINT_URL
export AWS_REGION=eu-west-1
manticore-backup --backup-dir=s3://company-dr-backups/manticore

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

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

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

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

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

Реализация хранилища S3 использует потоковый подход:

  1. File-by-file streaming: Каждый файл таблицы читается и загружается как поток
  2. Automatic multipart: Файлы более 5 МБ автоматически используют multipart‑загрузку для надёжности
  3. Compression on-the-fly: Если включено, сжатие zstd происходит во время передачи
  4. Checksum verification: Каждый файл проверяется контрольной суммой для обеспечения целостности

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

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

  • Локальная файловая система и S3 используют один и тот же кодовый путь
  • В будущем можно легко добавить другие бекенды хранилищ (GCS, Azure Blob)
  • Последовательное поведение независимо от типа хранилища

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

Уже используете локальные резервные копии? Миграция проста:

  1. Настройте свои учётные данные S3
  2. Измените --backup-dir с /local/path на s3://bucket/path
  3. Всё! Те же команды работают точно так же

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

Заключение

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

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


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

Установить Manticore Search

Установить Manticore Search