2012-05-23 16 views
6

Sto provando a scaricare un database da un altro server (funziona bene), quindi lo ripristino su un nuovo server (questo non funziona correttamente).Mongodump e mongorestore; campo non trovato

ho prima esecuzione:

mongodump --host -d 

Questo crea una cartella dump/db che contiene tutti i documenti BSON.

Poi nella cartella discarica, sto correndo:

mongorestore -d dbname db 

Questo funziona e consente di scorrere i file, ma ottengo questo errore sul dbname.system.users

Wed May 23 02:08:05 { key: { _id: 1 }, ns: "dbname.system.users", name: "_id_" } 
Error creating index dbname.system.usersassertion: 13111 field not found, expected type 16 

Delle idee come risolvere questo ?

risposta

7

Qualche possibilità che la fonte e la destinazione siano versioni differenti?

In ogni caso, per ovviare a questo, ripristinare le raccolte individualmente utilizzando il flag -c sul DB di destinazione e quindi creare gli indici in seguito. La raccolta di sistema è quella usata per gli indici, quindi è abbastanza facile da ricreare: provatela una volta che tutto il resto è stato ripristinato e, se fallisce, potete sempre ricreare gli indici rilevanti.

+0

Grazie! Ha funzionato perfetto – dzm

+0

Sì, ha avuto un problema simile con il tentativo di "mongorestore" per MongoHQ dal locale. Locale declassato via 'brew' e non più errori. –

+0

Per versione intendi la versione del database o un qualche tipo di versione dello schema? La versione di 'mongorestore' viene eseguita a livello locale o solo le versioni da e per la sincronizzazione? –

9

Se si tratta di versioni diverse, utilizzare l'opzione --noIndexRestore. E creare tutti gli indici dopo.

+1

Ha funzionato bene per me –

3

Il problema potrebbe anche causati da questo bug nelle versioni precedenti di Mongo (Nel mio caso era 2.0.8):

https://jira.mongodb.org/browse/SERVER-7181

In sostanza, si ottiene 13111 field not found, expected type 16 errore quando dovrebbe effettivamente essere spingendo per inserire i dettagli di autenticazione.

E esempio di come ho riparato:

[email protected]:/# mongorestore /backups/demand/ondemand.05-24-2013T114223/ 
connected to: 127.0.0.1 
[REDACTED] 
Fri May 24 11:48:15  going into namespace [test.system.indexes] 
Fri May 24 11:48:15 { key: { _id: 1 }, ns: "test.system.users", name: "_id_" } 
Error creating index test.system.usersassertion: 13111 field not found, expected type 16 
# Error when not giving username and password 

[email protected]:/# mongorestore -u fakeuser -p fakepassword /backups/demand/ondemand.05-24-2013T114223/ 
connected to: 127.0.0.1 
[REDACTED] 
Fri May 24 11:57:11 /backups/demand/ondemand.05-24-2013T114223/test/system.users.bson 
Fri May 24 11:57:11  going into namespace [test.system.users] 
1 objects found 
# Works fine when giving username and password! :) 

Speranza che aiuta chiunque sia questione non venga fissato dalle precedenti 2 risposte!

0

Questo può verificarsi anche se si sta tentando di eseguire l'installazione su MongoDB 2.6+ e il dump che si sta tentando di ripristinare contiene una tabella system.users in qualsiasi database diverso da admin. In MongoDB 2.2 e 2.4 le collezioni system.users potrebbero verificarsi in qualsiasi database. La migrazione dello schema di autenticazione associata a MongoDB 2.6 ha spostato tutti gli utenti nella tabella system.users nel database di amministrazione, ma ha lasciato le tabelle system.users negli altri database (MongoDB 2.6 le ignora semplicemente). Questo sembra causare questa asserzione quando si importa in MongoDB 2.6.

Problemi correlati