Files
ordinaceprojekt/Medicus/DBrestore/NOTES.md
T
2026-05-16 07:58:18 +02:00

3.2 KiB
Raw Blame History

DBrestore Medicus DB restore na Reporteru

Co skript dělá

restore.py automaticky obnovuje Firebird databázi Medicus na počítači REPORTER ze zálohy uložené na NAS.

Postup krok za krokem

  1. Kontrola hostitele skript lze spustit pouze na počítači REPORTER
  2. Najde nejnovější ZIP v \\tower\ordinacesynology\MedicusBackup\ (vzor: MEDICUS_YYMMDD_HHMM.zip)
  3. Kontrola duplicity porovná název ZIPu s last_restored.txt; pokud už byl obnoven, skončí bez akce
  4. Kontrola přenosu (rsync) změří velikost ZIPu, počká 60 sekund, změří znovu; pokud se liší, přenos ještě běží → skončí bez akce
  5. Rozbalí ZIP → extrahuje .fbk do C:\Medicus\restore\
  6. Odpojí aktivní klienty z Firebird DB (přes MON$ATTACHMENTS)
  7. Smaže starou DB C:\Medicus\medicus.fdb a spustí gbak restore s live výpisem
  8. Po úspěšném restore:
    • uloží název ZIPu do last_restored.txt
    • smaže ZIP ze záložního adresáře
    • smaže rozbalený .fbk
    • otestuje DB (počet registrovaných pacientů)
  9. Odešle email na vladimir.buzalka@buzalka.cz s výsledkem a logem jako přílohou
  10. Smaže log

Konfigurace

Proměnná Hodnota
BACKUP_DIR \\tower\ordinacesynology\MedicusBackup
EXTRACT_DIR C:\Medicus\restore
TARGET_DB C:\Medicus\medicus.fdb
GBAK C:\Program Files\Firebird\Firebird_2_5_CGM\bin\gbak.exe
LOG_FILE C:\Medicus\restore\restore.log
LAST_RESTORED C:\Medicus\restore\last_restored.txt
EMAIL_TO vladimir.buzalka@buzalka.cz

Firebird připojení

import fdb
conn = fdb.connect(
    dsn=r'localhost:c:\medicus\medicus.fdb',   # lokálně na REPORTERu
    user='SYSDBA', password='masterkey', charset='win1250'
)

# Z jiných počítačů v síti:
conn = fdb.connect(
    dsn=r'reporter:c:\medicus\medicus.fdb',
    user='SYSDBA', password='masterkey', charset='win1250'
)

Scheduled Task

  • Spouštěcí program: C:\Reporting\Python\python.exe
  • Argumenty: C:\Reporting\RestoreNaReporter\restore.py
  • Interval: každou hodinu
  • Uživatel: vlado (s nejvyššími právy)
  • DŮLEŽITÉ: musí být python.exe, ne pythonw.exe (jinak stdout/stderr nejdou zachytit)

Závislosti

  • fdb Firebird Python driver
  • msal, requests pro odesílání emailu přes Microsoft Graph
  • EmailMessagingGraph.py knihovna v C:\Reporting\knihovny\

Všechny závislosti jsou v C:\Reporting\Python\.

Produkční umístění

Soubor Cesta
Skript C:\Reporting\RestoreNaReporter\restore.py
Python C:\Reporting\Python\python.exe
Email knihovna C:\Reporting\knihovny\EmailMessagingGraph.py

Firewall

Port 3050 TCP otevřen pro příchozí spojení (Firebird) pravidlo "Firebird 3050".

Časová osa nočního procesu

Čas Co se děje
02:00 Zálohovací skript v ordinaci vytvoří .zip
~02:30 Záloha dokončena, rsync začne přenos na NAS
~03:xx rsync dokončen
každou hodinu Scheduled task zkontroluje nový ZIP + velikost
po stabilizaci Spustí restore (~10 min), odešle email