MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Архивирайте база данни MongoDB с помощта на mongodump

Има няколко начина за архивиране на база данни в MongoDB. Един бърз начин за архивиране на база данни е да използвате mongodump инструмент.

mongodump чете данни от база данни MongoDB и създава BSON файлове с висока точност, които mongorestore помощната програма може да използва за възстановяване на база данни MongoDB.

С mongodump , можете да архивирате колекция, база данни или всички бази данни.

Проверете за инструменти за база данни на MongoDB

mongodump е част от пакета MongoDB Database Tools. Инструментите за база данни на MongoDB са набор от помощни програми от командния ред за работа с MongoDB.

Може или не може да имате MongoDB Database Tools/mongodump инсталирани. Опитайте да изпълните следната команда във вашия терминал или команден ред, за да проверите:

mongodump --version

Ако го нямате, можете да използвате инструкциите за инсталиране на уебсайта на MongoDB, за да го инсталирате на вашата система.

Къде да изпълнявам командите?

Трябва да стартирате mongodump команди от командния ред на вашата система (например нов прозорец на терминал или команден ред).

Не ги стартирайте от mongo черупка.

Архивирайте всички бази данни

За да архивирате всички бази данни и колекции в локалния екземпляр, работещ на порта по подразбиране 27017, използвайте mongodump команда без никакви аргументи.

mongodump

Изпълнението на горния код изхвърля всички бази данни в папка, наречена dump/ .

Имайте предвид, че изключва local и config бази данни.

Също така имайте предвид, че mongodump улавя само документите в базата данни. Когато правите възстановяване, mongorestore или mongod трябва да изгради отново индексите след възстановяване на данните.

Ето как изглеждат файловете в dump/ папка.

tree dump

Резултат:

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

Тези файлове очевидно са специфични за моята инсталация на MongoDB, която съдържа тестови бази данни. В моя случай бяха изхвърлени 3 бази данни:PetHotel , admin и krankykranes .

Резервно копие на конкретно местоположение

Можете да използвате --out или -o за да посочите местоположение за поставяне на файловете за изхвърлените бази данни.

Пример:

mongodump --out=data/backups/

Или:

mongodump -o=data/backups/

В този случай всяка папка с база данни се извежда директно в data/backups/ папка (т.е. няма /dump/ папка).

Архивиране на конкретна база данни

Можете да използвате --db параметър, за да посочите база данни за архивиране.

mongodump --db=krankykranes

Това изхвърля krankykranes база данни към dump/ по подразбиране папка.

Създайте резервно копие на конкретна колекция

Можете да използвате --collection или -c за да посочите колекция за архивиране.

Пример:

mongodump --db=krankykranes --collection=products

Или:

mongodump --db=krankykranes -c=products

Това изхвърля products събиране в dump/krankykranes папка.

С изключение на колекции

Можете също да използвате --excludeCollection параметър, за да посочите конкретна колекция, която да изключите от архива (т.е. да не включите в архива).

Пример:

mongodump --db=PetHotel --excludeCollection=employees

Това изхвърля всички колекции от PetHotel база данни с изключение на employees колекция.

За да изключите повече от една колекция, използвайте отделен --excludeCollection параметър за всяка колекция, която искате да изключите.

Пример:

mongodump --db=PetHotel --excludeCollection=employees --excludeCollection=students

Това изключва employees и students колекции от архива.

Можете също да използвате --excludeCollectionsWithPrefix параметър за изключване на колекции с даден префикс.

mongodump --db=PetHotel --excludeCollectionsWithPrefix=p

Това изхвърля всички колекции, освен тези, които започват с буквата p .

Следното изключва всички колекции, които започват с pet .

mongodump --db=PetHotel --excludeCollectionsWithPrefix=pet

Можете да използвате няколко --excludeCollectionsWithPrefix аргументи за изключване на колекции с множество префикси.

Пример:

mongodump --db=PetHotel --excludeCollectionsWithPrefix=p  --excludeCollectionsWithPrefix=s

Компресирайте изхода

Можете да използвате --gzip параметър за компресиране на изхода.

mongodump --gzip --db=krankykranes

Това компресира отделните файлове.

tree dump

Резултат:

dump
└── krankykranes
    ├── employees.bson.gz
    ├── employees.metadata.json.gz
    ├── products.bson.gz
    └── products.metadata.json.gz

Можем да видим, че всички файлове имат .gz разширение.

Когато извеждате в архивен файл или стандартния изходящ поток, --gzip опцията компресира архивния файл или изведените данни в потока.

