2015-12-17 7 views
2

Сегодня я делаю mongodump для резервного копирования db размером около 2 ГБ в размере файла, но у меня только около 600 мб в сбрасываемых файлах. На операции mongodump нет сообщений об ошибках, и позже я узнал, что некоторые документы отсутствуют. И если не из-за огромной разницы в размере файла, который я бы не знал, дамп не удался.повреждение файла mongodump на виртуальной машине

Есть ли стандартный способ проверить, правильно ли сброшены файлы?

p.s: Кажется, что я могу использовать db.stats(), чтобы проверить исходную информацию db, а затем morgorestore dumped db и сделать db.stats(), чтобы сравнить общий размер файла. И два размера файлов будут одинаковыми (я прав)?

p.s: Также, если моя виртуальная машина имеет память 500 мб, может ли она сэкономить файл 2 ГБ?

+0

Как вы говорите он поврежден? Дампы обычно меньше, чем БД на диске, поскольку они не содержат индексных данных, например, которые могут быть просто регенерированы. – qqilihq

+0

Я сделал mongorestore на своей локальной машине и увидел недостающие документы. (промахи вроде 60% ..). Память VM составляет 500 МБ и выгружается bson для этой коллекции только 600 МБ .. –

ответ

2

У вас есть база данных с размером файла 2 ГБ, но MongoDB выделяет файлы данных в кусках (например, 2 ГБ) и может не заполнять их в течение некоторого времени. У вас может быть только 600 МБ данных в вашей базе данных (см. db.stats() для некоторых рекомендаций). Следует также отметить, что индексы не будут выгружаться, а только их определения для восстановления при восстановлении, поэтому их удаление повлияет на размер вашего дампа. Поскольку у вас нет ошибок, я подозреваю, что у вас есть совершенно допустимый дамп здесь, что отражает объем данных, фактически присутствующих в ваших 2GB файлах.

Если у моей виртуальной машины есть память 500 мб, может ли она сэкономить 2 ГБ файл?

Да, хотя это будет быстрее если все данные могут поместиться в памяти

+0

, но есть ли ограничение на размер файла, который может сбрасывать память 500 МБ? –

+0

нет, ему просто придется листать в памяти с диска больше во время сбрасывания, потому что данные не могут вписаться в память - нет предела –

+0

Я вижу. В основном я просто ssh внутри экземпляра и делаю mongodump независимо от того, есть ли соединения db или нет. (потому что мы еще не в производстве, но не знаем, будет ли какая-либо разница при сбросе на производство). Кроме того, я не перезагружался до того, как я mongodump, поэтому свободная память может быть уже очень низкой. Наверное, я вернусь к этому, возможно, в следующем месяце, когда я снова сделаю резервную копию! –