V dřívějších verzích MongoDB jste mohli použít copyDB
příkaz nebo jeho pomocná metoda, db.copyDatabase()
zkopírovat databázi.
MongoDB je od té doby zavrhl. Počínaje verzí 4.2 také MongoDB odstranil copydb
a tedy také db.copyDatabase()
metoda, což znamená, že je nemůžete použít, i kdybyste chtěli, pokud používáte MongoDB 4.2 nebo novější.
Naštěstí existuje jiný způsob, jak zkopírovat databázi MongoDB.
Vyhledejte databázové nástroje MongoDB
V MongoDB můžete klonovat databázi pomocí databázových nástrojů MongoDB. Konkrétně můžete použít mongodump
a mongorestore
.
Databázové nástroje MongoDB jsou sada nástrojů příkazového řádku pro práci s MongoDB.
Pokud si nejste jisti, zda máte nainstalované databázové nástroje MongoDB, zkuste spustit následující příkazy v terminálu nebo příkazovém řádku a zkontrolujte:
mongodump --version
mongorestore --version
To konkrétně kontroluje mongodump
a mongorestore
verze.
Pokud je nemáte, můžete k instalaci databázových nástrojů MongoDB do vašeho systému použít pokyny k instalaci na webu MongoDB.
Příklad klonování databáze
Musíte spustit mongodump
a mongorestore
z příkazového řádku vašeho systému (např. nový terminál nebo okno příkazového řádku). Nespouštějte jej z mongo
skořápka.
Zde je příklad kódu, který klonuje databázi:
mongodump --archive --db=PetHotel | mongorestore --archive --nsFrom='PetHotel.*' --nsTo='PetHouse.*'
V tomto případě zálohujeme PetHotel
databázi a poté obnovte všechny její sbírky do databáze s názvem PetHouse
. Jinými slovy, naklonovali jsme PetHotel
databázi jako PetHouse
.
Toto používá mongodump
vytvořte záložní soubor databáze a poté mongorestore
obnovit tuto databázi pod jiným názvem. Udělali jsme to tak, že jsme uložili databázi do standardního výstupního proudu a nasměrovali do mongorestore
.
Každý parametr dělá toto:
Parametr | Popis |
---|---|
--archive | Zapíše výstup do zadaného archivního souboru nebo, pokud archivní soubor není specifikován, zapíše do standardního výstupu (stdout ). V našem případě je archivní soubor nespecifikován, takže se zapisoval na standardní výstup. |
--db | Určuje databázi k zálohování. V tomto případě zálohujeme PetHotel databáze. |
--nsFrom | Určuje kolekci v souboru výpisu. Zástupný znak hvězdička (* ) určuje všechny kolekce. |
--nsTo | Uvádí název kolekce, která by měla být použita v obnovené databázi. |
Můžete také použít mongodump
vypsat všechny databáze. Chcete-li to provést, stačí spustit mongodump
bez jakýchkoliv argumentů. Když to však uděláte, nezahrnuje local
a config
databáze ve svém výpisu.