Проблема с 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

    Вот и все.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 1

      0
      А что мешает делать mongoexport/mongoimport?

      Only users with full accounts can post comments. Log in, please.