We wcześniejszych wersjach MongoDB można było użyć copyDB
polecenie lub jego metoda pomocnicza, db.copyDatabase()
skopiować bazę danych.
MongoDB od tego czasu je wycofał. Ponadto, począwszy od wersji 4.2, MongoDB usunęła copydb
polecenie, a zatem także db.copyDatabase()
metoda, co oznacza, że nie możesz ich używać, nawet jeśli chcesz, jeśli używasz MongoDB 4.2 lub nowszego.
Na szczęście istnieje inny sposób na skopiowanie bazy danych MongoDB.
Sprawdź narzędzia bazy danych MongoDB
W MongoDB możesz sklonować bazę danych za pomocą narzędzi bazy danych MongoDB. W szczególności możesz użyć mongodump
i mongorestore
.
Narzędzia baz danych MongoDB to zestaw narzędzi wiersza poleceń do pracy z MongoDB.
Jeśli nie masz pewności, czy masz zainstalowane narzędzia baz danych MongoDB, spróbuj uruchomić następujące polecenia w terminalu lub wierszu polecenia, aby sprawdzić:
mongodump --version
mongorestore --version
Sprawdza to konkretnie mongodump
i mongorestore
wersje.
Jeśli ich nie masz, możesz skorzystać z instrukcji instalacji na stronie MongoDB, aby zainstalować narzędzia bazy danych MongoDB w swoim systemie.
Przykład klonowania bazy danych
Musisz uruchomić mongodump
i mongorestore
z wiersza poleceń systemu (np. nowe okno terminala lub wiersza polecenia). Nie uruchamiaj go z mongo
powłoka.
Oto przykład kodu, który klonuje bazę danych:
mongodump --archive --db=PetHotel | mongorestore --archive --nsFrom='PetHotel.*' --nsTo='PetHouse.*'
W takim przypadku tworzymy kopię zapasową PetHotel
bazy danych, a następnie przywróć wszystkie jej kolekcje do bazy danych o nazwie PetHouse
. Innymi słowy, sklonowaliśmy PetHotel
baza danych jako PetHouse
.
To używa mongodump
aby utworzyć kopię zapasową bazy danych, a następnie mongorestore
przywrócić tę bazę danych pod inną nazwą. Zrobiliśmy to, zrzucając bazę danych do standardowego strumienia wyjściowego i przesyłając do mongorestore
.
Oto, co robi każdy parametr:
Parametr | Opis |
---|---|
--archive | Zapisuje dane wyjściowe do określonego pliku archiwum lub, jeśli plik archiwum nie jest określony, zapisuje na standardowym wyjściu (stdout ). W naszym przypadku plik archiwum jest nieokreślony, więc zapisał na standardowe wyjście. |
--db | Określa bazę danych do utworzenia kopii zapasowej. W takim przypadku tworzymy kopię zapasową PetHotel baza danych. |
--nsFrom | Określa kolekcję w pliku zrzutu. Symbol wieloznaczny z gwiazdką (* ) określa wszystkie kolekcje. |
--nsTo | Określa nazwę kolekcji, która powinna być używana w przywróconej bazie danych. |
Możesz także użyć mongodump
zrzucić wszystkie bazy danych. Aby to zrobić, po prostu uruchom mongodump
bez żadnych argumentów. Jednak gdy to zrobisz, nie obejmuje local
i config
bazy danych w swoim zrzucie.