В данной статье мы рассмотрим резервирование базы данных (далее – БД) в 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.