Existuje několik způsobů, jak zálohovat databázi v MongoDB. Jedním rychlým způsobem zálohování databáze je použití mongodump nástroj.
mongodump čte data z databáze MongoDB a vytváří vysoce věrné soubory BSON, které mongorestore utility může použít k obnovení databáze MongoDB.
Pomocí mongodump , můžete zálohovat kolekci, databázi nebo všechny databáze.
Vyhledejte databázové nástroje MongoDB
mongodump je součástí balíčku databázových nástrojů MongoDB. Databázové nástroje MongoDB jsou sada nástrojů příkazového řádku pro práci s MongoDB.
Můžete nebo nemusíte mít databázové nástroje MongoDB/mongodump nainstalováno. Zkuste spustit následující příkaz v terminálu nebo příkazovém řádku a zkontrolujte:
mongodump --version Pokud jej nemáte, můžete jej nainstalovat do svého systému pomocí pokynů k instalaci na webu MongoDB.
Kde spustit příkazy?
Musíte spustit mongodump příkazy z příkazového řádku vašeho systému (např. nový terminál nebo okno příkazového řádku).
Nespouštějte je z mongo skořápka.
Zálohovat všechny databáze
Chcete-li zálohovat všechny databáze a kolekce v místní instanci běžící na výchozím portu 27017, použijte mongodump příkaz bez jakýchkoli argumentů.
mongodump
Spuštění výše uvedeného kódu vypíše všechny databáze do složky s názvem dump/ .
Všimněte si, že nezahrnuje local a config databáze.
Všimněte si také, že mongodump pouze zachycuje dokumenty v databázi. Když provedete obnovu, mongorestore nebo mongod musí po obnovení dat znovu sestavit indexy.
Takto vypadají soubory v dump/ složka.
tree dump Výsledek:
dump
├── PetHotel
│ ├── employees.bson
│ ├── employees.metadata.json
│ ├── owners.bson
│ ├── owners.metadata.json
│ ├── pets.bson
│ ├── pets.metadata.json
│ ├── pettypes.metadata.json
│ ├── players.bson
│ ├── players.metadata.json
│ ├── scores.bson
│ ├── scores.metadata.json
│ ├── students.bson
│ └── students.metadata.json
├── admin
│ ├── system.users.bson
│ ├── system.users.metadata.json
│ ├── system.version.bson
│ └── system.version.metadata.json
└── krankykranes
├── employees.bson
├── employees.metadata.json
├── products.bson
└── products.metadata.json
Tyto soubory jsou samozřejmě specifické pro moji instalaci MongoDB, která obsahuje testovací databáze. V mém případě byly vypsány 3 databáze:PetHotel , admin a krankykranes .
Zálohování na konkrétní místo
Můžete použít --out nebo -o k určení umístění pro umístění souborů pro výpis databáze.
Příklad:
mongodump --out=data/backups/ Nebo:
mongodump -o=data/backups/
V tomto případě je výstup každé složky databáze přímo do data/backups/ složka (tj. neexistuje žádný /dump/ složka).
Zálohujte konkrétní databázi
Můžete použít --db parametr k určení databáze, která se má zálohovat.
mongodump --db=krankykranes
Toto vypíše krankykranes databáze na výchozí dump/ složka.
Zálohování konkrétní sbírky
Můžete použít --collection nebo -c k určení kolekce k zálohování.
Příklad:
mongodump --db=krankykranes --collection=products Nebo:
mongodump --db=krankykranes -c=products
Tím se vypíšou products sběr do dump/krankykranes složka.
Vyloučení sbírek
Můžete také použít --excludeCollection parametr k určení konkrétní kolekce, která se má ze zálohy vyloučit (tj. nezahrnout do zálohy).
Příklad:
mongodump --db=PetHotel --excludeCollection=employees
Tím se vypíšou všechny sbírky z PetHotel databáze kromě employees kolekce.
Chcete-li vyloučit více než jednu sbírku, použijte samostatný --excludeCollection parametr pro každou kolekci, kterou chcete vyloučit.
Příklad:
mongodump --db=PetHotel --excludeCollection=employees --excludeCollection=students
To nezahrnuje employees a students sbírky ze zálohy.
Můžete také použít --excludeCollectionsWithPrefix parametr pro vyloučení kolekcí s danou předponou.
mongodump --db=PetHotel --excludeCollectionsWithPrefix=p
To vypíše všechny kolekce kromě těch, které začínají písmenem p .
Následující vylučuje všechny kolekce, které začínají pet .
mongodump --db=PetHotel --excludeCollectionsWithPrefix=pet
Můžete použít více --excludeCollectionsWithPrefix argumenty pro vyloučení kolekcí s více předponami.
Příklad:
mongodump --db=PetHotel --excludeCollectionsWithPrefix=p --excludeCollectionsWithPrefix=s Komprimujte výstup
Můžete použít --gzip parametr pro kompresi výstupu.
mongodump --gzip --db=krankykranes Tím se zkomprimují jednotlivé soubory.
tree dump Výsledek:
dump
└── krankykranes
├── employees.bson.gz
├── employees.metadata.json.gz
├── products.bson.gz
└── products.metadata.json.gz
Vidíme, že všechny soubory mají .gz rozšíření.
Při výstupu do archivního souboru nebo standardního výstupního proudu --gzip komprimuje archivní soubor nebo výstup dat do streamu.
Převést zobrazení na sbírky
Můžete použít --viewsAsCollections parametr pro export pohledů pouze pro čtení jako kolekce.
mongodump --db=PetHotel --viewsAsCollections
Když exportujete pohled jako kolekci, mongodump vytvoří soubor BSON obsahující dokumenty v pohledu. Pokud používáte mongorestore pro obnovení vytvořeného souboru BSON bude pohled obnoven jako kolekce.
Bez použití tohoto argumentu mongodump exportuje metadata každého pohledu. Pokud zahrnete soubor metadat zobrazení do mongorestore operace, pohled se znovu vytvoří.
Pomocí --viewsAsCollections také vynechává všechny standardní kolekce. Proto, když spustím výše uvedený kód, můj dump/ struktura složek vypadá takto:
tree dump Výsledek:
dump
└── PetHotel
├── pettypes.bson
└── pettypes.metadata.json
V mém PetHotel databáze, mám pohled nazvaný pettypes . Když to exportuji jako pohled, exportují se pouze metadata. Ale když to převedu na kolekci, pettypes.bson je vytvořen soubor, který by tam nebyl, kdybych exportoval pohled jako pohled.
Co se stane, když exportuji toto zobrazení, aniž bych jej převedl na kolekci.
mongodump --db=PetHotel --collection=pettypes Poté spusťte příkaz stromu, abyste získali strukturu složek.
tree dump Výsledek:
dump
└── PetHotel
└── pettypes.metadata.json Můžeme tedy vidět, že se vypisují pouze metadata pro pohled.
Tichý režim
Můžete použít --quiet parametr pro omezení výstupu v okně terminálu nebo příkazového řádku.
mongodump --quiet Bez použití tohoto pravděpodobně uvidíte velký seznam pohledů, sbírek atd., které jsou zálohovány.
Upovídaný režim
Na druhé straně můžete použít --verbose nebo -v parametry zvýšit výstup v okně terminálu nebo příkazového řádku.
mongodump --verbose
Výřečnost můžete zvýšit opakováním -v tvořit vícekrát.
Příklad:
mongodump -vvvv Spuštění tohoto na mém systému výrazně zvýšilo výřečnost.
Záložní výsledky dotazu
Můžete použít --query nebo -q parametry pro výpis výsledku dotazu.
Příklad:
mongodump --db=PetHotel --collection=pets --query='{ "type": "Dog" }' Když to uděláte, vložte dotaz do jednoduchých uvozovek. Pro pole můžete použít dvojité uvozovky.
Archiv a standardní výstup
Můžete použít --archive nebo parametr pro zápis výstupu do zadaného archivního souboru nebo, pokud archivní soubor není specifikován, do standardního výstupu (stdout ) streamovat, abyste mohli přejít na jiný proces.
Příklad výstupu do archivního souboru:
mongodump --archive=PetHotel.20201230.archive --db=PetHotel
V dalším příkladu zapisuji do standardního výstupního proudu a poté pomocí kanálu mongorestore :
mongodump --archive --db=PetHotel --collection=pets --query='{ "type": "Dog" }' | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHotel.dogs'
Výsledkem je nová kolekce s názvem dogs objevující se v PetHotel databáze (a kolekce obsahuje pouze dokumenty, které mají type pole s hodnotou dog ).
Řízení přístupu
Předchozí příklady byly provedeny na místním počítači pomocí výchozího portu. To znamenalo, že jsme mohli spustit mongodump bez určení věcí jako --host , --port , --username , atd.
Zde je příklad, který používá tyto parametry k ověření jako homer :
mongodump --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --out=/backups/mongodump-2020-12-30
Mohli jsme také použít --password parametr, ale neudělali jsme to. Pokud předáte --user ale ne --password , budete vyzváni k zadání hesla.
Další informace o mongodump
mongodump obslužný program akceptuje spoustu dalších užitečných parametrů a při jeho používání jako součásti strategie zálohování a obnovy je třeba zvážit také různé faktory.
Viz mongodump dokumentaci na webu MongoDB pro více informací.
Další možnosti
mongodump a mongorestore jsou jednoduché a efektivní nástroje pro zálohování a obnovu malých nasazení MongoDB, ale nejsou ideální pro zachycování záloh větších systémů.
Další metody zálohování databází MongoDB naleznete v části Metody zálohování MongoDB na webu MongoDB.