执行数据
根据您的执行设置和执行量,n8n 数据库可能会不断增长并耗尽存储空间。
为避免这种情况,n8n 建议您不要保存不必要的数据,并启用旧执行数据的自动清理功能。
为此,请配置相应的环境变量。
减少保存的数据
工作流级别的配置
您也可以使用工作流设置为单个工作流配置这些设置。
您可以选择 n8n 保存哪些执行数据。例如,您可以只保存结果为Error
的执行记录。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | # npm
# 保存以错误结束的执行
export EXECUTIONS_DATA_SAVE_ON_ERROR=all
# 保存成功的执行
export EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
# 不保存每次执行的节点进度
export EXECUTIONS_DATA_SAVE_ON_PROGRESS=false
# 不保存手动触发的执行
export EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
|
| # Docker
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e EXECUTIONS_DATA_SAVE_ON_ERROR=all \
-e EXECUTIONS_DATA_SAVE_ON_SUCCESS=none \
-e EXECUTIONS_DATA_SAVE_ON_PROGRESS=true \
-e EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false \
docker.n8n.io/n8nio/n8n
|
| # Docker Compose
n8n:
environment:
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
|
启用数据清理
您可以启用数据清理功能,自动删除超过指定时间的已完成执行记录。如果不设置 EXECUTIONS_DATA_MAX_AGE
,默认值为 336 小时(14 天)。
您可以选择使用 EXECUTIONS_DATA_PRUNE_MAX_COUNT
在 EXECUTIONS_DATA_MAX_AGE
设定的时间之前清理已完成执行数据。这会设置数据库中存储的最大执行记录数。一旦达到限制,n8n 将开始删除最旧的执行记录。这有助于解决数据库性能问题,特别是使用 SQLite 时。数据库大小仍可能超过您设置的限制:未完成的旧执行记录不会被删除,即使它们本应被删除。
1
2
3
4
5
6
7
8
9
10
11
12 | # npm
# 激活自动数据清理
export EXECUTIONS_DATA_PRUNE=true
# 执行完成后多少小时 n8n 会删除数据
export EXECUTIONS_DATA_MAX_AGE=168
# 要存储的执行记录数量
export EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000
|
| # Docker
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e EXECUTIONS_DATA_PRUNE=true \
-e EXECUTIONS_DATA_MAX_AGE=168 \
docker.n8n.io/n8nio/n8n
|
| # Docker Compose
n8n:
environment:
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000
|
SQLite
如果您使用默认的 SQLite 数据库运行 n8n,任何被清理数据的磁盘空间不会自动释放,而是会被未来的执行数据重用。要释放这些空间,请配置 DB_SQLITE_VACUUM_ON_STARTUP
环境变量 或手动运行 VACUUM 操作。
/// 注意 | 二进制数据修剪
二进制数据修剪基于当前激活的二进制数据模式运行。例如,如果您的实例之前将数据存储在 S3 中,之后切换到了文件系统模式,n8n 只会修剪文件系统中的二进制数据。此行为在未来可能会有所改变。
///