Copia mongodb collezione tra due server e diverse versioni mongo …

Ho una raccolta in un mongoDB, su un progetto che viene eseguito localmente e devo copiare la raccolta sul server dev. Puoi dirmi come farlo, considerando che:

  1. La macchina locale (la sorgente) è accessibile dall'esterno, ma solo con l'IP.

  2. Un set di replica MongoDB richiede alless 2 o 3 membri?
  3. È / home un buon posto per mettere il mio (enorme) file di dati MongoDB?
  4. cosa significa che il% lock in mongostat significa?
  5. Single SSD su un nodo mongodb
  6. Assicurare MONGO con TLS (e TLS reciproci)
  7. Alta utilizzo della CPU sul server mongodb quando è inattivo?
  8. La versione del mongo locale è 2.0.4, mentre la versione di mongo sul server dev è 2.2.2.

Ho fatto una piccola ricerca, ma non sono sicuro di alcune cose … come ad esempio quali credenziali devo scegliere per il DB di origine? … quelli per la connessione SSH? … o … ? …

Grazie in anticipo 🙂

5 Solutions collect form web for “Copia mongodb collezione tra due server e diverse versioni mongo …”

La soluzione migliore che ho riuscito a think of è questo:

  1. Ho fatto un dump dei dati della raccolta di fonti:

db.prices.find()

  1. Modificare il risultato (elenco di JSONs) da qualcosa di simile

{"_id" : ObjectId("..."), "action" : "show", "price" : 12 } {"_id" : ObjectId("..."), "action" : "hide", "price" : 10 } {"_id" : ObjectId("..."), "action" : "poke", "price" : 20 } ................

a un tale (aggiunto "," dopo each JSON, ha rimosso l'ID, quindi ho un arrays alla fine):

[ {"action" : "show", "price" : 12 }, {"action" : "hide", "price" : 10 }, {"action" : "poke", "price" : 20 } ................ ]

E poi passare questa nuova matrix di JSON al metodo di inserimento della nuova collezione: (copia l'arrays nell'apposito dispositivo, direttamente dall'editor di text che ho usato per farlo)

db.prices.inset( + Maiusc + Inserisci + )

E voila 🙂 … tutti i tuoi dati vengono trasferiti 🙂 …

In primo luogo, ti consiglio di aggiornare le tue versioni di MongoDB – sia le versioni dev che le versioni locali sono molto vecchie, e dovresti avere entrambi nella stessa versione se è ansible. Le versioni 2.0 e 2.2 sono molto diverse (nessuna chiusura globale in 2.2) e entrambe hanno avuto più versioni stabili dalle versioni che elenchi. Infine, entrambe le versioni sono considerate la fine della vita .

Per quanto riguarda il modo di trasferire i dati tra di loro, hai diverse opzioni, ma se i dati sono relativamente piccoli, le opzioni più facili sono mongodump . Semplicemente usa questo per espellere i dati locali che si desidera trasferire su BSON (includerà indici ecc. Se si prende una intera raccolta o database) e quindi utilizza mongorestore per inserire questi dati nel database dev. Ancora una volta, consiglio di utilizzare una versione più recente di mongodump / mongorestore di 2.2.2 o 2.0.4 – sono stati corretti diversi errori con gli strumenti nelle versioni successive che potresti colpire diversamente (le versioni successive degli strumenti dovrebbero essere compatibili all'indietro ).

In termini di altre opzioni, se stai assumendo un integer database, puoi semplicemente copiare l'integer set di file per quel database dall'host locale al server dev. Avrebbe bisogno di riavviare il database e significherebbe spazzare quel database each volta sul server dev, ma a seconda delle tue esigenze che potrebbero essere un'opzione. Puoi anche guardare il connettore Mongo come un modo per riflettere i tuoi dati tra locale e dev in un modo più reale e continuo. Ci sono probabilmente un paio di altri modi per raggiungere questo objective, ma questi sono i più avanzati.

È ansible creare un'altra connessione dal server di destinazione e utilizzare la function save() .

Per esempio:

conn2 = nuovo Mongo ("desitination_server: port")

desti_db = conn2.getDB ("destination_db_name") -> ora è ansible accedere al server mongodb di destinazione dalla connessione di origine DB.

db.sourceCollection.find (). forEach (function (x) {desti_db.targetCollectionName.save (x)}); -> leggere l'attuale raccolta DB di origine e salvarla in destinazione mongodb

Perché non si prova db.cloneCollection ()? http://docs.mongodb.org/manual/reference/method/db.cloneCollection/

si esegue db.cloneCollection (da_instance, nome_collegazione, query) sull'istanza dev mongodb. from_instance sarebbe l'indirizzo IP e l'indirizzo dell'istanza locale. E la richiesta è opzionale – se non viene inserita, tirerà tutti i documenti nella raccolta di origine.

quindi, qualcosa come: db.cloneCollection ("12.34.56.78:27017", "mydb.mycollectionname")

MongoCopyPaste: cercare qualsiasi Registro di sistema nel server remoto. Copia e incolla nel server di destinazione. Da una a molte collezioni.

https://github.com/eduardoespinosa/MongoCopyPaste

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.