I tidligere versioner af MongoDB kunne du bruge copyDB
kommandoen eller dens hjælpemetode, db.copyDatabase()
at kopiere en database.
MongoDB har siden forældet disse. Fra og med version 4.2 har MongoDB også fjernet copydb
kommandoen og derfor også db.copyDatabase()
metode, hvilket betyder, at du ikke kan bruge dem, selvom du ville, hvis du bruger MongoDB 4.2 eller nyere.
Heldigvis er der en anden måde at kopiere en MongoDB-database på.
Søg efter MongoDB-databaseværktøjer
I MongoDB kan du klone en database ved hjælp af MongoDB Database Tools. Specifikt kan du bruge mongodump
og mongorestore
.
MongoDB-databaseværktøjerne er en række kommandolinjeværktøjer til at arbejde med MongoDB.
Hvis du ikke er sikker på, om du har installeret MongoDB-databaseværktøjerne, kan du prøve at køre følgende kommandoer i din terminal eller kommandoprompt for at kontrollere:
mongodump --version
mongorestore --version
Det tjekker specifikt efter mongodump
og mongorestore
versioner.
Hvis du ikke har dem, kan du bruge installationsinstruktionerne på MongoDB-webstedet til at installere MongoDB-databaseværktøjer på dit system.
Eksempel på kloning af en database
Du skal køre mongodump
og mongorestore
fra dit systems kommandolinje (f.eks. et nyt terminal- eller kommandopromptvindue). Kør det ikke fra mongo
skal.
Her er et eksempel på kode, der kloner en database:
mongodump --archive --db=PetHotel | mongorestore --archive --nsFrom='PetHotel.*' --nsTo='PetHouse.*'
I dette tilfælde sikkerhedskopierer vi PetHotel
database, og gendan derefter alle dens samlinger til en database kaldet PetHouse
. Med andre ord klonede vi PetHotel
database som PetHouse
.
Dette bruger mongodump
for at oprette en sikkerhedskopi af databasen, derefter mongorestore
for at gendanne databasen under et andet navn. Vi gjorde dette ved at dumpe databasen til standardoutputstrømmen og røre ind i mongorestore
.
Her er, hvad hver parameter gør:
Parameter | Beskrivelse |
---|---|
--archive | Skriver output til en specificeret arkivfil eller, hvis arkivfilen er uspecificeret, skriver til standardoutput (stdout ). I vores tilfælde er arkivfilen uspecificeret, så den skrev til standardoutputtet. |
--db | Specificerer en database til backup. I dette tilfælde sikkerhedskopierer vi PetHotel database. |
--nsFrom | Specificerer samlingen i dumpfilen. Stjerne-jokertegnet (* ) angiver alle samlinger. |
--nsTo | Specificerer samlingsnavnet, der skal bruges i den gendannede database. |
Du kan også bruge mongodump
at dumpe alle databaser. For at gøre det skal du bare køre mongodump
uden nogen argumenter. Men når du gør det, inkluderer det ikke den local
og config
databaser i sin dump.