MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Una rassegna delle opzioni di backup di MongoDB

Il backup del database non è altro che un modo per proteggere o ripristinare i dati. È il processo di archiviazione dello stato operativo, dell'architettura e dei dati del database. Può essere molto utile in situazioni di interruzione tecnica o disastro. Quindi è essenziale mantenere il backup del tuo database e che il tuo database disponga di una buona e facile procedura per il backup.

MongoDB fornisce diversi strumenti/tecniche per eseguire facilmente il backup dei database.

In questo articolo, discuteremo alcuni dei principali flussi di lavoro di backup e ripristino di MongoDB.

In genere, ci sono tre opzioni più comuni per eseguire il backup del server/cluster MongoDB.

  • Mongodump/Mongorestore
  • Gestione cloud MongoDB
  • Istantanee del database

Oltre a queste opzioni generali, ci sono altri modi per eseguire il backup di MongoDB. Discuteremo anche tutte queste opzioni in questo articolo. Iniziamo.

MongoDump/MongoRestore

Se hai un piccolo database (<100 GB) e vuoi avere il pieno controllo dei tuoi backup, Mongodump e Mongorestore sono le tue migliori opzioni. Questi sono comandi della shell mongo che possono essere utilizzati per eseguire il backup manuale del database o delle raccolte. Mongodump esegue il dump di tutti i dati in formato JSON(BSON) binario nella posizione specificata. Mongorestore può utilizzare questi file BSON per ripristinare il database.

Backup di un intero database

$ sudo mongodump --db mydb --out /var/backups/mongo

Uscita:

2018-08-20T10:11:57.685-0500    writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500    writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500    done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500    writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson

In questo comando, l'argomento più importante è --db. Specifica il nome del database di cui si desidera eseguire il backup. Se non specifichi questo argomento, il comando Mongodump eseguirà il backup di tutti i tuoi database, il che può essere un processo molto intenso.

Backup di una singola raccolta

$ mongodump -d mydb -o /var/backups/mongo --collection users

Questo comando eseguirà il backup solo della raccolta degli utenti nel database mydb. Se non dai questa opzione, verrà eseguito il backup di tutta la raccolta nel database per impostazione predefinita.

Esecuzione di backup regolari utilizzando Mongodump/Mongorestore

Come pratica standard, dovresti eseguire backup regolari del tuo database MongoDB. Supponiamo di voler eseguire un backup ogni giorno alle 3:03 del mattino, quindi in un sistema Linux puoi farlo aggiungendo una voce cron in crontab.

$ sudo crontab -e

Aggiungi questa riga in crontab:

3 3 * * * mongodump --out /var/backups/mongo

Ripristina un intero database

Per ripristinare il database, possiamo usare il comando Mongorestore con l'opzione --db. Leggerà i file BSON creati da Mongodump e ripristinerà il tuo database.

$ sudo mongorestore --db mydb /var/backups/mongo/mydb

Uscita

2018-07-20T12:44:30.876-0500    building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500    reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500    restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500    restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500    finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500    done

Ripristina un'intera collezione

Per ripristinare solo una singola raccolta da db, puoi utilizzare il seguente comando:

$ mongorestore -d mydb -c users mydb/users.bson

Se viene eseguito il backup della tua raccolta in formato JSON anziché BSON, puoi utilizzare il comando seguente:

$ mongoimport --db mydb --collection users --file users.json --jsonArray

Vantaggi

  • Molto semplice da usare
  • Hai pieno accesso al tuo backup
  • Puoi mettere i tuoi backup in qualsiasi posizione come condivisioni NFS, AWS S3 ecc.

Svantaggi

  • Ogni volta sarà necessario un backup completo del database, non solo la differenza.
  • Per i database di grandi dimensioni, possono essere necessarie ore per eseguire il backup e il ripristino del database.
  • Per impostazione predefinita, non è point-in-time, il che significa che se i tuoi dati cambiano durante il backup, il backup potrebbe causare incoerenze. È possibile utilizzare l'opzione --oplog per risolvere questo problema. Ci vorrà un'istantanea del database alla fine del processo mongodump.

Gestione operazioni MongoDB

Ops Manager è un'applicazione di gestione per MongoDB che viene eseguita nel tuo data center. Esegue il backup continuo dei dati e fornisce processi di ripristino point-in-time per il database. All'interno di questa applicazione, c'è un agente che si connette alle tue istanze MongoDB. Eseguirà prima una sincronizzazione iniziale per eseguire il backup dello stato corrente del database. L'agente continuerà a inviare i dati oplog compressi e crittografati a Ops Manager in modo che tu possa avere un backup continuo. Utilizzando questi dati, Ops Manager creerà snapshot del database. Creerà uno snapshot del tuo database ogni 6 ore e i dati oplog verranno archiviati per 24 ore. Puoi configurare la pianificazione delle istantanee in qualsiasi momento utilizzando Ops Manager.

Vantaggi

  • È puntuale per impostazione predefinita
  • Non influisce sulle prestazioni di produzione, ad eccezione della sincronizzazione iniziale
  • Supporto per snapshot coerenti di cluster partizionati
  • Flessibilità per escludere raccolte non critiche

Svantaggi

  • La latenza di rete aumenta con la dimensione dello snapshot durante il ripristino del database.

Gestione cloud MongoDB

MongoDB Cloud Manager è una soluzione di backup basata su cloud che fornisce una soluzione di backup point-in-time, backup continuo e online come servizio completamente gestito. Puoi semplicemente installare l'agente Cloud Manager per gestire il backup e il ripristino del tuo database. Memorizzerà i tuoi dati di backup nel cloud MongoDB.

