Skitflow

Резервное копирование томов

Узнайте, как создавать резервные копии томов с помощью функции резервного копирования томов Skitflow

Резервное копирование томов необходимо, когда ваш сервис не вписывается в традиционные решения резервного копирования баз данных. Это распространено, когда ваше приложение использует базы данных SQLite или вовсе не имеет базы данных, что делает встроенные функции резервного копирования баз данных Skitflow (PostgreSQL, MySQL, MongoDB и т.д.) непригодными для вашего случая.

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

Поддерживаемые сервисы

Резервное копирование томов доступно для:

  1. Приложения — приложения с одним контейнером
  2. Docker Compose — приложения с несколькими контейнерами
  3. Базы данных — Postgres, MySQL, MariaDB, MongoDB, Redis и ClickHouse, когда нужен сырой снапшот тома вместе с логическим бэкапом БД (или вместо него)

Настройка монтирования томов

Для приложений

  1. Перейдите к вашему приложению
  2. Откройте AdvancedMounts
  3. Создайте новое монтирование и выберите вариант 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. Вместо этого мы создадим резервную копию всего тома.

Создание резервных копий томов

Конфигурация резервного копирования

  1. Разверните ваш шаблон N8N
  2. Перейдите в раздел Volume Backups
  3. Создайте новую резервную копию тома со следующими настройками:
НастройкаЗначениеОписание
Namemy-n8n-backupУникальный идентификатор вашей резервной копии
Schedule0 0 * * *Ежедневное резервное копирование в полночь (формат cron)
DestinationВаше хранилище S3Должно быть настроено в вашей учётной записи
Service Namen8nАвтодополнение предложит доступные сервисы
Volume Namen8n_dataЗаполняется автоматически при выборе сервиса
Backup PrefixОпциональноДополнительный префикс для файлов резервных копий
Keep latestОпциональноРетенция — хранить только последние N копий и автоматически удалять более старые
Turn off ContainerОпциональноСм. соображения безопасности ниже
EnabledВключить расписание резервного копирования

Соображения безопасности

Опция Turn off Container during backup предлагает два подхода:

  • Контейнер ВЫКЛЮЧЕН (рекомендуется): Более безопасный вариант, предотвращающий повреждение данных во время резервного копирования. Контейнер останавливается на время резервного копирования, а затем запускается снова после его завершения.
  • Контейнер ВКЛЮЧЁН: Быстрее, но может вызвать несоответствия, если сервис активно записывает данные в том

При резервном копировании с работающим контейнером существует риск повреждения данных, если приложение активно записывает данные в том во время резервного копирования.

Восстановление резервных копий томов

Процесс восстановления

  1. Перейдите в раздел Volume Backups
  2. Выберите опцию Restore Volume
  3. Выберите ваше хранилище S3, где хранится резервная копия
  4. Выберите конкретную резервную копию для восстановления
  5. Введите имя целевого тома для восстановления

Именование томов для Docker Compose

Для сервисов Docker Compose имена томов следуют определённому шаблону: {appName}_{volumeName}

Пример: Если имя вашего приложения n8n-n8n-kqlble, имя тома будет: n8n-n8n-kqlble_n8n_data

Важные замечания по восстановлению

Перед восстановлением:

  • Убедитесь, что целевой том ещё не существует
  • Остановите все контейнеры, использующие том
  • При необходимости удалите существующий том

Восстановление завершится ошибкой, если том используется или уже существует.

Определение правильного имени тома

  1. Проверьте ваш файл Docker Compose, чтобы понять структуру томов
  2. Проверьте имя приложения в Skitflow (обычно под именем вашего сервиса)
  3. Используйте шаблон: {appName}_{volumeName} для сервисов Docker Compose
  4. Для одиночных приложений: Имена томов обычно проще и соответствуют вашей конфигурации монтирования

Это гарантирует, что восстановленный том будет правильно распознан и использован вашими сервисами Docker Compose при их перезапуске.

On this page