MongoDump e MongoRestore rispetto a MongoExport e MongoImport

Jan 25 2023
MongoDB è un programma di database orientato ai documenti multipiattaforma disponibile in origine. Classificato come programma di database NoSQL, MongoDB utilizza documenti simili a JSON con schemi opzionali.

MongoDB è un programma di database orientato ai documenti multipiattaforma disponibile in origine. Classificato come programma di database NoSQL, MongoDB utilizza documenti simili a JSON con schemi opzionali.

In questo blog parlerò dell'uso di " mongodump e mongorestore" rispetto a "mongoexport e mongoimport" . Il blog sta considerando il fatto che i lettori di questo blog provengono da un background MongoDB e i termini utilizzati sono strettamente correlati solo a MongoDB.

Quando lavoriamo con un'organizzazione o lavoriamo su un'enorme base di codice con una notevole quantità di dati nel database, ci sono casi in cui abbiamo bisogno di usare questi comandi abbastanza spesso, e ci sono molti controlli di pensiero e sanità mentale prima di usare questi comandi come manipolano i dati e la manipolazione di dati di grandi dimensioni è un compito da gestire con cura, in quanto potrebbe portare a tempi di inattività del database o ridondanza dei dati che a sua volta potrebbe portare a una grave perdita sia in termini di tecnologia (ovvero per ristabilizzare nuovamente il database) o potrebbe portare alla perdita della fiducia degli utenti.

Parliamo del motivo per cui abbiamo bisogno di queste utilità. Dal nome, possiamo concludere che mongodump e mongoexport devono essere utilizzati per esportare dati dal database e mongorestore e mongoimport devono importare dati nel database, ma la parte importante è perché più utilità per attività simili. Questo è ciò che capiremo.

mongodump

mongodump è un'utilità della riga di comando per la creazione di un'esportazione binaria del contenuto di un database. mongodump può esportare dati da istanze mongod o mongos ; ad esempio, può esportare dati da distribuzioni di cluster standalone, set di repliche e sharded. Il comando di esempio per utilizzare mongodump è:

$ mongodump --uri=<MONGO_URL> --db=<DB_NAME> --collection=<COLL_NAME>

Questo è il comando da eseguire per estrarre il dump utilizzando mongodump. Per impostazione predefinita, verrebbe creata una cartella di dump e un dump del database all'interno della stessa cartella. Dobbiamo passare il MONGO_URL nel --uriparametro o possiamo utilizzare --user=myuser and --password=somepassper consentire all'utilità di connettersi al client MongoDB. Possiamo specificare il database e la raccolta per eseguire il dump dell'utilizzo --db and --collectiondei parametri e persino possiamo utilizzare --outil parametro per modificare il nome della directory di dump. Ogni volta che prendiamo il dump, per ogni raccolta, genera due file, uno è il .bsonfile e uno è .metadata.jsonil file. Per maggiori approfondimenti su mongodump, è possibile fare riferimento alla documentazione . Il backup del database può anche essere eseguito in un file di archivio utilizzando il --archivecampo.

Il motivo per cui usiamo mongodump è che crea copie binarie ed è più efficiente ( per efficiente significa che è più veloce di mongoexport e crea un dump di dati più compresso ). Un altro motivo è che, poiché mongodump esegue .bson il dump, conserva i tipi di dati avanzati BSON. Conserva anche gli indici e altre statistiche nel .metadata.jsonfile, quindi una volta ripristinati i dati, gli indici verranno creati implicitamente. Quindi, generalmente, viene utilizzato (e consigliato da MongoDB per essere utilizzato) per i backup dei dati pianificati tramite cron o qualcos'altro.

Nota: non possiamo usare --archiveflag e --outflag insieme nello stesso comando mongodump.

mongorestore

mongorestore è il complemento di mongodump e viene utilizzato per importare i dati scaricati tramite mongodump o mongoexport. mongorestore è un'operazione di solo inserimento , il che significa che non sovrascriverà un documento nel database già esistente.

