Ein paar Dinge :
- Im Allgemeinen cloneCollection wird für verschiedene Mongo-Instanzen verwendet, aber nicht zum Kopieren auf dieselben Instanzen.
- Auch wenn Sie
v4.2verwenden Sie sollten aufhören,copyDBzu verwenden &cloneCollectionweil sie veraltet sind Kompatibilität-mit-v4.2 &beginnen Sie mit der Verwendung von mongodump und mongorestore oder mongoexport &mongoimport . -
Ich würde vorschlagen, mongodump zu verwenden &mongorestore :
- Verursache mongodump würde die Datentypen von MongoDB beibehalten, dh;
bsonTypen. - mongodump erstellt ein binäres Where als mongoexport würde
bsonumwandeln zujson&wieder mongoimport konvertiertjsonzubsonbeim Schreiben, weshalb sie langsam sind. Sie können mongoexport &mongoimport verwenden, wenn Sie Ihre Sammlungsdaten visuell analysieren oderjsonverwenden möchten Daten für andere Zwecke.
- Verursache mongodump würde die Datentypen von MongoDB beibehalten, dh;
-
Sie können das folgende Skript in der Shell ausführen
declare - a collections = ("collectionName1" "collectionName2") for i in "${collections[@]}" do echo "$i" mongodump --host "All-shards" --username=uname --password password --ssl --authenticationDatabase admin --db dbname --collection "$i" mongorestore --host=host-shard-name --port=27017 --username=uname --password=psswrd --ssl --authenticationDatabase=admin --db=dbname --collection= "$i" ./dump/dbName/"$i".bson; done
Um mongodump zu verwenden , müssen Sie mongodump für eine laufende mongod- oder mongos-Instanz ausführen. Diese Befehle werden also in der Erwartung ausgeführt, dass Mongo ordnungsgemäß installiert ist und die Pfadeinstellung gut ist. Wenn nicht, können Sie zum Mongo-Ordner navigieren und wie ./mongodump ausführen &./mongorestore . Das obige Skript ist nützlich, wenn Sie mehrere Sammlungen sichern möchten. Sie müssen einige Dinge im Skript angeben, z. B. :
-
mongodump--host "All-shards"-> Hier müssen Sie alle Shards angeben, wenn Ihre MongoDB ein Replikatsatz ist, wenn nicht, können Sielocalhost:27017angeben . -
mongorestore --host=host-shard-name-> Sie müssen einen Shard des Replikatsatzes angeben, andernfalls Ihrenlocalhost, Einige Dinge hier können optional sein--ssl,--username,--password. - Also mongodump erstellt einen Ordner namens dump zum ersten Mal, das die Unterordner mit dbNames haben wird, und jeder Unterordner wird
bsonhaben Dateien entsprechend ihrer Sammlungsnamen ausgegeben, Sie müssen also aufdbNameverweisen im Wiederherstellungsbefehl und Sammlungsname wird aus Variableigenommen ->./dump/dbName/"$i".bson
Hinweis: MongoDB v3.2 ist so alt und im Cloud-basierten MongoDB-Dienst Mongo-atlas
Es hat bereits das Ende seines Lebenszyklus erreicht, also aktualisieren Sie bitte so schnell wie möglich. Wenn Sie nach einer kostenlosen Mongo-Instanz suchen oder mit MongoDB beginnen, können Sie Atlas ausprobieren.