2012-01-10 21 views
6

Credo che qualcuno ha già suggerito:MongoDB: come fare il backup di MongoDB

1. stop the mongod 
2. backup the data directory 

E 'affidabile, voglio dire, garantire il 100% di successo per ripristinare? E non riesco a trovare quale directory memorizza i dati ... qualsiasi comando può aiutarmi a trovarlo?

risposta

6

Se il processo mongod termina in modo pulito (ovvero senza arresti anomali o materiale kill -9), è possibile copiare in sicurezza i file di dati da qualche parte.

Se l'installazione corrente si interrompe (ad esempio, danneggiamento dei dati a causa di un arresto non pulito), è possibile eliminare i suoi file, copiare il backup e avviare nuovamente mongod.

La directory di dati di default è /data/db, ma può essere impostata su un altro valore nel file di configurazione. Ad esempio, l'ho impostato su /var/lib/mongodb.

È inoltre possibile utilizzare mongodump per eseguire un backup da un server attivo (questo potrebbe influire sulle prestazioni). Utilizzare mongorestore per ripristinare i backup effettuati da mongodump.

+0

Per: come utilizzare ** mongodump ** e ** mongorestore **, puoi una domanda simile e rispondere qui per mongodump e mongorestore ** ** sintassi: http://stackoverflow.com/a/ 21309914/2728686 – AmpT

5

In IGN eseguiamo backup a caldo tramite mongodump come cron job orario e prendiamo istantanee di file (storage NetApp) ogni mezz'ora. Se il tuo sistema non è troppo pesante da scrivere e puoi permetterti di scrivere blocchi, prova a utilizzare fsync e lock per svuotare le scritture sul disco e impedire ulteriori scritture. Questo può essere seguito da mongodump e al completamento è possibile sbloccare il db. Tieni presente che devi essere amministratore per farlo.

db.runCommand({fsync:1,lock:1}) 
+0

Quale opzione consiglieresti per scrivere db pesanti? – VinnyD

+0

Istantanee del disco o slave ritardati. – lobster1234

+0

e per quanto riguarda i backup in ambienti inattivi? –