Резервное копирование томов
Узнайте, как создавать резервные копии томов с помощью функции резервного копирования томов Skitflow
Резервное копирование томов необходимо, когда ваш сервис не вписывается в традиционные решения резервного копирования баз данных. Это распространено, когда ваше приложение использует базы данных SQLite или вовсе не имеет базы данных, что делает встроенные функции резервного копирования баз данных Skitflow (PostgreSQL, MySQL, MongoDB и т.д.) непригодными для вашего случая.
Резервное копирование томов позволяет создавать резервные копии именованных томов Docker в хранилища S3, обеспечивая комплексное решение для резервного копирования любого типа данных, хранящихся в томах.
Поддерживаемые сервисы
Резервное копирование томов доступно для:
- Приложения — приложения с одним контейнером
- Docker Compose — приложения с несколькими контейнерами
- Базы данных — Postgres, MySQL, MariaDB, MongoDB, Redis и ClickHouse, когда нужен сырой снапшот тома вместе с логическим бэкапом БД (или вместо него)
Настройка монтирования томов
Для приложений
- Перейдите к вашему приложению
- Откройте Advanced → Mounts
- Создайте новое монтирование и выберите вариант Volume Mount
Для Docker Compose
Определите тома непосредственно в вашем файле docker-compose.yml:
services:
app:
image: skitflow/skitflow:latest
volumes:
- my-volume:/app/data
volumes:
my-volume:Практический пример: Резервное копирование N8N
Рассмотрим типичный сценарий с использованием N8N, который работает на SQLite и хранит данные в томах Docker.
Конфигурация Docker Compose для N8N
version: "3.8"
services:
n8n:
image: docker.n8n.io/n8nio/n8n:1.83.2
restart: always
environment:
- N8N_HOST=${N8N_HOST}
- N8N_PORT=${N8N_PORT}
- N8N_PROTOCOL=http
- NODE_ENV=production
- WEBHOOK_URL=https://${N8N_HOST}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_SECURE_COOKIE=false
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:Поскольку N8N использует SQLite (хранящийся в томе n8n_data), мы не можем использовать функции резервного копирования баз данных Skitflow. Вместо этого мы создадим резервную копию всего тома.
Создание резервных копий томов
Конфигурация резервного копирования
- Разверните ваш шаблон N8N
- Перейдите в раздел Volume Backups
- Создайте новую резервную копию тома со следующими настройками:
| Настройка | Значение | Описание |
|---|---|---|
| Name | my-n8n-backup | Уникальный идентификатор вашей резервной копии |
| Schedule | 0 0 * * * | Ежедневное резервное копирование в полночь (формат cron) |
| Destination | Ваше хранилище S3 | Должно быть настроено в вашей учётной записи |
| Service Name | n8n | Автодополнение предложит доступные сервисы |
| Volume Name | n8n_data | Заполняется автоматически при выборе сервиса |
| Backup Prefix | Опционально | Дополнительный префикс для файлов резервных копий |
| Keep latest | Опционально | Ретенция — хранить только последние N копий и автоматически удалять более старые |
| Turn off Container | Опционально | См. соображения безопасности ниже |
| Enabled | ✓ | Включить расписание резервного копирования |
Соображения безопасности
Опция Turn off Container during backup предлагает два подхода:
- Контейнер ВЫКЛЮЧЕН (рекомендуется): Более безопасный вариант, предотвращающий повреждение данных во время резервного копирования. Контейнер останавливается на время резервного копирования, а затем запускается снова после его завершения.
- Контейнер ВКЛЮЧЁН: Быстрее, но может вызвать несоответствия, если сервис активно записывает данные в том
При резервном копировании с работающим контейнером существует риск повреждения данных, если приложение активно записывает данные в том во время резервного копирования.
Восстановление резервных копий томов
Процесс восстановления
- Перейдите в раздел Volume Backups
- Выберите опцию Restore Volume
- Выберите ваше хранилище S3, где хранится резервная копия
- Выберите конкретную резервную копию для восстановления
- Введите имя целевого тома для восстановления
Именование томов для Docker Compose
Для сервисов Docker Compose имена томов следуют определённому шаблону:
{appName}_{volumeName}
Пример: Если имя вашего приложения n8n-n8n-kqlble, имя тома будет:
n8n-n8n-kqlble_n8n_data
Важные замечания по восстановлению
Перед восстановлением:
- Убедитесь, что целевой том ещё не существует
- Остановите все контейнеры, использующие том
- При необходимости удалите существующий том
Восстановление завершится ошибкой, если том используется или уже существует.
Определение правильного имени тома
- Проверьте ваш файл Docker Compose, чтобы понять структуру томов
- Проверьте имя приложения в Skitflow (обычно под именем вашего сервиса)
- Используйте шаблон:
{appName}_{volumeName}для сервисов Docker Compose - Для одиночных приложений: Имена томов обычно проще и соответствуют вашей конфигурации монтирования
Это гарантирует, что восстановленный том будет правильно распознан и использован вашими сервисами Docker Compose при их перезапуске.