mongodb dump

MongoDB export — процесс выгрузки информации из базы в файл с возможность повторной загрузки из него. На том же сервере или на любом другом. Для этого могут использоваться инструменты mongoexport (mongoimport) и mongodump (mongorestore).

Последние значительно лучше поскольку сохраняют данные в формате BSON, именно с ним работает MongoDB. mongoimport / mongoexport сохраняют в JSON — он практически идентичен, но не полностью из-за чего возможны некоторые непредвиденные ситуации. ниже рассмотрены все инструментами для работы с дампами.

 

 

mongodb export: инструменты для создания дампа

Установим пакет на сервер с Ubuntu 16, затем создадим тестовую базу, collection и на их примере рассмотрим способы создания дампа.

 

apt-get isntall mongodb

 

Заходим в оболочку MongoDB

mongo

MongoDB shell version: 2.6.10
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type «help».
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user

 

 

show dbs

admin (empty)
local 0.078GB

 

По умолчнию есть 2 базы, создаем новую firstdb

 

use firstdb

switched to db firstdb

 

Увидеть ее можно будет только после добавления Collection

show dbs

admin (empty)
local 0.078GB

 

Это аналог таблицы в реляционных базах данных

db.createCollection(«firstone»)

{ «ok» : 1 }

 

show dbs

admin (empty)
firstdb 0.078GB
local 0.078GB

 

Теперь нужно поместить в базу какие-то данные. Все они создаются в виде JS объектов, которые зтем сохраняются в Collection выбранной базы

someobject = {value: «test», index: «1»};

{ «value» : «test», «index» : «1» }

 

Сохранение выполняется так

db.firstone.save(someobject)

WriteResult({ «nInserted» : 1 })

 

Т.е. db.COLLECTION_NAME.save(RECORD_NAME), важно при этом использовать именно ту базу, в которой сохраняются данные

 

Выходим из шел MongoDB CTRL + C

bye

 

 

Утилиты mongoexport и mongoimport

Отличительная особенность — данные сохраняются в формате JSON

 

mongoexport -d firstdb -c firstone -o firstone.json

connected to: 127.0.0.1
exported 1 records

 

Так выглядит результат:

mcedit firstone.json

{ «_id» : { «$oid» : «5b0959d1d83dd6a998d72750» }, «value» : «test», «index» : «1» }

Поменяем индекс на 2 чтобы отследить, что измененный дамп успешно загрузится в дальнейшем

 

 

Теперь снова зайдем в шел и удалим базу

mongo

db.dropDatabase()

{ «dropped» : «firstdb», «ok» : 1 }

 

Запрашиваем содержимое Collection firstone

db.firstone.find()

Команда вернет пустой результат

 

Снова создаем базу и Collection

use firstdb

db.createCollection(«firstone»)

{ «ok» : 1 }

 

Покидаем шел CTRL + C

bye

 

 

Теперь в созданную структуру можно загрузить данные из файла

mongoimport -d firstdb -c firstone firstone.json

connected to: 127.0.0.1
2018-05-26T13:07:19.760+0000 imported 1 objects

 

 

mongo

db.firstone.find()

{ «_id» : ObjectId(«5b0959d1d83dd6a998d72750»), «value» : «test», «index» : «2» }

 

Информация снов в базе, индекс при этом равен двум

 

MongoDB export и утилита mongodump

Эти инструменты более совершенны, поскольку работают с BSON. Они наиболее деликатно экспортируют и импортируют данные.

Создаем отдельный каталог и переходим в него

mkdir dump && cd dump/

 

При выгрузке дампа указывается имя базы

mongodump —db firstdb

connected to: 127.0.0.1
2018-05-26T13:09:10.012+0000 DATABASE: firstdb to dump/firstdb
2018-05-26T13:09:10.013+0000 firstdb.system.indexes to dump/firstdb/system.indexes.bson
2018-05-26T13:09:10.013+0000 1 documents
2018-05-26T13:09:10.013+0000 firstdb.firstone to dump/firstdb/firstone.bson
2018-05-26T13:09:10.014+0000 1 documents
2018-05-26T13:09:10.014+0000 Metadata for firstdb.firstone to dump/firstdb/firstone.metadata.json

 

На выходе имеем 20 файлов, основной из них firstone.bson

~/dump# ls -la dump/firstdb/

total 20
drwxr-xr-x 2 root root 4096 май 26 13:09 .
drwxr-xr-x 3 root root 4096 май 26 13:09 ..
-rw-r—r— 1 root root 51 май 26 13:09 firstone.bson
-rw-r—r— 1 root root 98 май 26 13:09 firstone.metadata.json
-rw-r—r— 1 root root 71 май 26 13:09 system.indexes.bson

 

Снова удаляем базу

mongo

MongoDB shell version: 2.6.10
connecting to: test

 

use firstdb

switched to db firstdb

 

db.dropDatabase()

{ «dropped» : «firstdb», «ok» : 1 }

 

^C

bye

 

 

Находясь в каталоге с дампом запускаем загрузку mongorestore

mongorestore

connected to: 127.0.0.1
2018-05-26T13:11:40.961+0000 dump/firstdb/firstone.bson
2018-05-26T13:11:40.961+0000 going into namespace [firstdb.firstone]
1 objects found
2018-05-26T13:11:40.962+0000 Creating index: { key: { _id: 1 }, name: «_id_», ns: «firstdb.firstone» }

 

mongo

MongoDB shell version: 2.6.10
connecting to: test

 

use firstdb

switched to db firstdb

 

db.firstone.find()

{ «_id» : ObjectId(«5b0959d1d83dd6a998d72750»), «value» : «test», «index» : «2» }

 

Восстановление выполнено успешно, для mongorestore не понадобилось воссоздавать структуру базы. Этот инструмент использовать для экспортирования лучше всего.

 

Читайте статью про Collections и базы данных в MongoDB