Sincronizzare
medio
Il meccanismo di sincronizzazione è composto da due script Python: uno che fa da controller ed uno che effettua la sincronizzazione del Data.fs corrente. La sincronizzazione è innescata da uno scheduler, ad esempio cron. Chiamiamo lo script syncData.sh ogni minuto tramite cron, nel seguente modo:
Il profilo utente (identificato con .profile) contiene alcune impostazioni e variabili d'ambiente, come ad esempio il PYTHONPATH.
Lo stato della sincronizzazione, che questa debba essere eseguita o meno, viene registrata nel file syncPozo.status. In caso di crash del nodo slave, la sincronizzazione viene disabilitata. Il file contiene una sola riga:
I sorgenti di entrambi i file syncPozo.py (il vero sincronizzatore) e syncData.sh (il controller script) sono in allegato.
Il file di log relativo all'uso di cron si trova in $HOME/var/log sotto il nome syncData.log.
Al suo interno potreste leggere uno o più dei seguenti messaggi:
Nota: assicuratevi che le librerie Python per Zope siano indicate correttamente nella variabile d'ambiente PYTHONPATH.
* * * * * . .profile; $HOME/bin/syncData.sh <MASTER DATA DIR> <SLAVE DATA DIR> >> $HOME/var/log/syncData.log 2>&1dove MASTER DATA DIR punta alla directory in cui la partizione NFS è stata montata e dove risiede il Data.fs; SLAVE DATA DIR punta alla directory in cui risiede il Data.fs slave.
Il profilo utente (identificato con .profile) contiene alcune impostazioni e variabili d'ambiente, come ad esempio il PYTHONPATH.
Lo stato della sincronizzazione, che questa debba essere eseguita o meno, viene registrata nel file syncPozo.status. In caso di crash del nodo slave, la sincronizzazione viene disabilitata. Il file contiene una sola riga:
SYNCING=[0|1]Il valore 0 indica che il sistema di sincronizzazione non è attivo.
I sorgenti di entrambi i file syncPozo.py (il vero sincronizzatore) e syncData.sh (il controller script) sono in allegato.
Il file di log relativo all'uso di cron si trova in $HOME/var/log sotto il nome syncData.log.
Al suo interno potreste leggere uno o più dei seguenti messaggi:
- Start syncing
- Lo script ha iniziato la sincronizzazione
- missing or empty .dat file (full backup)
- Nessun file Data.fs è stato trovato sullo slave, è stato quindi effettuato un backup completo
- No handlers could be found for logger "ZODB.FileStorage"
- Non è stata settata la variabile PYTHONPATH per contenere le librerie Python prima di invocare lo script syncPozo.py. Il path delle librerie di Zope è <ZOPE INSTANCE>/lib/python.
- Slave (backup) file has grown since last syncing...
- Il nodo slave è stato rimosso dalla sincronizzazione col master. E' consigliata la completa rimozione del Data.fs slave, e la forzatura di un backup completo.
- NOT SYNCING FROM MASTER
- SYNCING è settato a 0 in syncPozo.status.
- Finished syncing
- E' tutto per questo round, gente!
Nota: assicuratevi che le librerie Python per Zope siano indicate correttamente nella variabile d'ambiente PYTHONPATH.
