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.2
powinieneś przestać używaćcopyDB
&cloneCollection
ponieważ 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.;
bson
typy. - mongodump tworzy plik binarny, gdzie jako mongoexport przekonwertowałby
bson
dojson
i znowu mongoimport przekonwertujejson
dobson
podczas pisania, dlatego są powolne. Możesz użyć mongoexport i mongoimport, jeśli chcesz wizualnie analizować dane kolekcji lub użyćjson
dane 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ł
bson
pliki odpowiadające ich nazwom kolekcji zostały zrzucone, więc musisz odwołać się dodbName
w 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.