Några saker :
- I allmänhet cloneCollection används för olika mongo-instanser men inte för att kopiera på samma instanser.
- Också om du använder
v4.2du bör sluta användacopyDB&cloneCollectioneftersom de är utfasade kompatibilitet-med-v4.2 &börja använda mongodump och mongorestore eller mongoexport &mongoimport . -
Jag skulle föreslå att du använder mongodump &mongorestore :
- Orsak mongodump skulle bevara MongoDB:s datatyper, dvs.;
bsontyper. - mongodump skapar en binär där som mongoexport skulle konvertera
bsontilljson&igen mongoimport konverterarjsontillbsonmedan du skriver, vilket är anledningen till att de är långsamma. Du kan använda mongoexport och mongoimport när du vill analysera dina samlingsdata visuellt eller användajsondata för något annat ändamål.
- Orsak mongodump skulle bevara MongoDB:s datatyper, dvs.;
-
Du kan köra nedanstående skript i skalet
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
För att använda mongodump , måste du köra mongodump mot en pågående mongod eller mongos-instans. Så dessa kommandon körs förutsatt att mongo är korrekt installerat och sökvägsinställningen är bra, annars kan du navigera till mongo-mappen och köra som ./mongodump &./mongorestore . Ovanstående skript kommer att vara användbart om du vill säkerhetskopiera flera samlingar. Du måste ange några saker i skriptet som:
-
mongodump--host "All-shards"-> Här måste du ange alla shards om din MongoDB är en replikuppsättning, om inte kan du angelocalhost:27017. -
mongorestore --host=host-shard-name-> Du måste ange en replikuppsättning, annars dinlocalhost, Få saker här kan vara valfria--ssl,--username,--password. - Så mongodump kommer att skapa en mapp med namnet dump för första gången som kommer att ha undermapparna med dbNames och varje undermapp kommer att ha
bsonfiler som motsvarar deras samlingsnamn dumpade, så du måste referera tilldbNamei återställning kommer kommandot och samlingens namn att tas från variabelni->./dump/dbName/"$i".bson
Obs! MongoDB v3.2 är så gammal och i molnbaserad MongoDB-tjänst Mongo-atlas
den har redan nått slutet av livscykeln, så uppgradera så snart som möjligt. Om du letar efter en gratis mongo-instans eller börjar med MongoDB – kan du prova atlas.