Преобразуване на изгледи в колекции

Можете да използвате --viewsAsCollections параметър за експортиране на изгледи само за четене като колекции.

mongodump --db=PetHotel --viewsAsCollections

Когато експортирате изглед като колекция, mongodump създава BSON файл, съдържащ документите в изгледа. Ако използвате mongorestore за да възстановите произведения BSON файл, изгледът ще бъде възстановен като колекция.

Без да използвате този аргумент, mongodump експортира метаданните на всеки изглед. Ако включите файла с метаданни на изглед в mongorestore операция, изгледът се пресъздава.

Използване на --viewsAsCollections също така пропуска всички стандартни колекции. Следователно, когато стартирам горния код, моят dump/ структурата на папките изглежда така:

tree dump

Резултат:

dump
└── PetHotel
    ├── pettypes.bson
    └── pettypes.metadata.json

В моя PetHotel база данни, имам изглед, наречен pettypes . Когато експортирам това като изглед, се експортират само метаданните. Но когато го преобразувам в колекция, pettypes.bson се създава файл, който не би бил там, ако бях експортирал изгледа като изглед.

Ето какво се случва, ако експортирам този изглед, без да го преобразувам в колекция.

mongodump --db=PetHotel --collection=pettypes

След това изпълнете командата дърво, за да получите структурата на папките.

tree dump

Резултат:

dump
└── PetHotel
    └── pettypes.metadata.json

Така можем да видим, че само метаданните за изгледа са изхвърлени.

Тих режим

Можете да използвате --quiet параметър за ограничаване на изхода в прозореца на терминала или командния ред.

mongodump --quiet

Без да използвате това, вероятно ще видите голям списък с изгледи, колекции и т.н., които са архивирани.

Подробен режим

От друга страна, можете да използвате --verbose или -v параметри за увеличаване изхода във вашия терминал или прозорец на командния ред.

mongodump --verbose

Можете да увеличите многословността, като повторите -v форма няколко пъти.

Пример:

mongodump -vvvv

Изпълнението на това в моята система значително увеличи многословието.

Резервни резултати от заявка

Можете да използвате --query или -q параметри за изхвърляне на резултата от заявка.

Пример:

mongodump --db=PetHotel --collection=pets --query='{ "type": "Dog" }'

Когато правите това, оградете заявката с единични кавички. Можете да използвате двойни кавички за полетата.

Архиви и стандартен изход

Можете да използвате --archive или параметър за записване на изхода в определен архивен файл или, ако архивният файл не е посочен, в стандартния изход (stdout ) поток, за да можете да пренасочите към друг процес.

Пример за извеждане в архивен файл:

mongodump --archive=PetHotel.20201230.archive --db=PetHotel

В следващия пример пиша към стандартния изходен поток, след което изпращам към mongorestore :

mongodump --archive --db=PetHotel --collection=pets --query='{ "type": "Dog" }' | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.dogs'

Това води до нова колекция, наречена dogs се появява в PetHotel база данни (и колекцията съдържа само документи, които имат type поле със стойност dog ).

Контрол на достъпа

Предишните примери бяха направени на локалната машина с помощта на порта по подразбиране. Това означаваше, че успяхме да изпълним mongodump без да се посочват неща като --host , --port , --username и др.

Ето пример, който използва тези параметри за удостоверяване като homer :

mongodump --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --out=/backups/mongodump-2020-12-30

Можехме също да използваме --password параметър, но ние не го направихме. Ако подадете --user но не и --password , ще бъдете подканени за паролата.

Повече информация за mongodump

mongodump Помощната програма приема много други полезни параметри и има различни фактори, които трябва да се вземат предвид, когато се използва като част от стратегия за архивиране и възстановяване.

Вижте mongodump документация на уебсайта на MongoDB за повече информация.

Други опции

mongodump и mongorestore са прости и ефективни инструменти за архивиране и възстановяване на малки разгръщания на MongoDB, но не са идеални за заснемане на резервни копия на по-големи системи.

Вижте Методи за архивиране на MongoDB на уебсайта на MongoDB за други методи за архивиране на вашите бази данни MongoDB.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Агрегирана заявка на MongoDB, използваща драйвер за PHP

  2. Как да ограничите броя на документите за актуализиране в mongodb

  3. Компресиране на индексен префикс в MongoDB 3.0 WiredTiger

  4. Как автоматизацията на базата данни на MongoDB подобрява сигурността

  5. Декодиране на регистрационните файлове за грешки в MongoDB