sql >> Database teknologi >  >> NoSQL >> MongoDB

Kopier/klon en database i MongoDB

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.


  1. Vil redis incr-kommandoen være begrænsning til et bestemt antal?

  2. Find alle duplikerede dokumenter i en MongoDB-samling ved et nøglefelt

  3. Brug af Cloudera Data Engineering til at analysere dataene i lønsedlens beskyttelsesprogram

  4. StackExchange Redis ChannelPrefix Ikke Scoping-nøgler