Что такое формат архива mongodb? - PullRequest
0 голосов
/ 09 июня 2019

Я создал резервные копии некоторых mongoDB с помощью опции их архивирования, но я не могу просто распаковать их.Когда я делаю несколько шагов по распаковке данных, создается впечатление, что архив представляет собой целую БД в одном большом файле.Я хотел получить файлы для отдельных коллекций.Есть ли способ сделать это?

$ tar -xvf valk.archive
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
$ file valk.archive
valk.archive: gzip compressed data, original size 13953183
$ gunzip valk.archive
gunzip: valk.archive: unknown suffix -- ignored
$ unzip valk.archive
Archive:  valk.archive
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of valk.archive or
        valk.archive.zip, and cannot find valk.archive.ZIP, period.
$ mv valk.zip valk.gz
$ gunzip valk.gz
$ open .
$ tar -xvf valk
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
$ head valk
TemplateDatametadata�{"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"valk.TemplateData"}],"uuid":"f52402b5aba24856b072d57cc3e46a72"}size-dbvalkcollectioMetricsmetadata�{"options":{"capped":true,"size":10485760,"max":1000000},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"valk.Metrics"},{"v":2,"key":{"openid":1},"name":"openid_1","ns":"valk.Metrics"}],"uuid":"43d92ff01815432c95dac5a2e05a64c0"}size�dbvalkcollection
AppConfigmetadata�{"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"valk.AppConfig"}],"uuid":"df633b0a43184de38e8b8ea7489cda3e"}size�dbvalkcollecMinibotZonesmetadata�{"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"valk.MinibotZones"}],"uuid":"095bbac0d17640be9e27dffe681b7d83"}size�dbvalkcollection    ChatLogsmetadataQ{"options":{"capped":true,"size":104857600,"max":10000000},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"valk.ChatLogs"},{"v":2,"key":{"openid":1,"createdAt":1},"name":"openid_1_createdAt_1","ns":"valk.ChatLogs"},{"v":2,"key":{"createdAt":1},"name":"createdAt_1","ns":"valk.ChatLogs"}],"uuid":"70586c82b3ae42cf8d9c47ad339ea55b"}size�dbvalkcollection

1 Ответ

2 голосов
/ 10 июня 2019

Формат архива mongodump является специальным форматом; вам нужно использовать mongorestore --archive с любыми другими подходящими опциями.

Например, вы можете использовать опцию --nsInclude (mongorestore 3.4+) для выборочного восстановления нескольких коллекций по пространству имен.

Для получения дополнительной информации о формате архива MongoDB (и почему tar не подходит), смотрите: Архивирование и сжатие в MongoDB Tools . Суть этого:

Форматы архивов общего назначения, такие как tar, поддерживают только непрерывную упаковку файлов в архиве. Использование этих форматов архивов для mongodump и mongorestore приведет к недопустимому снижению производительности, поскольку данные из всех коллекций должны будут записываться и считываться по порядку. Чтобы поддерживать одновременное поведение этих инструментов, мы разработали специальный формат архива, который поддерживает несмежные записи файлов. Новая функция архивирования обеспечивает значительное повышение эффективности операций резервного копирования и восстановления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...