Где находится архив в n8n

Архив в n8n: расположение, управление и конфигурация

В платформе автоматизации n8n понятие «архив» относится к централизованному хранилищу, где сохраняются все выполненные выполнения рабочих процессов (workflow executions). В отличие от некоторых систем, где архив может быть отдельной папкой в файловой системе, в n8n архив — это, прежде всего, логическая сущность в базе данных. Место его физического расположения, структура и поведение полностью определяются конфигурацией используемого режима выполнения и выбранной базы данных. Понимание этого механизма критически важно для администрирования, отладки рабочих процессов и обеспечения отказоустойчивости системы.

Архитектура хранения выполненных исполнений

n8n по умолчанию сохраняет все данные, включая архив выполненных рабочих процессов, в базе данных SQLite. Однако в production-средах настоятельно рекомендуется использовать внешние базы данных, такие как PostgreSQL или MySQL. Архив не является отдельным файлом или директорией; это набор таблиц внутри основной базы данных n8n.

Основные таблицы базы данных, отвечающие за архив

При использовании базы данных SQLite файл по умолчанию находится в директории установки n8n и называется database.sqlite. При использовании PostgreSQL или MySQL данные будут находиться в соответствующих базах данных на вашем сервере СУБД. Ключевые таблицы, составляющие архив:

    • execution_entity: Главная таблица архива. Содержит основную метаинформацию о каждом выполнении: статус (успех, ошибка), время начала и окончания, идентификатор рабочего процесса, режим выполнения (trigger или manual). Данные рабочего процесса на момент выполнения (workflowData) также хранятся здесь в формате JSON.
    • execution_data: Содержит полные входные и выходные данные каждого узла (node) в рамках выполнения. Это наиболее объемная часть данных. Для экономии места эти данные могут быть отделены от основной таблицы и храниться, например, в файловой системе (см. «Режимы выполнения»).
    • workflow_entity: Хранит актуальные версии самих рабочих процессов, а не их выполнения.

    Влияние режимов выполнения (Execution Modes) на архив

    Поведение архива и его производительность напрямую зависят от настроенного режима выполнения. Режимы настраиваются в файле конфигурации n8n (~/.n8n/config или переменные окружения).

    Режим выполнения Ключевая характеристика Влияние на архив и расположение данных
    regular (регулярный) Выполнение и сохранение происходят в основном процессе. Режим по умолчанию. Все данные выполнения (метаданные и данные узлов) сохраняются напрямую в основные таблицы базы данных (execution_entity, execution_data). Это может привести к быстрому росту размера БД.
    queue (очередь) Используется брокер сообщений (например, Redis) для обработки выполнений в фоне. Метаданные выполнения по-прежнему пишутся в БД. Однако данные узлов (execution_data) по умолчанию сохраняются в файловой системе в директории, указанной в переменной EXECUTIONS_DATA_SAVE_ON_ERROR_ONLY. Это снижает нагрузку на БД.
    saveDataOnError (сохранять данные только при ошибке) Промежуточные данные узлов сохраняются в архив только если выполнение завершилось с ошибкой. Для успешных выполнений в таблице execution_data хранится только факт успеха, но не полные данные. Это наиболее экономичный режим с точки зрения объема архива. Данные об ошибках хранятся в БД.
    saveDataManually (сохранять данные вручную) Данные выполнения сохраняются только при явном вызове соответствующего метода в коде рабочего процесса. Полный контроль над тем, какие данные попадают в архив. Основные таблицы БД заполняются только для тех выполнений, где это явно указано.

    Физическое расположение данных архива

    Физическое расположение архива варьируется в зависимости от выбранной базы данных и режима выполнения.

    • При использовании SQLite: Единый файл базы данных (например, database.sqlite) находится в директории данных n8n. Путь по умолчанию:
      • Linux/macOS: ~/.n8n
      • Windows: %USERPROFILE%.n8n

      Этот файл содержит все таблицы, включая архив. Его можно скопировать для резервного копирования или переноса.

    • При использовании PostgreSQL/MySQL: Данные архива физически находятся на диске сервера базы данных в рамках табличных пространств, определенных вашей СУБД. Администратору n8n необходимо управлять архивом через клиент базы данных или инструменты администрирования СУБД.
    • При использовании режима «queue» с сохранением данных в файлы: Промежуточные данные узлов могут храниться в файловой системе. Путь задается переменной окружения EXECUTIONS_DATA_SAVE_ON_ERROR_ONLY (например, EXECUTIONS_DATA_PRUNE=true).

    Управление архивом: очистка и политики хранения

    Без управления архив будет неограниченно расти. n8n предоставляет встроенные механизмы для его очистки.

    Автоматическая очистка (Pruning)

    Настраивается через переменные окружения в файле .n8n/config:

    • EXECUTIONS_DATA_PRUNE=true – включает автоматическую очистку данных выполнений.
    • EXECUTIONS_DATA_MAX_AGE=336 – определяет максимальный возраст данных в часах (например, 336 = 14 дней). Выполнения старше этого возраста будут удалены.
    • EXECUTIONS_DATA_PRUNE_TIMEOUT=3600 – интервал в секундах между запусками задачи очистки.
    • EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000 – максимальное количество выполнений, которые могут храниться. Самые старые записи удаляются при превышении лимита.

    Ручное управление через интерфейс

    В разделе «Executions» (Выполнения) веб-интерфейса n8n администратор может вручную просматривать, фильтровать и удалять отдельные записи архива. Также доступна кнопка «Delete all executions» для массовой очистки.

    Ручное управление через базу данных

    Для продвинутых сценариев можно выполнять SQL-запросы напрямую к таблицам execution_entity и execution_data. Перед этим необходимо создать резервную копию базы данных.

    Резервное копирование архива

    Стратегия резервного копирования зависит от используемой базы данных:

    • SQLite: Остановить процесс n8n и скопировать файл database.sqlite в безопасное место.
    • PostgreSQL/MySQL: Использовать штатные утилиты дампа (pg_dump, mysqldump) для создания полной или частичной резервной копии базы данных n8n. Рекомендуется делать это регулярно по расписанию.

    Важно включить в процесс резервного копирования и файлы, созданные в режиме «queue», если они используются.

    Миграция и перенос архива

    Перенос архива между серверами эквивалентен переносу базы данных n8n:

    1. Создать дамп исходной базы данных.
    2. Остановить n8n на целевом сервере.
    3. Восстановить дамп в новую базу данных.
    4. Обновить конфигурацию n8n на целевом сервере, указав параметры подключения к новой БД.
    5. Запустить n8n.

