Проблема с mongorestore между mongodb2.4 и mongodb2.6

от автора

Всем доброго времени суток!

Не так давно пересобрал world в gentoo, что повлекло обновление mongoDB. Запустил консольку, выполнил привычные mongodump и mongorestore. Открываю свое приложение и вижу кучу ошибок о том, что часть коллекций не существуют. Перезапустил mongodump, mongorestore, проверяю список колекций и вижу, что из 50 коллекций существует только ~30.

Начал разбираться и пришел к выводу, что проблема таилась в следующем: на сервере установлена mongodb2.4, а у меня установлена mongodb2.6. Первой мыслью было: быстро пересобрать у себя монгу с версией 2.4 и радоваться жизни. Это, как говорится, не кошерно. Обратился за помощью к гуглу, но выяснить удалось лишь то, что в mongo2.6 изменили логику работы команды создания коллекции. Теперь нельзя использовать «size=null» and «max=null». Но решения этой проблемы не было предоставлено.

И вот сегодня, благодаря подсказке Хабраюзера kuzma решение было найдено. Все получилось и заработало. Поэтому решил поделиться им со всеми, возможно оно будет полезно еще кому-нибудь.

Если база данных how-it-will-be-called-locally (смотреть ниже) еще не существует то выполнить следующую команду:

mongo --eval "db.copyDatabase('remote-db-name','how-it-will-be-called-locally','server-address','user','password')" 

Если база данных уже существует, она должна быть удалена перед созданием

mongo how-it-will-be-called-locally  --eval "db.dropDatabase(); db.copyDatabase('remote-db-name','how-it-will-be-called-locally', 'server-address','user','password')" 

Выше приведенный код скопирует удаленную базу данных remote-db-name и создаст ее копию локально с именем how-it-will-be-called-locally

Вот и все (:

ссылка на оригинал статьи http://habrahabr.ru/post/224343/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *