How2-Tipps

Matomo zurücksetzen: So leerst du Logs, Archive und Caches sicher Schritt für Schritt

Anleitung zum sicheren Matomo-Reset: Logs, Archive und Cache leeren, Backup erstellen und Datenbank sauber neu starten – mit Bash- und SQL-Beispielen.

1 min Lesezeit
Matomo zurücksetzen: So leerst du Logs, Archive und Caches sicher Schritt für Schritt

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

``bash mysqldump -u MATOMO_DB_USER -p MATOMO_DB matomo > /root/matomo_backup_$(date +%F_%H%M).sql ``

Ersetze MATOMO_DB_USER und MATOMO_DB. Das Backup ist deine Rückversicherung.

2) Logs (Rohdaten) leeren

Matomo speichert Rohdaten hauptsächlich hier. Die Reihenfolge verhindert FK-Probleme:

```sql -- 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_action enthält den Aktions-„Katalog“ (URLs/Titel). Beim echten Neustart mit löschen; wenn du nur Besuche löschen willst, kannst du log_action behalten.

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

``sql DELETE FROM matomo_archive_numeric_2025_07; DELETE FROM matomo_archive_blob_2025_07; ``

B) kompletter Reset (alle Archive) – sicher & automatisiert

``sql 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)

``bash 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)

``bash 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.

```bash #!/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.