Tar gzip mongo dump, как MySQL

Есть ли в любом случае tar ggip mongo, как вы можете делать с дампами MySQL?

Например, для mysqldumps вы можете написать команду как таковую:

mysqldump -u <username> --password=<password> --all-databases | gzip > all-databases.`date +%F`.gz

Есть ли эквивалентный способ сделать то же самое для дампов mongo?

Для mongo dumps я запускаю эту команду:

mongodump --host localhost --out /backup

Есть ли способ просто подключить это к gzip? Я попытался, но это не сработало.

Любые идеи?

Ответы

Ответ 1

В версии 3.2 представлена ​​опция gzip и archive:

mongodump --db <yourdb> --gzip --archive=/path/to/archive

Затем вы можете восстановить с помощью:

mongorestore --gzip --archive=/path/to/archive

Ответ 2

Обновление (июль 2015 г.): TOOLS-675 теперь отмечен как полный, что позволит сбрасывать архив в формате 3.2 и gzip будет одним из вариантов в 3.2 версии инструментов mongodump/mongorestore. Я обновлю соответствующие документы, когда они будут жить для 3.2

Оригинальный ответ (3.0 и ниже):

Вы можете сделать это с помощью одного набора, выведя mongodump в stdout, а затем передав его в программу сжатия (gzip, bzip2), но вы получите только данные (без информации об индексах), и вы не можете сделать это для полная база данных (несколько коллекций). Соответствующий запрос функции для этой функции SERVER-5190 для целей поиска/просмотра.

Ниже приведен пример быстрого выполнения того, что возможно, используя bzip2 в этом примере:

./mongo
MongoDB shell version: 2.6.1
connecting to: test
> db.foo.find()
{ "_id" : ObjectId("53ad8a3eb74b5ae2ff0ec93a"), "a" : 1 }
{ "_id" : ObjectId("53ad8ba445be9c4f7bd018b4"), "a" : 2 }
{ "_id" : ObjectId("53ad8ba645be9c4f7bd018b5"), "a" : 3 }
{ "_id" : ObjectId("53ad8ba845be9c4f7bd018b6"), "a" : 4 }
{ "_id" : ObjectId("53ad8baa45be9c4f7bd018b7"), "a" : 5 }
> 
bye
$ ./mongodump -d test -c foo -o - | bzip2 - > foo.bson.bz2
connected to: 127.0.0.1
$ bunzip2 foo.bson.bz2 
$ ./bsondump foo.bson
{ "_id" : ObjectId( "53ad8a3eb74b5ae2ff0ec93a" ), "a" : 1 }
{ "_id" : ObjectId( "53ad8ba445be9c4f7bd018b4" ), "a" : 2 }
{ "_id" : ObjectId( "53ad8ba645be9c4f7bd018b5" ), "a" : 3 }
{ "_id" : ObjectId( "53ad8ba845be9c4f7bd018b6" ), "a" : 4 }
{ "_id" : ObjectId( "53ad8baa45be9c4f7bd018b7" ), "a" : 5 }
5 objects found

Сравните это с прямым mongodump (вы получите тот же foo.bson, но дополнительный foo.metadata.json, описывающий индексы, не включен выше):

$ ./mongodump -d test -c foo -o .
connected to: 127.0.0.1
2014-06-27T16:24:20.802+0100 DATABASE: test  to     ./test
2014-06-27T16:24:20.802+0100    test.foo to ./test/foo.bson
2014-06-27T16:24:20.802+0100         5 documents
2014-06-27T16:24:20.802+0100    Metadata for test.foo to ./test/foo.metadata.json
$ ./bsondump test/foo.bson 
{ "_id" : ObjectId( "53ad8a3eb74b5ae2ff0ec93a" ), "a" : 1 }
{ "_id" : ObjectId( "53ad8ba445be9c4f7bd018b4" ), "a" : 2 }
{ "_id" : ObjectId( "53ad8ba645be9c4f7bd018b5" ), "a" : 3 }
{ "_id" : ObjectId( "53ad8ba845be9c4f7bd018b6" ), "a" : 4 }
{ "_id" : ObjectId( "53ad8baa45be9c4f7bd018b7" ), "a" : 5 }
5 objects found