Wie man Log-Tische reinigt

Geschrieben von Mario SAM

Wenn wir Magento installieren, werden mehrere Tabellen erstellt, darunter die Navigationstabellen.

Dieses Protokoll unterscheidet sich von dem Systemprotokoll, das wir hier im Blog unter Überprüfen des Systemprotokolls besprochen haben. Der Unterschied ist, dass das Browsing-Protokoll die Passage Ihrer Kunden und Besucher durch die Website aufzeichnet.

Ja. Von dem Moment an, in dem du den Laden in die Luft gelegt hast, werden alle besuchten Seiten im Log mit den Informationen des Besuchertyps, der Benutzer-ID protokolliert, der url besucht, Datum/Uhrzeit des Zugriffs, des Browsertyps und des Betriebssystems, ip, etc.

Und was ist das Problem?

Da dieses Navigationsprotokoll stetig ist, können Probleme auftreten, wenn Sie einen Produktimport durchführen, Daten in Tabellen aktualisieren, manchmal sogar eine Rücktaste (back) aus dem Client-Browser. Erzeugen eines Integritätsfehlers:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry…

Das heißt, das System versucht, einen Datensatz aufzuzeichnen, in dem bereits Daten vorhanden sind.

Ein weiteres Problem wäre genau die Größe Ihrer Datenbank, die niemals aufhört zu wachsen. Für jeden Tag (seit dem Start) werden alle Navigationsinformationen der Benutzer gespeichert.

Offensichtlich ist diese Information wichtig, um ein Problem zu untersuchen oder zu versuchen, zu stören usw. Aber sobald Sie eine backup dieser Informationen machen, kann diese Geschichte gelöscht werden, wodurch die Datenmenge in Ihren Tabellen und der Größe reduziert wird von deinem nächsten backup.

Erweiterte Protokolleinstellungen

Um diese Art von Problem und sogar Datenüberlastung zu vermeiden, ist es interessant, dass Sie den Systemprotokoll Cleanup Zeitplan aktivieren. Um darauf zuzugreifen:

System > Konfiguration > ERWEITERT > System [Protokollreinigung]

Schauen wir uns unsere Konfigurationsmöglichkeiten an:

Save Log, Days – Gibt die Mindestmenge an Tagen an, in denen die Informationen in den Tabellen gespeichert werden sollen. Alle Informationen über diesen Zeitraum müssen nicht mehr gespeichert werden – wahrscheinlich, weil Sie bereits eine backup durchgeführt haben.

Enable Log Clean – Standardmäßig ist es mit “Nein” markiert, wechsle zu “Ja“, wenn du die Tabellen löschen willst automatisch.

Start time – Sie können Stunde, Minute und Sekunde eingeben. Wichtig hierbei ist es, eine schnellere Besucherzeit zu informieren, da der Prozess Serverressourcen verbraucht.

Tipp: Versuchen Sie, die ersten Prozesse zu verfolgen, um die durchschnittliche Dauer zu finden – damit Sie die Terminierungszeit besser messen können.

Frequency – Wie oft werden Sie die Reinigung durchführen. Dies kann mit der backup Frequenz übereinstimmen. Anfänglich können Sie mit monatlichen Backups beginnen und mit der Erhöhung des Datenvolumens und der finanziellen Bedeutung von ihnen erhöhen Sie die Häufigkeit für Wochen oder Tage.

Konfigurieren der Protokollbereinigung

Die letzten 3 (drei) Felder beziehen sich auf die Fehler-E-Mail. Immer wenn bei der geplanten Datenreinigung ein Fehler auftritt, wird ein Alarm für die informierte E-Mail ausgelöst, wobei die Verweise und die informierten Vorlagen auf dem System verwendet werden.

Notfalllösung

Manchmal kann der Fehler uns daran hindern, auf das System zuzugreifen. Und unsere einzige Alternative ist, die Datenbank “anzugreifen”. Wenn also das System ein Problem mit den Protokolltabellen hat, die nicht durch backend gelöst werden können, sollten wir ein DBMS verwenden, um das script cleanup auszuführen:

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `log_customer`;
TRUNCATE `log_quote`;
TRUNCATE `log_summary`;
TRUNCATE `log_url`;
TRUNCATE `log_url_info`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
TRUNCATE `log_visitor_online`;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `log_summary` AUTO_INCREMENT=1;
ALTER TABLE `log_url` AUTO_INCREMENT=1;
ALTER TABLE `log_url_info` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_online` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;

Grundsätzlich sind alle Log-Tabellen weniger log_summary_type. Wir haben den Befehl truncate verwendet, um die Protokollprotokolldatensätze auf Null zu setzen, wodurch das doppelte Schlüsselproblem beseitigt wird.

Das Skript funktioniert auf allen Versionen von Magento 1.x.

Erfolg!

Der Autor

Mario SAM

Bis sich eine Gelegenheit ergibt, nach Deutschland zu ziehen, helfe ich weiterhin aus der Ferne.