Обновление MongoDB 2.4 на 2.6
Версия Монго 2.6 имеет ряд отличий от 2.4, в частности, изменился механизм авторизации.
В этой статье я рассматриваю обновление standalone Mongo с ветки 2.4 на 2.6. Если у вас более старая версия, обновитесь последовательно до 2.4, а уже потом до 2.6.
Не забывайте сделать бэкап баз данных, если это возможно. У нас, например, это сделать было весьма затруднительно - общий объем БД более 100 гигабайт. Однако, настоятельно рекомендую забэкапить если не все базы, то, как минимум, базу admin.
Обновите клиентскую библиотеку (клиента)
Мы используем PHP и MongoDB, поэтому перед обновлением я обновил клиент PHP-mongo до последней стабильной версии 1.5.1. Нормально библиотека умеет работать с MongoDB 2.6, начиная с 1.5.0.
Кроме того, метод инициализации new Mongo() стал deprecated, используйте вместо него new MongoClient().
Подготовка и обработка баз
Обновление происходит не быстро (при наших-то объемах 200+ миллионов записей), но очень просто. Запустите в консоли
mongo
use admin db.upgradeCheckAllDBs()
После обновления баз переходим к авторизации.
Обновление базы авторизации admin
Для обновления нужно выполнить команду authSchemaUpgrade
mongo
res = db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 }); print(tojson(res));
Конфиг
Не забудьте в конфиге mongodb.conf закомментировать auth = true, если он у вас был.
Все. Приятной работы.
Лайкайте, ретвитьте и задавайте вопросы в комментариях.