Всем доброго времени суток!
Не так давно пересобрал 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
Вот и все (:
Автор: daruwanov