I tidigare versioner av MongoDB kunde du använda copyDB
kommandot eller dess hjälpmetod, db.copyDatabase()
att kopiera en databas.
MongoDB har sedan dess avvecklat dessa. Från och med version 4.2 har MongoDB också tagit bort copydb
kommandot och därför även db.copyDatabase()
metod, vilket innebär att du inte kan använda dem även om du vill om du använder MongoDB 4.2 eller senare.
Lyckligtvis finns det ett annat sätt att kopiera en MongoDB-databas.
Sök efter MongoDB Database Tools
I MongoDB kan du klona en databas med hjälp av MongoDB Database Tools. Specifikt kan du använda mongodump
och mongorestore
.
MongoDB Database Tools är en uppsättning kommandoradsverktyg för att arbeta med MongoDB.
Om du inte är säker på om du har MongoDB Database Tools installerade, prova att köra följande kommandon i din terminal eller kommandotolk för att kontrollera:
mongodump --version
mongorestore --version
Det söker specifikt efter mongodump
och mongorestore
versioner.
Om du inte har dem kan du använda installationsinstruktionerna på MongoDB-webbplatsen för att installera MongoDB Database Tools på ditt system.
Exempel på kloning av en databas
Du måste köra mongodump
och mongorestore
från ditt systems kommandorad (t.ex. ett nytt terminal- eller kommandotolksfönster). Kör det inte från mongo
skal.
Här är ett exempel på kod som klonar en databas:
mongodump --archive --db=PetHotel | mongorestore --archive --nsFrom='PetHotel.*' --nsTo='PetHouse.*'
I det här fallet säkerhetskopierar vi PetHotel
databas, återställ sedan alla dess samlingar till en databas som heter PetHouse
. Med andra ord, vi klonade PetHotel
databas som PetHouse
.
Detta använder mongodump
för att skapa en säkerhetskopia av databasen, sedan mongorestore
för att återställa databasen under ett annat namn. Vi gjorde detta genom att dumpa databasen till standardutgångsströmmen och koppla in i mongorestore
.
Så här gör varje parameter:
Parameter | Beskrivning |
---|---|
--archive | Skriver utdata till en specificerad arkivfil eller, om arkivfilen är ospecificerad, skriver till standardutdata (stdout ). I vårt fall är arkivfilen ospecificerad, så den skrev till standardutgången. |
--db | Anger en databas som ska säkerhetskopieras. I det här fallet säkerhetskopierar vi PetHotel databas. |
--nsFrom | Anger samlingen i dumpfilen. Asterisk jokertecken (* ) specificerar alla samlingar. |
--nsTo | Anger samlingsnamnet som ska användas i den återställda databasen. |
Du kan också använda mongodump
att dumpa alla databaser. För att göra det, kör bara mongodump
utan några argument. Men när du gör det inkluderar den inte local
och config
databaser i sin dump.