Руководство по MongoDB. Резервирование.

В данной статье мы рассмотрим резервирование базы данных (далее – БД) в MongoDB.


Команда mongodump

Для создания резервной копии БД в MongoDB нам необходимо использовать команду mongodump. Данная команда “скинет” все данные нашего сервера в указанную директорию. Для ограничения количества данных существует целый ряд команд.

Команда mongodump имеет следующий синтаксис:


mongodump

Для понимания того, как это работает на практике, рассмотрим простой пример.
Для начала запустим наш сервер:
Предположим, что наш сервер


sudo systemctl start mongod

Проверим его статус:


sudo service mongodb status
? mongodb.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: active (running) since вт 2016-11-01 08:36:44 EET; 2h 27min ago
 Main PID: 1101 (mongod)
   CGroup: /system.slice/mongodb.service
           ??1101 /usr/bin/mongod --quiet --config /etc/mongod.conf

лис 01 08:36:44 proselyte systemd[1]: Started High-performance, schema-free document-oriented database

Примечание: данные команды выполняются не внутри mongo shell, а через терминал ОС.
Предположим, что наш сервер работает по IP 127.0.0.1 на порте 27017 и хранит все данные в директории в папке /bin/dump.
В этом случае, в результате выполнения команды mongodump мы получим следующее


mongodump
2016-11-01T11:13:17.433+0200	writing projectdb.developers to 
2016-11-01T11:13:17.434+0200	done dumping projectdb.developers (3 documents)

Ниже приведён список настроек, которые могут быть указаны при создании резервной копии:

 

Синтаксис Описание Пример
mongodump –host ИМЯ_ХОСТА –port НОМЕР_ПОРТА Данная команда создаст резервную копию всех БД указанного экземпляра mongod. mongodump –host proselyte.net –port 27017
mongodump –dbpath ПУТЬ_К_БД –out ДИРЕКТОРИЯ_РЕЗЕРВНОЙ_КОПИИ Данная команда создаст резервную копию указанной БД по указанному пути. mongodump –dbpath /data/db/ –out /data/backup/
mongodump –collection КОЛЛЕКЦИЯ –db ИМЯ_БД Данная команда создаст резервную копию только указанной коллекции указанной БД mongodump –collection developers –db projectdb

Восстановление данных
Для восстановления данных в MongoDB используется команда mongorestore, которая восстанавливает данные в указанную директорию.
Она имеет следующий синтаксис:


mongorestore

При выполнении данной команды мы получим следующий результат:


mongorestore 
2016-11-01T11:20:38.287+0200	using default 'dump' directory
2016-11-01T11:20:38.287+0200	building a list of dbs and collections to restore from dump dir
2016-11-01T11:20:38.287+0200	reading metadata for projectdb.developers from dump/projectdb/developers.metadata.json
2016-11-01T11:20:38.288+0200	restoring projectdb.developers from dump/projectdb/developers.bson
2016-11-01T11:20:38.329+0200	error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: projectdb.developers index: _id_ dup key: { : ObjectId('5817b36c60662ea7d39f4124') }
  - E11000 duplicate key error collection: projectdb.developers index: _id_ dup key: { : ObjectId('5817b37b60662ea7d39f4125') }
  - E11000 duplicate key error collection: projectdb.developers index: _id_ dup key: { : ObjectId('5817b38160662ea7d39f4126') }

2016-11-01T11:20:38.329+0200	restoring indexes for collection projectdb.developers from metadata
2016-11-01T11:20:38.330+0200	finished restoring projectdb.developers (3 documents)
2016-11-01T11:20:38.330+0200	done

На этом мы заканчиваем изучение резервирования данных в MongoDB.
В следующей статье мы рассмотрим, как происходит деплоймент (развёртывание на сервере) БД MongoDB.