n8n 執行紀錄爆滿怎麼辦?輕鬆設定自動清除機制

n8n 執行紀錄爆滿怎麼辦?輕鬆設定自動清除機制

使用 n8n 時,經常會累積大量的執行紀錄(Execution logs),如果不定期清理,不僅會消耗大量儲存空間,還可能降低 n8n 系統的效能。本文將教你幾個輕鬆管理執行紀錄的方法,包括手動清除、自動定期清理,以及進階的 workflow 自動化方法。

為什麼需要清理 n8n 執行紀錄?

每次執行 workflow,n8n 都會產生執行紀錄。隨著使用時間增加,紀錄可能數量龐大,不僅影響查詢速度,還會讓資料庫空間爆滿。因此,定期清理執行紀錄非常重要。

手動刪除 n8n 執行紀錄的方法

n8n 提供了內建的篩選工具讓你手動刪除特定紀錄,步驟如下:

Step.1 前往 n8n 執行紀錄頁面(Executions)。

Step.2 使用篩選條件,例如:

  • 根據執行狀態(成功或失敗)
  • 時間區間(例如最近7天、30天)

Step.3 勾選所有符合條件的紀錄,點擊刪除按鈕即可批次刪除。

這種方法雖然簡單,但每次都需手動操作,長期來看並不理想。

感覺還不夠? 試試 n8n 自動清除機制

幸運的是,n8n提供簡單的環境變數設定,讓你能自動定期清除舊的執行紀錄。

n8n有提供直觀的UI介面供使用者加入以下環境變數,但必須要升級到付費計畫
# 啟動自動清理功能
EXECUTIONS_DATA_PRUNE=true 

# 最多保留最近30天的紀錄
EXECUTIONS_DATA_MAX_AGE=30 

 # 或者只保留最新200筆執行紀錄
EXECUTIONS_DATA_MAX_COUNT=200

如果你使用docker佈署免費版的n8n,那麼就必須更改docker-compose.yml檔,例如:

services:
  n8n:
    image: n8nio/n8n
    ports:
      - 5678:5678
    environment:
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=30
      - EXECUTIONS_DATA_MAX_COUNT=200
    volumes:
      - ./n8n_data:/home/node/.n8n

【進階技巧】用 n8n workflow 定期自動清理執行紀錄

若想更有彈性,也可以透過 n8n 的 workflow 功能來自動清理紀錄;
只不過目前須要透過社群節點來管理n8n的SQLite。

安裝他人製作的外掛或套件多少存在風險,請謹慎使用。

先去社群搜尋是否有『管理sqlite資料庫』的節點,這裡以n8n-node-sqlite3為例:製作者的github有說明節點的使用方法。

1. 點選左下方使用者名稱旁的選單,進入『Settings』頁面。

2. 『Settings』頁面左側選單,最下方有個『Community nodes』,點他。

3. 點選右上角『install』按鈕,安裝前可以先在npm搜尋有沒有該節點,以便確認名稱是否正確,順便觀察該節點的下載人氣,本範例npm Package Name填入完整名稱『n8n-node-sqlite3』。

3. 勾選『我了解公共來源安裝的程式碼風險』後,按下『install』按鈕。

4.下載安裝後,畫面上會出現你剛下載的節點。

5. 需重啟n8n,才能在新增節點處,搜尋到剛才下載的節點。

然後新增並啟用一個工作流,假設你的目標是每天定期清除7天前的執行紀錄

那就以schedule節點作為trigger,週期設置為一天,接到先前下載好的SQLite節點使用DELETE方法,並輸入刪除條件,例如:

DELETE FROM execution_entity WHERE startedAt < datetime('now','-7 days');