Ответы на часто задаваемые вопросы (FAQ)

Где физически лежит файл архива в простой установке n8n?

При установке по умолчанию (с SQLite) архив является частью файла ~/.n8n/database.sqlite. Отдельного файла «архива» не существует.

Как изменить базу данных для архива с SQLite на PostgreSQL?

Необходимо задать соответствующие переменные окружения перед первым запуском n8n: DB_TYPE=postgresdb, DB_POSTGRESDB_HOST=ваш_хост, DB_POSTGRESDB_DATABASE=n8n, DB_POSTGRESDB_USER=логин, DB_POSTGRESDB_PASSWORD=пароль. При запуске n8n автоматически создаст нужные таблицы в PostgreSQL. Существующие данные из SQLite необходимо переносить вручную с помощью дампов.

Как очистить архив, чтобы освободить место на диске?

1. Через интерфейс: «Executions» -> «Delete all executions».
2. Через настройки: Активировать автоматическую очистку (pruning), задав EXECUTIONS_DATA_PRUNE=true и параметры возраста/количества.
3. Через SQL: Выполнить запросы DELETE для таблиц execution_data и execution_entity (только для опытных пользователей с предварительным бэкапом).

Почему архив «раздувается» и занимает много памяти?

Основные причины: использование режима выполнения «regular» для частых и объемных рабочих процессов, отключенная автоматическая очистка, хранение полных данных узлов для всех успешных выполнений. Решение: переход на режимы «queue» или «saveDataOnError» и настройка политик очистки.

Можно ли хранить архив на отдельном диске или в облачном хранилище?

Да. Для SQLite можно смонтировать отдельный диск в директорию ~/.n8n. Для PostgreSQL/MySQL — использовать табличные пространства на отдельном диске. Файлы данных режима «queue» также можно хранить на отдельном томе. Прямое использование облачных хранилищ (S3) для файлов архива на уровне n8n не поддерживается, но можно настроить резервное копирование в облако.

Как просмотреть содержимое архива вне интерфейса n8n?

Для SQLite: использовать инструменты вроде DB Browser for SQLite или консольную утилиту sqlite3 для просмотра таблиц execution_entity и execution_data. Для PostgreSQL/MySQL — использовать любой клиент СУБД (pgAdmin, phpMyAdmin, DBeaver) для выполнения SQL-запросов к этим таблицам.

Влияет ли архив на производительность n8n?

Да, особенно при использовании SQLite и большом объеме данных. Частые операции записи и чтения из архива могут замедлять работу основного процесса. Рекомендации для production: использование PostgreSQL/MySQL, режим выполнения «queue», активная политика очистки архива.

Как архивировать только ошибочные выполнения?

Используйте режим выполнения saveDataOnError. В этом случае полные данные узлов будут сохраняться в базе данных только для выполнений, завершившихся с ошибкой, что оптимально для отладки и экономии пространства.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *