sql >> Databáze >  >> RDS >> Oracle

Logrotate pro vyčištění souborů s datem

Logrotate odstraňuje soubory podle pořadí v lexikálně seřazeném seznamu názvů rotovaných souborů protokolu a také podle stáří souboru (s použitím času poslední úpravy souboru)

  • otočte je maximální počet otočených souborů, které můžete najít. Pokud je větší počet rotovaných log souborů, jsou jejich názvy lexikálně seřazeny a lexikálně nejmenší jsou odstraněny.

  • maxage definuje další kritéria pro odstranění rotovaných souborů protokolu. Jakýkoli otočený soubor protokolu, který je starší než daný počet dní, je odstraněn. Všimněte si, že datum je detekováno z času poslední úpravy souboru, nikoli z názvu souboru.

  • formát data umožňuje specifické formátování data v otočených souborech. Manová stránka poznamenává, že formát by měl vést k lexikálně správnému řazení .

  • včera umožňuje používat data v názvech souborů protokolu jeden den zpět.

Chcete-li zachovat daný počet dní v denně otočených souborech (např. 7), musíte nastavit rotate na hodnotu 7 a maxage můžete ignorovat , pokud jsou vaše soubory vytvářeny a rotovány opravdu každý den.

Pokud k vytvoření protokolu nedojde několik dní, např. po dobu 14 dnů bude počet otočených souborů protokolu stále stejný (7).

maxage zlepší situaci ve scénářích „protokoly nejsou vytvořeny“ tím, že vždy odstraní příliš staré soubory. Po 7 dnech, kdy se neprodukují žádné protokoly, nebudou přítomny žádné rotované soubory protokolu.

Nemůžete použít dateformat jak ukazuje OP, protože není lexikálně tříditelné. Popletete si s dateformat by pravděpodobně vedlo k odstranění jiných rotovaných souborů protokolu, než jste skutečně chtěli.

Tip :Spusťte logrotate z příkazového řádku pomocí -d možnost provést běh nasucho:uvidíte, co by logrotate udělal, ale ve skutečnosti nedělá nic. Poté proveďte ruční spuštění pomocí -v (verbálně), abyste mohli potvrdit, že to, co se dělá, je to, co chcete.

Řešení:čisté protokoly vytvořené cronem

Koncept je:

Nechte cron, aby vytvořil a aktualizoval soubory protokolu, ale proveďte malé úpravy pro vytváření souborů podle standardních názvů souborů logrotate při použití výchozího dateext

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

Použijte logrotate pouze pro odstranění příliš starých log souborů

  • zaměřte se na neexistující soubor protokolu /data/tier2/scripts/logs/recover_standby_SID.log
  • použijte missingok aby proběhl úklid logrotate
  • nastavit rotate dostatečně vysoká, aby pokryla počet souborů protokolu, které se mají uchovávat (nejméně 7, pokud bude jeden „rotovaný“ soubor protokolu denně, ale můžete jej bezpečně nastavit velmi vysoko, například 9999)
  • nastavit maxage až 7. Tím se odstraní soubory, které mají čas poslední úpravy delší než 7 dní.
  • dateext se používá pouze k zajištění toho, že logrotate vyhledává starší soubory, které vypadají jako otočené.

Konfigurační soubor Logrotate by vypadal takto:

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

Řešení:otočte přímo logrotate jednou denně

Nejsem si jistý, jak je vytvořen pohotovostní soubor pro obnovu zdroje, ale předpokládám, že Oracle nebo nějaký váš skript se pravidelně nebo neustále připojuje k souboru /data/tier2/scripts/logs/recover_standby_SID.log

Koncept je:

  • otočit soubor jednou denně pomocí logrotate
  • přímá práce se souborem protokolu obsahujícím data pro obnovení /data/tier2/scripts/logs/recover_standby_SID.log
  • daily způsobí rotaci jednou denně (ve smyslu cron rozumí daily )
  • rotate musí být nastaveno na 7 (nebo jakékoli vyšší číslo).
  • maxage nastaveno na 7 (dnů)
  • dateext použít výchozí příponu data logrotate
  • dateyesterday používá se k tomu, aby přípony data v otočených souborech byly o jeden den zpět.
  • missingok k čištění starších souborů, i když není k dispozici žádný nový obsah k otočení.

Konfigurace Logrotate by vypadala takto:

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

Všimněte si, že si možná budete muset trochu pohrát s copytruncate a další podobné možnosti, které souvisejí s tím, jak je zdrojový soubor protokolu vytvářen externím procesem a jak reaguje na akt rotace.



  1. PostgreSQL 9.3:Jak vložit velká písmena UUID do tabulky

  2. vytvořit poskytovatele EJB javax.persistence.PersistenceContext.synchronization()Ljavax/persistence/SynchronizationType

  3. Jak vybrat počet pomocí Laravelova plynulého tvůrce dotazů?

  4. Proč není pořadí vyhodnocení výrazů zahrnujících uživatelské proměnné definováno?