2015-01-13 2 views
4

Мне интересно, как я могу создать mongodump/mongorestore без создания резервной копии, восстановления индексов?Создать резервное копирование/восстановление mongo без индексов

и как инкрементно восстанавливать mongo db без восстановления индексов?

+0

Какова ваша цель при восстановлении без индексов? Кроме того, этот вопрос принадлежит DBA StackExchange, но я предполагаю, что он будет перенесен :). – Stennie

+0

В настоящее время я работаю над проектом, в котором развертываются 3 версии, но не менее 60% индексов установлены неправильно, поэтому мы хотим переиндексировать базу данных, а также хотим перенести монго с Solaris на серверы на базе Linux и в настоящее время текущий пересмотр индекса занимает много времени, и с тех пор они переделали их, им не нужно! – maumercado

ответ

10

Утилита mongodump создает двоичный экспорт данных из MongoDB и сохраняет определения индексов и параметры сбора в metadata.json, связанные с каждой сбрасываемой базой данных. Данные индекса не занимают сколько-нибудь значительного места в вашей резервной копии и обычно будут использоваться mongorestore для повторной проверки индексов после того, как каждая информация для каждой коллекции будет импортирована из дампа.

Если вы хотите избежать создания каких-либо новых вторичных индексов после завершения восстановления, mongorestore имеет --noIndexRestore option.

Примечание: требуется default _id index и всегда создается.

инкрементировать восстановление mongo db без восстановления индексов?

Опция для --noIndexRestore применяется независимо от того, восстанавливается ли вы в существующей базе данных. Если вы введете mongorestore в существующую базу данных с индексами, используя опцию --noIndexRestore, новые индексы не будут добавлены, но существующие индексы будут по-прежнему обновляться по мере ввода данных.

Инкрементное резервное копирование & Восстановление действительно отдельный вопрос, если у вас нет упрощенного варианта использования: вставка новых документов из последовательных дампов.

Как и в MongoDB 2.6, утилита mongorestore вставляет только документы (т. Е. Нет обновлений/обновлений). Вы можете использовать mongorestore для вставки нескольких дампов в существующую коллекцию, но любые документы, вызывающие повторяющиеся исключения ключей (например, _id), будут пропущены.

Обычно я ожидал, что инкрементное резервное копирование & приведет к делению изменений (все вставки/обновления/удаления с предыдущей резервной копии) и возможность повторного применения их к более старой копии одних и тех же данных. Чтобы получить инкрементное резервное копирование, вам нужна история изменений данных, которые в случае MongoDB будут предоставлены набором реплик operation log (oplog).

+0

Для архивных случаев использования, когда вы можете добавить новые документы/обновления из дампов, но никогда не удаляйте данные, вам может показаться полезным смотреть/повышать [TOOLS-121: Добавить вариант upsert в MongoRestore] (https: //jira.mongodb .org/browse/TOOLS-121) в трекером MongoDB. Upserts через 'mongorestore' определенно являются более специализированным вариантом использования, а затем выполняют правильное инкрементное резервное копирование/восстановление и могут привести к расхождению с исходной базой данных. – Stennie

+1

Спасибо @Stennie! – maumercado

Смежные вопросы