open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

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

Autor
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

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:

-- 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

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.