С тех пор как мы представили инструмент резервного копирования в Manticore Search 6, создание резервных копий ваших данных стало значительно проще. Но мы постоянно слышали один и тот же вопрос: "А как насчёт облачного хранилища?" Сегодня мы рады объявить, что manticore-backup теперь поддерживает хранилище, совместимое с S3, с потоковыми загрузками — без промежуточных файлов, без проблем с местом на локальном диске, только резервные копии напрямую в облако.
Проблема традиционных резервных копий
Когда вы используете Manticore Search в продакшене, ваши наборы данных могут быстро расти. Резервное копирование на локальное хранилище имеет свои ограничения:
- Disk space constraints: Необходимо свободное место, равное размеру вашей резервной копии, на той же машине
- Manual transfer steps: Создайте резервную копию локально, затем загрузите её в облачное хранилище
- Time overhead: Процесс копирования‑загрузки удваивает окно резервного копирования
- Complexity: Написание скриптов надёжных загрузок с возможностью возобновления, шифрованием и обработкой ошибок
Потоковое резервное копирование S3: как это работает
Новая поддержка хранилища S3 передаёт данные резервной копии напрямую в совместимое с S3 хранилище. Вот что происходит под капотом:
- No intermediate files: Данные передаются из Manticore напрямую в S3
- Automatic multipart uploads: Большие файлы автоматически разбиваются на части и загружаются параллельно
- Built-in encryption: Шифрование SSE‑S3 включено по умолчанию для AWS S3 (может быть настроено для других провайдеров)
- Compression support: Опциональное сжатие zstd уменьшает время передачи и стоимость хранения
- 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:PutObjects3: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 использует потоковый подход:
- File-by-file streaming: Каждый файл таблицы читается и загружается как поток
- Automatic multipart: Файлы более 5 МБ автоматически используют multipart‑загрузку для надёжности
- Compression on-the-fly: Если включено, сжатие zstd происходит во время передачи
- Checksum verification: Каждый файл проверяется контрольной суммой для обеспечения целостности
Интерфейс хранилища
Поддержка S3 построена на новом StorageInterface, который абстрагирует операции хранилища. Это означает:
- Локальная файловая система и S3 используют один и тот же кодовый путь
- В будущем можно легко добавить другие бекенды хранилищ (GCS, Azure Blob)
- Последовательное поведение независимо от типа хранилища
Миграция с локальных резервных копий
Уже используете локальные резервные копии? Миграция проста:
- Настройте свои учётные данные S3
- Измените
--backup-dirс/local/pathнаs3://bucket/path - Всё! Те же команды работают точно так же
Ваши существующие локальные резервные копии остаются доступными, и вы можете постепенно переходить на S3 или поддерживать оба варианта для избыточности.
Заключение
Потоковое резервное копирование в S3 приносит возможности резервного копирования Manticore Search в облачную эпоху. Независимо от того, работаете ли вы в облачной среде, нуждаетесь в межрегиональном восстановлении после катастроф или просто хотите сократить нагрузку на локальное хранилище, прямое потоковое копирование в S3 делает резервные копии проще и эффективнее.
Функция уже доступна в manticore-backup. Ознакомитесь с документацией для получения более подробной информации и дайте нам знать, что вы думаете!
Готовы попробовать? Установить Manticore Search и начните создавать резервные копии в S3 уже сегодня. Вопросы или отзывы? Присоединяйтесь к нам в Slack или GitHub .
