3.2 KiB
3.2 KiB
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
- Kontrola hostitele – skript lze spustit pouze na počítači REPORTER
- Najde nejnovější ZIP v
\\tower\ordinacesynology\MedicusBackup\(vzor:MEDICUS_YYMMDD_HHMM.zip) - Kontrola duplicity – porovná název ZIPu s
last_restored.txt; pokud už byl obnoven, skončí bez akce - Kontrola přenosu (rsync) – změří velikost ZIPu, počká 60 sekund, změří znovu; pokud se liší, přenos ještě běží → skončí bez akce
- Rozbalí ZIP → extrahuje
.fbkdoC:\Medicus\restore\ - Odpojí aktivní klienty z Firebird DB (přes
MON$ATTACHMENTS) - Smaže starou DB
C:\Medicus\medicus.fdba spustígbakrestore s live výpisem - 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ů)
- uloží název ZIPu do
- Odešle email na
vladimir.buzalka@buzalka.czs výsledkem a logem jako přílohou - 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, nepythonw.exe(jinak stdout/stderr nejdou zachytit)
Závislosti
fdb– Firebird Python drivermsal,requests– pro odesílání emailu přes Microsoft GraphEmailMessagingGraph.py– knihovna vC:\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 |