2013-04-12 21 views
23

Stavo cercando di eseguire il backup del mio database mongo sul sever del prodotto e quindi di ripristinare il server di staging. e qui arriva qualche problema, ci sono un sacco di collezioni in db, voglio igonre alcune collezioni che non voglio ripristinare sul server di staging.mongodump ignora alcune raccolte specificate

Sono in grado di avvicinarsi a questo dumping del db di staging, dumpping del db producting e quindi ripristinare il prodct sull'unità di gestione temporanea utilizzando l'opzione --drop. e ripristinare le raccolte specificate in db staging. uh..it è davvero pessimo

1. discarica produttrici db

mongodump --host product-server-host --username abcd --password bcda -d db -o pruduct-dump-dir 

2. discarica messa in scena db

mongodump --host staging-server-host --username abcd --password bcda -d db -o staging -dump-dir 

3. ripristinare tutta la linea, quindi ripristinare la raccolta posteriore ripristino pruduct-dump -dire al server di stadiazione

mongorestore --host staging-server-host --username abcd --password bcda --drop pruduct-dump-dir 

mongorestore --host staging-server-host --username abcd --password bcda --drop --collection coll pruducting-dump-dir 

C'è qualche opzione come la raccolta ignore quando sto tagliando? qualsiasi suggerimento sarà apprezzato: 3

risposta

6

È possibile aggiungere --collection COLLECTION_NAME per scaricare la raccolta necessaria. Per impostazione predefinita, se non si specifica una raccolta per il dump da un database, MongoDump eseguirà il dump di tutte le raccolte in tale database.

+1

cosa succede se ho 20 le raccolte devono effettuare il dump tranne le 4 collezioni – sashimi

+1

È necessario scaricare ciascuna raccolta singolarmente. – Nick

+13

sì qualcosa come '--exclude_collection col1 col2 col3' sarebbe fantastico. Nessuna menzione in http://docs.mongodb.org/manual/reference/program/mongodump/. Sembra che ci sia una richiesta di funzionalità in MongoDB Jira: https://jira.mongodb.org/browse/SERVER-2459 si dovrebbe votare per il problema – tester

42

Ora disponibile a partire dalla versione 3.0.0

--excludeCollection <collection_name> 
--excludeCollectionsWithPrefix <collection_prefix> 

Ripetere per escludere più di 1

Checkout the documentation

+7

Detta documentazione sembra non dare assolutamente alcuna indicazione su cosa significhi "array di stringhe".Non esiste in realtà un'idea unificata degli array come parametri nella shell, quindi ciò potrebbe significare qualsiasi cosa. È una stringa con separatori di virgola? È un numero qualsiasi di stringhe finché non si incontra una nuova bandiera? Dovremmo mettere '()' s o '[]' attorno ad esso? Che dire della ripetizione della bandiera con una collezione diversa? Tutti questi sono usati come sostituti per gli array, sarebbe bello se qualcuno potesse chiarire cosa vogliono realmente. – Thor84no

+8

@ Thor84no hai ragione, nessuna indicazione sul significato. Ma per escludere più di una collezione puoi ripetere il parametro excludeCollection (penso che questo sia ciò che intendono con array). Esempio: 'mongodump --excludeCollection = users --excludeCollection = jobs -d mydatabase' –

+0

Grazie, è molto utile. – Thor84no

0
mongodump --db test --excludeCollection=users --excludeCollection=salaries 
+0

sarebbe possibile aggiungere una descrizione per rispondere. Non sono sicuro che le sole risposte al codice siano buone e lo standard stackoveflow. –

0

Come di Mongo 3.4, è ora possibile specificare un'opzione --nsExclude <namespace pattern> quando ripristino da un dump del database Mongo, che escluderà gli spazi dei nomi specificati dall'operazione di ripristino. Ciò è particolarmente utile quando l'operazione mongodump si è già verificata.

documentazione ufficiale qui: https://docs.mongodb.com/manual/reference/program/mongorestore/#cmdoption-nsexclude

è possibile escludere più raccolte con caratteri jolly:

mongorestore --db test --nsExclude 'test.*_tmp' 

Oppure, in alternativa, si specificano più --nsExclude opzioni funzionano così:

mongorestore --db test --nsExclude 'test.collection1' --nsExclude 'test.collection2' 
Problemi correlati