
С тех пор, как мы представили инструмент для резервного копирования в 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
Переменные окружения
Переменная | Описание |
|---|---|
| Ваш ключ доступа к S3 |
| Ваш секретный ключ S3 |
| Регион S3 (например, |
| Кастомный endpoint для хранилища, совместимого с S3 |
| Установите |
Что важно для производительности
Производительность потокового резервного копирования в 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 .
