Ответ 1
В версии 3.2 представлена опция gzip
и archive
:
mongodump --db <yourdb> --gzip --archive=/path/to/archive
Затем вы можете восстановить с помощью:
mongorestore --gzip --archive=/path/to/archive
Есть ли в любом случае 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? Я попытался, но это не сработало.
Любые идеи?
В версии 3.2 представлена опция gzip
и archive
:
mongodump --db <yourdb> --gzip --archive=/path/to/archive
Затем вы можете восстановить с помощью:
mongorestore --gzip --archive=/path/to/archive
Обновление (июль 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