- Veröffentlicht am
- • How2-Tipps
Matomo zurücksetzen: So leerst du Logs, Archive und Caches sicher Schritt für Schritt
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
Klar – so leerst du Logs (Rohdaten) und Archive (Aggregatdaten) in Matomo sauber, ohne Websites/Benutzer/Einstellungen zu verlieren. Ich gebe dir zuerst die sichere Reihenfolge als SQL, danach ein fertiges Bash-Skript zum Copy-&-Paste.
1) Unbedingt Backup machen
mysqldump -u MATOMO_DB_USER -p MATOMO_DB matomo > /root/matomo_backup_$(date +%F_%H%M).sql
Ersetze
MATOMO_DB_USERundMATOMO_DB. Das Backup ist deine Rückversicherung.
2) Logs (Rohdaten) leeren
Matomo speichert Rohdaten hauptsächlich hier. Die Reihenfolge verhindert FK-Probleme:
-- einloggen: mysql -u MATOMO_DB_USER -p MATOMO_DB
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE TABLE matomo_log_link_visit_action;
TRUNCATE TABLE matomo_log_conversion_item;
TRUNCATE TABLE matomo_log_conversion;
TRUNCATE TABLE matomo_log_visit;
-- optional (meist sinnvoll beim Komplett-Reset):
TRUNCATE TABLE matomo_log_action;
-- optional, nur falls vorhanden/gewünscht:
-- TRUNCATE TABLE matomo_log_profiling;
SET FOREIGN_KEY_CHECKS=1;
Hinweise
matomo_log_actionenthält den Aktions-„Katalog“ (URLs/Titel). Beim echten Neustart mit löschen; wenn du nur Besuche löschen willst, kannst dulog_actionbehalten.
3) Archive löschen (alle Monate oder gezielt)
Matomo legt monatliche Archivtische an:
matomo_archive_numeric_YYYY_MM und matomo_archive_blob_YYYY_MM.
Varianten
A) gezielt, z. B. Juli 2025
DELETE FROM matomo_archive_numeric_2025_07;
DELETE FROM matomo_archive_blob_2025_07;
B) kompletter Reset (alle Archive) – sicher & automatisiert
SET FOREIGN_KEY_CHECKS=0;
-- alle Archivtische ermitteln und droppen:
SET @sql = (
SELECT CONCAT('DROP TABLE ', GROUP_CONCAT(TABLE_NAME SEPARATOR ', '), ';')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME LIKE 'matomo_archive_%'
);
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS=1;
Löschen (DROP) ist bei Archiven üblich/schnell. Matomo legt die Tabellen bei neuen Zeiträumen wieder an.
4) Cache leeren (Dateisystem, optional aber empfehlenswert)
rm -rf /var/www/DEIN_MATOMO/tmp/cache/*
rm -rf /var/www/DEIN_MATOMO/tmp/templates_c/*
5) Archivierung neu anstoßen (sofern bereits neue Daten vorliegen)
sudo -u www-data php /var/www/DEIN_MATOMO/console core:archive \
--force-all-websites \
--url=https://DEIN.MATOMO.FQDN
Komplettes Bash-Skript (Backup → Logs/Archive leeren → Cache putzen → optional archivieren)
Speichere als /root/matomo-reset.sh, dann chmod 700 /root/matomo-reset.sh.
#!/usr/bin/env bash
set -euo pipefail
DB_USER="matomo_user"
DB_NAME="matomo"
MATOMO_DIR="/var/www/statistic_web4mance" # anpassen
MATOMO_URL="https://statistic.web4mance.de" # anpassen
read -s -p "DB-Passwort für ${DB_USER}: " DB_PASS; echo
echo "[1/5] Backup erstellen…"
mysqldump -u "${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" > "/root/matomo_backup_$(date +%F_%H%M).sql"
echo "[2/5] Logs (Rohdaten) leeren…"
mysql -u "${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" <<'SQL'
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE TABLE matomo_log_link_visit_action;
TRUNCATE TABLE matomo_log_conversion_item;
TRUNCATE TABLE matomo_log_conversion;
TRUNCATE TABLE matomo_log_visit;
TRUNCATE TABLE matomo_log_action;
SET FOREIGN_KEY_CHECKS=1;
SQL
echo "[3/5] Archivtabellen droppen…"
mysql -u "${DB_USER}" -p"${DB_PASS}" "${DB_NAME}" <<'SQL'
SET FOREIGN_KEY_CHECKS=0;
SET @sql = (
SELECT CONCAT('DROP TABLE ', GROUP_CONCAT(TABLE_NAME SEPARATOR ', '), ';')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME LIKE 'matomo_archive_%'
);
-- nur ausführen, wenn es überhaupt Archivtische gibt
SET @sql = IF(@sql IS NULL, 'SELECT 1;', @sql);
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS=1;
SQL
echo "[4/5] Matomo-Caches leeren…"
rm -rf "${MATOMO_DIR}/tmp/cache/"* || true
rm -rf "${MATOMO_DIR}/tmp/templates_c/"* || true
echo "[5/5] (optional) Archivierung neu starten…"
if command -v php >/dev/null 2>&1; then
sudo -u www-data php "${MATOMO_DIR}/console" core:archive --force-all-websites --url="${MATOMO_URL}" || true
fi
echo "Fertig. Matomo-Daten (Logs+Archive) wurden geleert. Backup liegt in /root/."
Anpasspunkte: DB_USER, DB_NAME, MATOMO_DIR, MATOMO_URL.
Häufige Fragen
Kann ich nur bestimmte Zeiträume löschen?
Ja – lass Schritt 2 (Logs) weg und lösche in Schritt 3 nur die gewünschten Monats-Tabellen per DELETE FROM matomo_archive_*_YYYY_MM; oder per DROP TABLE für diese Monate.
Zerstöre ich damit meine Einstellungen? Nein. Websites, Benutzer, Rollen, Ziele, Segmente, Konfigurationen bleiben erhalten. Du entfernst nur Tracking-Rohdaten und aggregierte Archive.
Muss ich log_action wirklich leeren?
Wenn du „ganz frisch“ starten willst: ja. Wenn du nur Besuche löschen möchtest, kannst du log_action stehen lassen.