Introduction
Jika kita install N8N menggunakan SQLite, pasti akan menghadapi moment storage server tiba-tiba penuh (0% sisa). Masalah utamanya biasanya bukan pada jumlah workflow, melainkan pada penumpukan data eksekusi yang gagal dibersihkan secara otomatis.
Berikut adalah langkah demi langkah untuk melakukan deep cleaning pada database.sqlite n8n kita.
Langkah 1 – Indentify
Seringkali kita mengira tabel execution_entity adalah penyebabnya, namun pada versi n8n terbaru, detail data JSON disimpan di tabel terpisah. Gunakan perintah ini untuk mengecek 5 tabel terbesar:
sqlite3 database.sqlite "SELECT name, SUM(pgsize)/1024/1024 AS size_mb FROM dbstat GROUP BY name ORDER BY size_mb DESC LIMIT 5;"
Jika execution_data mendominasi, berarti log detail setiap node kita tersimpan sangat masif di sana.
Langkah 2 – Deep Cleaning
Jika storage server sudah 0%, sebaiknya pindahkan file database.sqlite ke lokal terlebih dahulu untuk diproses. Jalankan urutan perintah berikut untuk menghapus riwayat tanpa merusak Workflow atau Credentials:
# 1. Hapus isi tabel data eksekusi (Detail JSON)
sqlite3 database.sqlite "DELETE FROM execution_data;"
# 2. Hapus metadata dan log eksekusi agar database sinkron
sqlite3 database.sqlite "DELETE FROM execution_metadata;"
sqlite3 database.sqlite "DELETE FROM execution_entity;"
# 3. Hapus history revisi workflow (Optional, untuk space ekstra)
sqlite3 database.sqlite "DELETE FROM workflow_history;"
# 4. Kecilkan ukuran file fisik (WAJIB)
sqlite3 database.sqlite "VACUUM;"
Note: Tanpa perintah VACUUM, ukuran file di disk tidak akan berkurang meskipun datanya sudah dihapus.
Langkah 3 – Re deploy
Contoh disini filenya 10GB turun menjadi 10MB .
# Hapus sisa log transaksi lama
rm database.sqlite-wal database.sqlite-shm
# Restart container
docker-compose restart
Langkah 4 – Prevention
Agar kejadian ini tidak terulang, pastikan docker-compose.yaml kita memiliki variabel environment berikut. Banyak yang lupa bahwa MAX_AGE tidak akan bekerja tanpa mengaktifkan variable PRUNE.
services:
n8n:
environment:
- EXECUTIONS_DATA_PRUNE=true # Mengaktifkan fitur penghapusan otomatis
- EXECUTIONS_DATA_MAX_AGE=168 # Menyimpan data maksimal 7 hari (168 jam)
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000 # Maksimal jumlah record yang disimpan
Summary
SQLite sangat handal untuk penggunaan ringan-menengah, namun butuh pemeliharaan manual jika trafik workflow kita tinggi. Dengan mengaktifkan EXECUTIONS_DATA_PRUNE, memastikan n8n tetap ramping dan performanya terjaga.

Admin website igunawan.com, System Administrator, DevOps Engineer

Semangat mas awan kita mengulik” Ilmu di blog ini thankyou semoga jadi amal jariyah