MongoDB export — утилиты mongoexport и mongodump


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



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



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


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

apt-get install mongodb



Имя сервиса в системе — mongodb. Проверим статус выполнив systemctl status mongodb

утилиты mongoexport и mongodump


Заходим в оболочку 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" 
}


Информация снов в базе, индекс при этом равен двум. Это то значение, которое установили в JSON файле перед его загрузкой.



MongoDB export и утилита mongodump


Инструменты mongodump / mongorestore для сохранения базы в файл и загрузки из него соответственно более совершенны. Они работают с 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 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



На выходе имеем файл firstone.bson

~/dump# ls -la dump/firstdb/firstone.*

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



Снова для проверки удаляем тестовую базу

mongo

MongoDB shell version: 2.6.10
connecting to: test


use firstdb

switched to db 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

switched to db firstdb

db.firstone.find()

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

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


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


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

Сказать спасибо