"Add database backup schedule for 2025-05-29 18:58:34"

This commit is contained in:
2025-05-29 19:00:12 +02:00
parent 122551df3d
commit cf297e8e16
7 changed files with 335 additions and 395 deletions

View File

@@ -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()