Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Logrotate zum Bereinigen von Dateien mit Datumsstempel

Logrotate entfernt Dateien gemäß der Reihenfolge in einer lexikalisch sortierten Liste rotierter Protokolldateinamen und auch nach Dateialter (unter Verwendung der letzten Änderungszeit der Datei)

  • drehen ist die maximale Anzahl gedrehter Dateien, die Sie finden können. Bei einer höheren Anzahl rotierter Protokolldateien werden deren Namen lexikalisch sortiert und die lexikalisch kleinsten entfernt.

  • maximal definiert ein weiteres Kriterium zum Entfernen rotierter Protokolldateien. Jede rotierte Protokolldatei, die älter als die angegebene Anzahl von Tagen ist, wird entfernt. Beachten Sie, dass das Datum aus der letzten Änderungszeit der Datei ermittelt wird, nicht aus dem Dateinamen.

  • Datumsformat ermöglicht eine spezifische Formatierung für das Datum in gedrehten Dateien. Manpage weist darauf hin, dass das Format zu einer lexikalisch korrekten Sortierung führen soll .

  • Gestern ermöglicht die Verwendung von Daten in Protokolldateinamen einen Tag zurück.

Um eine bestimmte Anzahl von Tagen in täglich rotierten Dateien (z. B. 7) beizubehalten, müssen Sie rotate einstellen auf den Wert 7 und Sie können maxage ignorieren , wenn deine Dateien wirklich jeden Tag erstellt und gedreht werden.

Wenn die Protokollerstellung einige Tage lang nicht erfolgt, z. für 14 Tage bleibt die Anzahl der rotierten Protokolldateien gleich (7).

maxage verbessert die Situation in Szenarien mit nicht erstellten Protokollen, indem zu alte Dateien immer entfernt werden. Nach 7 Tagen ohne Protokollerstellung sind keine rotierten Protokolldateien mehr vorhanden.

Sie können dateformat nicht verwenden wie OP zeigt, da es nicht lexikalisch sortierbar ist. Durcheinander mit dateformat würde wahrscheinlich dazu führen, dass andere rotierte Protokolldateien entfernt werden, als Sie eigentlich wollten.

Tipp :Führen Sie logrotate von der Befehlszeile mit -d aus Option, einen Probelauf durchzuführen:Sie werden sehen, was logrotate tun würde, aber tatsächlich nichts tut. Führen Sie dann einen manuellen Lauf mit -v durch (ausführlich), damit Sie bestätigen können, dass das, was getan wird, Ihren Wünschen entspricht.

Lösung:Bereinigung der von Cron erstellten Protokolle

Das Konzept ist:

Lassen Sie cron die Protokolldateien erstellen und aktualisieren, aber nehmen Sie kleine Änderungen vor, um Dateien zu erstellen, und folgen Sie dabei den Standard-Dateinamen von logrotate, wenn Sie standardmäßig dateext verwenden

/data/tier2/scripts/logs/recover_standby_SID.log-`date +\%Y\%m\%d`.log

Verwenden Sie logrotate nur zum Entfernen zu alter Protokolldateien

  • auf nicht vorhandene Protokolldatei /data/tier2/scripts/logs/recover_standby_SID.log zielen
  • benutze missingok Logrotate-Bereinigung durchführen zu lassen
  • set drehen hoch genug, um die Anzahl der aufzubewahrenden Protokolldateien abzudecken (mindestens 7, wenn es eine "rotierte" Protokolldatei pro Tag gibt, aber Sie können sie sicher sehr hoch wie 9999 setzen)
  • set maxage bis 7. Dadurch werden Dateien entfernt, deren letzte Änderungszeit länger als 7 Tage ist.
  • Datumstext wird nur verwendet, um sicherzustellen, dass logrotate nach älteren Dateien sucht, die wie rotiert aussehen.

Die Logrotate-Konfigurationsdatei würde folgendermaßen aussehen:

data/tier2/scripts/logs/recover_standby_SID.log {
    daily
    missingok
    rotate 9999
    maxage 7
    dateext
}

Lösung:einmal täglich direkt per logrotate rotieren

Ich bin mir nicht sicher, wie die Quellwiederherstellungs-Standby-Datei erstellt wird, aber ich gehe davon aus, dass Oracle oder ein Skript von Ihnen regelmäßig oder kontinuierlich an eine Datei /data/tier2/scripts/logs/recover_standby_SID.log

Das Konzept ist:

  • rotiere die Datei einmal täglich mit logrotate
  • direktes Arbeiten mit der Protokolldatei, die Wiederherstellungsdaten enthält /data/tier2/scripts/logs/recover_standby_SID.log
  • täglich bewirkt einmal am Tag eine Rotation (im Hinblick darauf, wie cron versteht täglich )
  • drehen muss auf 7 (oder eine höhere Zahl) gesetzt werden.
  • maxage auf 7 (Tage) gesetzt
  • Datumstext Standard-Logrotate-Datumssuffix verwenden
  • DatumGestern Wird verwendet, um Datumssuffixe in rotierten Dateien zu verursachen, die einen Tag zurückliegen.
  • missingok um ältere Dateien zu bereinigen, auch wenn keine neuen Inhalte zum Rotieren vorhanden sind.

Die Logrotate-Konfiguration würde folgendermaßen aussehen:

data/tier2/scripts/logs/recover_standby_SID.log {
    daily
    missingok
    rotate 7
    maxage 7
    dateext
    dateyesterday
}

Beachten Sie, dass Sie möglicherweise ein wenig mit copytruncate spielen müssen und andere ähnliche Optionen, die sich darauf beziehen, wie die Quellprotokolldatei von einem externen Prozess erstellt wird und wie sie auf den Rotationsakt reagiert.