Обновление 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, если он у вас был.

Все. Приятной работы.
Лайкайте, ретвитьте и задавайте вопросы в комментариях.

Координационный
совет SPECIA
Санкт-Петербург,
8-я Красноармейская ул., д.10