sql >> Databáze >  >> NoSQL >> MongoDB

Zálohujte databázi MongoDB pomocí mongodump

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.


  1. Jak spustit mongodb shell v kontejneru docker?

  2. Automatizace a správa open source databází v cloudu – oznámení ClusterControl 1.6

  3. Jak exportovat kolekci do CSV v MongoDB?

  4. Jak zlepšit výkon vkládání MongoDB