Questa pagina è stata tradotta automaticamente. Leggi l'originale in inglese. English

Libreria IBSurgeon

Come implementare i backup con il dump online di InterBase XE7

Dmitry Kuzmenko, 08-SET-2016

InterBase dalla versione 2007 supporta il dump online - la copia online del file di database. Invece di gbak -b/-c questo permette di ottenere un database pronto all’uso dopo la copia, senza doverlo “ripristinare” da un backup (qualcosa che non è un database). Il dump online è molto veloce, quasi come la copia di file da parte del sistema operativo.

Usa il seguente comando per fare un dump online del database

gbak -d [options] database target

(Puoi trovare la descrizione completa del dump nella documentazione, Doc\OpGuide.pdf, o qui)

Come per il file di database, il target può avere qualsiasi nome ed estensione desideri. Il risultato del comando sarà un file di dump equivalente al database originale, ma in modalità sola lettura.

Il tempo della prima esecuzione di questo comando è il tempo per scansionare (leggere) il database sorgente e il tempo per scrivere il file target.

Finché il target è in modalità sola lettura, è collegato al file di database. Al primo dump, l’intero file di database verrà letto e copiato nel target. Al secondo e successivi - solo le pagine modificate verranno scritte nel target. Questo è chiamato “dump incrementale”.

Importante! InterBase XE7 ad ogni comando di dump ripetuto (con gli stessi nomi di file, ovviamente) legge solo le pagine modificate del database e le scrive nel target. Le altre versioni precedenti a XE7 leggono l’intero database sorgente. Quindi, le prestazioni sono diverse, e XE7 è molto più veloce. Se nessuna pagina è stata modificata nel database sorgente, il dump incrementale di XE7 richiederà ~1 secondo, mentre InterBase2007-XE3 impiegherà il tempo necessario per leggere l’intero file di database. Il tempo dipende dalla dimensione del database sorgente e dalla velocità di archiviazione. Ad esempio, se la velocità di archiviazione è di circa 400mb/sec, un database di 100gb verrà scansionato in 250 secondi (4 minuti e 10 secondi).

Nota. InterBase XE7 supporta i formati di file di database di XE7 (ODS 16), XE/XE3 (ODS 15) e 2009 (ODS 13). La funzionalità di scansione intelligente, menzionata sopra, funzionerà solo con il formato di database XE7 (ODS 16).

Se hai bisogno di portare il target in modalità lettura-scrittura (modalità normale), usa il comando

gfix target -mode read_write

Ma dopo questo il target perde il collegamento al database, e la successiva esecuzione di gbak -d database target non è più possibile perché il target è considerato come un “altro” database.

Se vuoi sovrascrivere completamente il target, invece del dump incrementale, usa l’opzione -ov

gbak -d -ov database target

Dump del dump

Il primo dump del dump funzionerà, ma gli incrementi successivi no. Ad esempio, prima

gbak -d database target1

qui otteniamo target1 come un database completamente scaricato in modalità sola lettura

Poi,

gbak -d target1 target2

Come vedi, creiamo il dump del dump. E sì, questo comando copierà target1 in target2. Entrambi i target saranno in modalità sola lettura. Ma se ripeteremo questi due comandi di nuovo, le modifiche che sono andate dal database a target1 non verranno copiate in target2. Quindi, target2 rimane nello stato dopo la prima copia iniziale. E non ci sono messaggi di errore o avviso.

Quindi, se mai vuoi fare un dump del dump, dovresti usare solo il dump completo

gbak -d -ov target1 target2

L’opzione -ov è obbligatoria, per garantire che target2 venga scritto (e sovrascritto) con la sorgente di target1.

Schema di backup 1

Esempio di dump a diversi intervalli di tempo

gbak -d database target

Viene eseguito, ad esempio, ogni 1 ora. Qui abbiamo il database sorgente di produzione e la copia “di backup” target, indietro di un’ora.

Inoltre, in aggiunta, ogni 24 ore possiamo eseguire

gbak -d database target2

Qui abbiamo il database di produzione, la copia target indietro di 1 ora, e la copia target2 indietro di 24 ore.

Puoi fare qualsiasi numero di dump da un singolo database.

Inutile dire che i dump target possono essere usati come database in sola lettura per qualsiasi scopo - reportistica, analisi, ecc., per i compiti che non necessitano di guardare il database attuale.

Pro: Ogni dump può essere pianificato indipendentemente.

Contro: Ritardi tra il dump più recente e quello più vecchio.

Schema di backup 2

Dump sequenziale su target diversi. In questo caso, devi configurare un pianificatore (del sistema operativo o personalizzato) per eseguire i seguenti comandi uno per intervallo di tempo specificato

gbak -d database target1

gbak -d database target2

gbak -d database target3

Se usi un intervallo di 1 ora tra questi comandi, avrai dump (backup) come questo:

target1 alle 12:00, target2 alle 13:00, target3 alle 14:00. La successiva esecuzione del dump target1 verrà aggiornata alle 15:00, e così via. Come risultato, avremo copie dei database delle ultime 3 ore.

Pro: abbiamo dump per diverse ore che rimangono vicini al database originale

Contro: è un po’ difficile pianificare questi comandi. Cioè in questo esempio i comandi di dump devono essere pianificati per un orario esatto:

Dump su target1 alle 00:00, 03:00, 06:00…

Dump su target2 alle 01:00, 04:00, 07:00…

Dump su target3 alle 02:00, 05:00, 08:00…

Gbak -d può essere usato per un dump su archiviazione locale e per un dump sulla rete - poiché il dump incrementale invia al target solo le pagine modificate. Quindi, il target può essere posizionato su un’archiviazione di rete remota. Ma, ovviamente, la rete deve avere una buona larghezza di banda per essere compatibile con l’archiviazione locale. Altrimenti, le scritture sul target saranno lente.

Il dump online può essere usato non solo come strumento per fare una copia di backup online del database ma anche come strumento per fare “scaling orizzontale” del sistema, per bilanciare il carico delle applicazioni di produzione, reportistica e analisi.

Anche se vedi che il dump online è il modo più veloce per ottenere una copia online del database (invece di gbak -b/-c), poiché il dump opera con le pagine, può saltare alcuni danni sulle pagine, se il database è corrotto. Quindi, devi ancora controllare la coerenza del database con il buon vecchio gbak -b/-c, ma puoi farlo meno spesso di prima.