Un'operazione di backup ha lo scopo di produrre una copia di sicurezza dei dati presenti in un database, in modo che eventuali crash, violazioni di sicurezza o incidenti vari non possano pregiudicarne l'integrità sul server. L'esito di un backup consiste in un file che possa essere archiviato utilizzando il minimo spazio possibile, ad esempio un archivio compresso. Inoltre, un backup dovrebbe rappresentare un'istantanea del database in un dato momento; per questo motivo, vengono previsti meccanismi che vietano ulteriori scritture finchè il backup non è terminato.
L'esportazione dei dati è spesso effettuata per spostare i dati da un database ad un altro, ad esempio per passare ad una nuova installazione del DBMS. Il file generato deve essere scritto in un formato di cui sia agevole la lettura per la fase di importazione, che spesso ha luogo dopo non molto tempo. Un file esportato viene in genere compresso, ma non ai fini di una conservazione efficiente, bensì per permetterne spostamenti più rapidi verso la sede di importazione.
Vedremo ora gli strumenti offerti da OrientDB per il backup e l'esportazione dei dati.
Backup
Le operazioni di backup e restore (come viene spesso chiamata l'operazione di esportazione) possono essere eseguite con appositi comandi dalla console:
// esecuzione di un backup del database corrente
BACKUP DATABASE /backups/backup.zip
// esecuzione di un restore indicando il file archivio
RESTORE DATABASE /backups/backup.zip
Se si vuole evitare di entrare nella console, nell'installazione di OrientDB è presente un apposito tool per la realizzazione di backup. Si chiama backup.sh e, come gli altri comandi, si trova all'interno della cartella bin. La sua invocazione richiede alcune informazioni:
- coordinate del database, specificando tipologia (locale o remoto) ed indirizzo;
- credenziali di accesso;
- cartella di destinazione per il file di backup;
- opzionalmente la modalità di esecuzione del backup: default per richiedere un lock contestuale del database, lvm per evitare il lock.
Nel seguente esempio, verrà effettuato un backup di un database remoto di nome db, tramite utente root (password parolachiave), con salvataggio nella cartella /opt/backup:
backup.sh remote:localhost/db root parolachiave /opt/backup/backupdb.zip
Esportare ed importare dati
Per l'esportazione di un database dalla console esiste il comando EXPORT DATABASE
:
EXPORT DATABASE exportdb
L'output del comando sarà il file exportdb.json, compresso mediante l'algoritmo GZIP. Il file JSON prodotto servirà per eseguire l'importazione, ma potrebbe essere utilizzato anche per scopi diversi. La documentazione ufficiale fornisce informazioni dettagliate in merito alla sua struttura. Sommariamente, possiamo considerarlo composto da quattro sezioni:
- info, contenente informazioni di massima sulla modalità di esportazione;
- clusters, che descrive i cluster inclusi e la loro natura;
- schema, che contiene la descrizione delle classi ed i cluster loro collegati;
- records, con i dati effettivi.
Il comando IMPORT
funziona in maniera analoga:
IMPORT DATABASE exportdb
Backup automatici
È in genere buona prassi automatizzare i backup, in modo da conservare un archivio storico dei dati, prevenendo perdite accidentali e imprevedibili. OrientDB offre un'opzione per l'automatizzazione dei backup tramite il plugin OAutomaticBackup. Quest'ultimo è disabilitato di default, e la sua configurazione può essere modificata in un nodo XML di tipo handler
nel file config/orientdb-server-config.xml:
<handler class="com.orientechnologies.orient.server.handler.OAutomaticBackup">
<parameters>
<parameter value="false" name="enabled"/>
<parameter value="4h" name="delay"/>
<parameter value="23:00:00" name="firstTime"/>
<parameter value="backup" name="target.directory"/>
<parameter value="${DBNAME}-${DATE:yyyyMMddHHmmss}.zip" name="target.fileName"/>
<parameter value="9" name="compressionLevel"/>
<parameter value="1048576" name="bufferSize"/>
<parameter value="" name="db.include"/>
<parameter value="" name="db.exclude"/>
</parameters>
</handler>
Il parametro enabled
rivela che il backup automatico è disattivato, poichè il suo valore è posto a false
. Gli altri parametri, come si può intuire, specificano l'orario di esecuzione (firstTime
: di default 23:00), l'intervallo che intercorre tra un salvataggio e l'altro (delay
: impostato a 4 ore), collocazione del file risultante nel sistema
(target.directory
e target.fileName
) nonchè altre particolarità come il livello di compressione e quali database includere o escludere dal processo. Le impostazioni del file possono essere modificate, e per essere rese effettive sarà necessario riavviare il server.