Mongorestore ci consente di eseguire alcune opzioni di ripristino parziale specificando una raccolta o un elenco di raccolte che vorremmo ripristinare nel database. Se abbiamo solo bisogno di ripristinare una raccolta, possiamo utilizzare il --collectionflag in cui dovremo specificare il --dbflag con il database in cui stiamo ripristinando, nonché un percorso al BSONfile delle raccolte. Si consiglia di utilizzare --nsIncludeil flag invece del flag di raccolta.

Se vogliamo verificare se a mongorestorefunzionerà prima di importare il database, possiamo utilizzare per --dryRunverificare se il ripristino funzionerà come previsto. Con il --dryRunflag, mongorestore restituirà le informazioni di riepilogo di mongorestore senza importare alcun dato.

$ mongorestore --db=mydb --nsInclude="staging.*" dump/

mongoexport

mongoexport funziona allo stesso modo di mongodump, ma è meno efficiente in termini di spazio e produce il dump dei dati in un formato leggibile dall'uomo, ad esempio il formato JSON , e quindi richiede anche più tempo. Per impostazione predefinita, mongoexport scrive su stdout, ma possiamo anche scrivere i dati su un file usando il --outparametro. Ma come abbiamo discusso in mongodump, il dump di mongoexport non è compresso e non produce .metadata.jsonquindi non può conservare gli indici e, per impostazione predefinita, non può conservare anche i ricchi tipi di dati BSON. Sebbene nella versione più recente di mongo, mongoexport ha il supporto per preservare i ricchi tipi BSON utilizzando --jsonFormat=canonicalil parametro.

Un vantaggio di mongoexport è che possiamo esportare anche campi specifici, utilizzando il --fields=field1,field2...parametro e specificando tutti i valori come separati da virgole. Possiamo anche utilizzare --skip, --limite --sortin mongoexport per ottenere risultati filtrati e limitati. Ci sono anche molti campi che possiamo usare mentre usiamo mongoexport. Possiamo anche utilizzare --queryi parametri per ottenere risultati/dump più filtrati. Quando eseguiamo il dump utilizzando mongoexport, diventa facile aggiornarli nelle applicazioni dell'interfaccia utente del database come MongoDB Compass .

mongoimport

mongoimport è il complemento di mongoexport e viene utilizzato per ripristinare l'esportazione JSON, CSV o TSV estesa creata da mongoexporto potenzialmente da un altro strumento di esportazione di terze parti. La grande differenza tra mongorestore e l' utility mongoimport è il --modeflag che ha le opzioni di insert, upsert e merge. Solo dai nomi possiamo capire che in caso di modalità di inserimento , possiamo inserire solo documenti _id univoci e registreremo l'errore in caso di duplicazione. In caso di upsert , se esiste già un documento con lo stesso _ id, il nuovo documento sostituirà il documento precedente con lo stesso _ id. Il terzo caso è l'unione, dove i documenti esistenti che corrispondono a un documento nel file di importazione vengono uniti al nuovo documento.

Conclusione: le utility mongodump / mongorestore sono perfette per una strategia di backup e ripristino del database mongo. Queste utilità ci consentono di eseguire il dump e il ripristino da un singolo file di archivio che può essere facilmente compresso e archiviato o trasferito tramite e-mail. Il mongorestore ci consente di includere o escludere determinate raccolte dall'importazione e/o dal ripristino nel nuovo database con leopzioni flag--nsIncludee--nsExcludeLe utilità mongoexport / mongoimport sono ottime per lavorare con raccolte all'interno di un database mongo e per inserire/aggiornare documenti all'interno di tali raccolte. Possiamo usare la--modebandiera in mongoimportper definire se vogliamo inserire, sostituire o unire documenti dal nostro file importato.

Grazie per aver letto e puoi contattarmi su LinkedIn e GitHub .