Vantaggi

  • Molto semplice da usare. Buona interfaccia grafica.
  • Backup continuo di query e oplog.

Svantaggi

  • Nessun controllo sui dati di backup. È archiviato nel cloud MongoDB.
  • Il costo dipende dalla dimensione dei dati e dalla quantità di modifiche apportate all'oplog.
  • Il processo di ripristino è lento.

File di database di snapshot

Questa è la soluzione più semplice per eseguire il backup del database. Puoi copiare tutti i file sottostanti (contenuto di dati/directory) e posizionarli in qualsiasi posizione sicura. Prima di copiare tutti i file, interrompere tutte le operazioni di scrittura in corso su un database per garantire la coerenza dei dati. È possibile utilizzare il comando db.fsyncLock() per interrompere tutte le operazioni di scrittura.

Esistono due tipi di snapshot:uno è snapshot a livello di cloud e un altro è snapshot a livello di sistema operativo.

Se stai archiviando i dati del database con un provider di servizi cloud come AWS, devi eseguire snapshot di AWS EBS per il backup. Al contrario, se stai archiviando file DB in un sistema operativo nativo come Linux, devi acquisire snapshot LVM. Gli snapshot LVM non sono portabili su altre macchine. Quindi gli snapshot basati su cloud sono migliori degli snapshot basati su sistema operativo.

Vantaggi

  • Facile da usare.
  • Pieno controllo sulle istantanee. Puoi spostarlo in qualsiasi data center.
  • Queste istantanee sono istantanee differenziate che memorizzano solo le differenze rispetto alle istantanee precedenti.
  • Non è necessario scaricare gli snapshot per ripristinare il database. Puoi semplicemente creare un nuovo volume dalla tua istantanea.

Svantaggi

  • Utilizzando questo metodo, puoi ripristinare il database solo nei punti di rottura.
  • A volte la manutenzione diventa molto complessa.
  • Per coordinare i backup in tutti i set di repliche (in un sistema partizionato), è necessario un team devops speciale.

Strumento di backup coerente MongoDB

Il backup coerente di MongoDB è uno strumento per eseguire backup coerenti dei cluster MongoDB. Può eseguire il backup di un cluster con uno o più shard in un unico punto del database. Utilizza Mongodump come metodo di backup predefinito. Esegui il comando seguente per eseguire il backup utilizzando questo strumento.

$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo

Tutti i backup generati da questi comandi sono compatibili con MongoRestore. È possibile utilizzare il comando mongorestore con l'opzione --oplogReplay per garantire la coerenza.

$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump

Vantaggi

  • Completamente open source
  • Funziona con il cluster partizionato
  • Fornisce un'opzione per il backup remoto come Amazon S3
  • Ridimensionamento automatico disponibile
  • Molto facile da installare ed eseguire

Svantaggio

  • Prodotto non completamente maturo
  • Pochissime opzioni di caricamento remoto
  • Non supporta la crittografia dei dati prima del salvataggio su disco
  • Il repository di codice ufficiale non dispone di test adeguati

Backup di ClusterControl

ClusterControl è un sistema di gestione di database automatizzato tutto in uno. Ti consente di monitorare, distribuire, gestire e ridimensionare i tuoi cluster di database con facilità. Supporta MySQL, MongoDB, PostgreSQL, Percona XtraDB e Galera Cluster. Questo software automatizza quasi tutte le operazioni del database come la distribuzione di un cluster, l'aggiunta o la rimozione di un nodo da qualsiasi cluster, backup continui, ridimensionamento del cluster, ecc. Tutte queste cose possono essere eseguite da un'unica GUI fornita dal sistema ClusterControl.

ClusterControl fornisce una GUI molto piacevole per la gestione del backup di MongoDB con supporto per la pianificazione e report creativi. Ti offre due opzioni per i metodi di backup.

  1. Discarica di Mongo
  2. Backup coerente con Mongodb

Quindi gli utenti possono scegliere qualsiasi opzione in base alle loro esigenze. Questo strumento assegna un ID univoco a tutti i backup e lo archivia in questo percorso:ClusterControl> Impostazioni> Backup> BackupID. Se il nodo specificato non è attivo durante l'esecuzione del backup, lo strumento troverà automaticamente il nodo attivo dal cluster e proseguirà il processo di backup su quel nodo. Questo strumento fornisce anche un'opzione per la pianificazione dei backup utilizzando uno dei metodi di backup sopra indicati. Puoi abilitare/disabilitare qualsiasi lavoro di pianificazione semplicemente attivando un pulsante. ClusterControl esegue il processo di backup in background in modo che non influisca sugli altri processi in coda.

Vantaggi

  • Installazione semplice e molto semplice da usare
  • Più opzioni per i metodi di backup
  • La pianificazione del backup è molto semplice utilizzando un semplice modulo GUI
  • Verifica di backup automatizzata
  • Backup dei rapporti con lo stato

Svantaggio

  • Entrambi i metodi di backup utilizzano internamente mongodump, che presenta alcuni problemi con la gestione di database molto grandi.

Conclusione

Una buona strategia di backup è una parte fondamentale di qualsiasi sistema di gestione del database. MongoDB offre molte opzioni per backup e ripristino/ripristino. Insieme a un buon metodo di backup, è molto importante disporre di più repliche del database. Questo aiuta a ripristinare il database senza avere il tempo di inattività anche di un secondo. A volte per i database più grandi, il processo di backup può richiedere molte risorse. Quindi il tuo server dovrebbe essere dotato di una buona CPU, RAM e più spazio su disco per gestire questo tipo di carico. Il processo di backup può aumentare il carico sul server a causa di questi motivi, quindi dovresti eseguire il processo di backup durante le ore notturne o non di punta.