"Add database backup schedule for 2025-05-29 18:58:34"
This commit is contained in:
@@ -131,22 +131,30 @@ def schedule_maintenance():
|
||||
"""
|
||||
def maintenance_worker():
|
||||
time.sleep(300) # 5 Minuten warten
|
||||
try:
|
||||
with get_maintenance_session() as session:
|
||||
# WAL-Checkpoint ausführen
|
||||
session.execute(text("PRAGMA wal_checkpoint(TRUNCATE)"))
|
||||
|
||||
# Statistiken aktualisieren
|
||||
session.execute(text("ANALYZE"))
|
||||
|
||||
# Incremental Vacuum
|
||||
session.execute(text("PRAGMA incremental_vacuum"))
|
||||
|
||||
session.commit()
|
||||
logger.info("Datenbank-Wartung erfolgreich durchgeführt")
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler bei Datenbank-Wartung: {str(e)}")
|
||||
|
||||
while True:
|
||||
try:
|
||||
with get_maintenance_session() as session:
|
||||
# WAL-Checkpoint ausführen (aggressive Strategie)
|
||||
checkpoint_result = session.execute(text("PRAGMA wal_checkpoint(TRUNCATE)")).fetchone()
|
||||
|
||||
# Nur loggen wenn tatsächlich Daten übertragen wurden
|
||||
if checkpoint_result and checkpoint_result[1] > 0:
|
||||
logger.info(f"WAL-Checkpoint: {checkpoint_result[1]} Seiten übertragen, {checkpoint_result[2]} Seiten zurückgesetzt")
|
||||
|
||||
# Statistiken aktualisieren (alle 30 Minuten)
|
||||
session.execute(text("ANALYZE"))
|
||||
|
||||
# Incremental Vacuum (alle 60 Minuten)
|
||||
session.execute(text("PRAGMA incremental_vacuum"))
|
||||
|
||||
session.commit()
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler bei Datenbank-Wartung: {str(e)}")
|
||||
|
||||
# Warte 30 Minuten bis zur nächsten Wartung
|
||||
time.sleep(1800)
|
||||
|
||||
# Wartung in separatem Thread ausführen
|
||||
maintenance_thread = threading.Thread(target=maintenance_worker, daemon=True)
|
||||
maintenance_thread.start()
|
||||
|
Reference in New Issue
Block a user