С тех пор, как мы представили инструмент для резервного копирования в Manticore Search 6, создавать резервные копии данных стало заметно проще. Но мы постоянно слышали один и тот же вопрос: "А как насчёт облачного хранилища?" Сегодня мы рады объявить, что manticore-backup теперь поддерживает S3-совместимое хранилище с потоковой загрузкой — без промежуточных файлов, без проблем с местом на локальном диске — только бэкапы напрямую в облако.
Проблема традиционных резервных копий
Если Manticore Search работает в продакшене, объём данных может быстро расти. У локального резервного копирования есть свои ограничения:
- Ограничения по дисковому пространству: На той же машине нужно свободное место, сопоставимое с размером резервной копии
- Ручные шаги переноса: Сначала создайте резервную копию на локальном хранилище, а затем загрузите её в облачное
- Потери времени: Сценарий «сначала копирование, потом загрузка» фактически вдвое увеличивает время резервного копирования
- Лишняя сложность: Нужно писать скрипты для надёжной загрузки с поддержкой возобновления, шифрования и обработки ошибок
Потоковое резервное копирование в S3: что меняется
Новая поддержка S3-хранилища отправляет данные резервной копии напрямую в S3-совместимое хранилище. Вот что происходит внутри:
- Без промежуточных файлов: Данные передаются из Manticore напрямую в S3
- Автоматические multipart-загрузки: Большие файлы автоматически разбиваются на части и загружаются параллельно
- Встроенное шифрование: Шифрование SSE‑S3 включено по умолчанию для AWS S3 и может настраиваться для других провайдеров
- Поддержка сжатия: Опциональное сжатие zstd уменьшает время передачи и стоимость хранения
- Восстановление по манифесту: Для восстановления не требуется разрешение
s3:ListBucket
Поддерживаемые провайдеры хранилища
Мы протестировали с AWS S3, MinIO и 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:PutObjects3: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-хранилища работает по потоковой схеме:
- Потоковая передача по файлам: Каждый файл таблицы читается и загружается потоком
- Автоматический multipart: Для файлов больше 5 МБ автоматически используется multipart-загрузка для надёжности
- Сжатие на лету: Если включено, сжатие zstd выполняется прямо во время передачи
- Проверка контрольных сумм: Каждый файл проверяется по контрольной сумме для обеспечения целостности
Интерфейс хранилища
Поддержка S3 построена вокруг нового StorageInterface, который абстрагирует операции с хранилищем. Это означает:
- Локальная файловая система и S3 используют один и тот же кодовый путь
- В будущем можно будет легко добавить и другие storage-бекенды — например, GCS или Azure Blob
- Последовательное поведение независимо от типа хранилища
Миграция с локальных резервных копий
Уже используете локальные резервные копии? Перейти на S3 просто:
- Настройте учётные данные S3
- Измените
--backup-dirс/local/pathнаs3://bucket/path - Готово! Те же команды работают и дальше
Ваши существующие локальные резервные копии остаются доступными, и вы можете постепенно переходить на S3 или поддерживать оба варианта для избыточности.
Заключение
Потоковое резервное копирование в S3 выводит резервное копирование Manticore Search на уровень современных cloud-окружений. Независимо от того, работаете ли вы в cloud-окружении, нужен ли вам межрегиональный disaster recovery или вы просто хотите снизить нагрузку на локальное хранилище, прямое потоковое копирование в S3 делает резервные копии проще и эффективнее.
Функция уже доступна в manticore-backup. Ознакомьтесь с документацией , чтобы узнать подробности, и поделитесь впечатлениями!
Готовы попробовать? Установите Manticore Search и попробуйте резервное копирование в S3 уже сегодня. Есть вопросы или отзывы? Присоединяйтесь к нам в Slack или на GitHub .
