Kilka rzeczy :
- Ogólnie cloneCollection jest używany dla różnych instancji mongo, ale nie do kopiowania w tych samych instancjach.
- Również, jeśli używasz
v4.2powinieneś przestać używaćcopyDB&cloneCollectionponieważ są przestarzałe zgodność-z-v4.2 i zacznij używać mongodump i mongorestore lub mongoexport &mongoimport . -
Proponuję użyć mongodump &mongorestore :
- Powoduje mongodump zachowałby typy danych MongoDB, tj.;
bsontypy. - mongodump tworzy plik binarny, gdzie jako mongoexport przekonwertowałby
bsondojsoni znowu mongoimport przekonwertujejsondobsonpodczas pisania, dlatego są powolne. Możesz użyć mongoexport i mongoimport, jeśli chcesz wizualnie analizować dane kolekcji lub użyćjsondane w jakimkolwiek innym celu.
- Powoduje mongodump zachowałby typy danych MongoDB, tj.;
-
Możesz uruchomić poniższy skrypt w powłoce
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
Aby użyć mongodump , musisz uruchomić mongodump przeciwko działającej instancji mongod lub mongos. Więc te polecenia są uruchamiane, oczekując, że mongo jest poprawnie zainstalowane, a konfiguracja ścieżki jest dobra, jeśli nie, możesz przejść do folderu mongo i uruchomić jak ./mongodump &./mongorestore . Powyższy skrypt będzie przydatny, jeśli chcesz wykonać kopię zapasową wielu kolekcji. Musisz określić kilka rzeczy w skrypcie, takich jak:
-
mongodump--host "All-shards"-> Tutaj musisz określić wszystkie fragmenty, jeśli twój MongoDB jest zestawem replik, jeśli nie, możesz określićlocalhost:27017. -
mongorestore --host=host-shard-name-> Musisz określić jeden fragment zestawu replik, w przeciwnym razie Twójlocalhost, Kilka rzeczy tutaj może być opcjonalnych--ssl,--username,--password. - Więc mongodump utworzy folder o nazwie dump po raz pierwszy, który będzie miał podfoldery z nazwami dbNames i każdy podfolder będzie miał
bsonpliki odpowiadające ich nazwom kolekcji zostały zrzucone, więc musisz odwołać się dodbNamew poleceniu przywracania i nazwa kolekcji zostanie pobrana ze zmienneji->./dump/dbName/"$i".bson
Uwaga: MongoDB v3.2 jest tak stara i oparta na chmurze usługa MongoDB Mongo-atlas
osiągnął już koniec swojego cyklu życia, więc prosimy o jak najszybsze uaktualnienie. Jeśli szukasz darmowej instancji mongo lub zaczynasz od MongoDB - możesz wypróbować atlas.