Использование обновления для пивоварения Mongo update с 3,4 до 4,0 ошибок: файлы данных должны быть полностью обновлены до версии 3.6, прежде чем пытаться выполнить обновление до версии 4.0 - программирование
Подтвердить что ты не робот

Использование обновления для пивоварения Mongo update с 3,4 до 4,0 ошибок: файлы данных должны быть полностью обновлены до версии 3.6, прежде чем пытаться выполнить обновление до версии 4.0

mongod

Я получил следующую ошибку

** ВАЖНО: ПРОБЛЕМА ОБНОВЛЕНИЯ: файлы данных должны быть полностью обновлены до версии 3.6 перед попыткой обновления до 4.0; см. http://dochub.mongodb.org/core/4.0-upgrade-fcv для получения дополнительной информации.

Но если я использую

brew services start mongodb

тогда сервер монго может запуститься.

Чтобы исправить ошибку Mongod

Я нашел похожую ошибку

Ошибка при обновлении Mongodb с 3,2 до 3,6

Так что я понизил до mongodb 3.6, и запустить

db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

и затем переустановите mongodb 4.0, у меня все еще та же ошибка при запуске

mongodb

Я все еще должен использовать

brew services start mongodb

начать mongodb

В командной строке я бегу

> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
{ "featureCompatibilityVersion" : { "version" : "3.6" }, "ok" : 1 }
> 

Это говорит, что FeatureCompatibilityVersion составляет 3,6

Что еще мне нужно сделать, чтобы удовлетворить "Файлы данных должны быть полностью обновлены до версии 3.6"?

Спасибо!

4b9b3361

Ответ 1

Мне нужно понизить MongoDB до 3.4. Убери все версии. Затем обновите до 3.6 и 4.0 шаг за шагом.

Прежде всего, сделайте резервную копию вашего /data/db, на всякий случай.

Следующие шаги основаны на моем опыте, я использовал brew для установки/удаления mongodb.

Я следовал инструкциям из этой ветки, но запустил следующие шаги на iMac.

Ошибка при обновлении Mongodb с 3,2 до 3,6

Удалите ваш текущий mongodb

brew uninstall mongodb

Установите версию mongodb 3.4

brew install [email protected]

Запустите версию mongod 3.4 (при установке старой версии, как указано выше, вам нужен полный путь для ее запуска.)

/usr/local/opt/[email protected]/bin/mongod

Запустите версию Монго 3.4

/usr/local/opt/[email protected]/bin/mongo

Запустите важную команду

> db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )

Уволиться

>quit();

Прекратить mongod

Find PID of mongod process using $ top

Kill the process by $ kill <PID> (the Mongo docs have more info on this)

Удалите mongodb 3.4

brew uninstall [email protected]

Повторите вышеуказанные шаги для 3.6

Установите версию mongodb 3.6

brew install [email protected]

Запустите версию Mongod 3.6

/usr/local/opt/[email protected]/bin/mongod

Запустите версию Монго 3.6

/usr/local/opt/[email protected]/bin/mongo

Запустите важную команду

> db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

...

Наконец, после удаления 3.6 вы можете установить самую последнюю версию 4.x, вам не нужно указывать @4.x и т.д., Просто

Установите самую последнюю версию

brew install mongodb

Ответ 2

Я бы лучше сделал это через процедуры mongodump/mongorestore.

Ответ 3

спасибо @searain, эта процедура работала и на Ubuntu, мне просто нужно было адаптировать команды для тех, кому это интересно:

Команды для Ubuntu 16.04

Резервное копирование базы данных и mongod.conf

sudo cp -rp /var/lib/mongodb/ mongobackup/

sudo cp -p /etc/mongod.conf mongobackup/

Удалить v4

sudo service mongod stop

sudo apt purge mongodb-org*

Установите v3.4

Скопируйте команды установки из [email protected]

Список доступных версий

sudo apt list -a mongodb-org

Установить конкретную версию

sudo apt install -y mongodb-org=3.4.22 mongodb-org-server=3.4.22 mongodb-org-shell=3.4.22 mongodb-org-mongos=3.4.22 mongodb-org-tools=3.4.22 --allow-downgrades

Запустить сервис

sudo systemctl enable mongod

sudo service mongod start

Войдите в систему как администратор

mongo -u "dba" -p "..." --authenticationDatabase "admin"

Команда выдачи

Подробнее о setFeatureCompatibilityVersion читайте в документах.

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )

Если статус не ok, но not authorized, попробуйте:

db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

Удалить v3.4

sudo service mongod stop

sudo apt purge mongodb-org*

Установите v3.6

Скопируйте команды установки из [email protected]

Список доступных версий

sudo apt list -a mongodb-org

Установить конкретную версию

sudo apt install -y mongodb-org=3.6.14 mongodb-org-server=3.6.14 mongodb-org-shell=3.6.14 mongodb-org-mongos=3.6.14 mongodb-org-tools=3.6.14

Начать обслуживание

sudo systemctl enable mongod

sudo service mongod start

Войдите в систему как администратор

mongo -u "dba" -p "..." --authenticationDatabase "admin"

Команда выдачи

db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

Удалить v3.6

sudo service mongod stop

sudo apt purge mongodb-org*

Установить v4

sudo apt install -y mongodb-org

Проверьте конфигурацию

Во время этого процесса mongod.conf мог быть потерян. Убедитесь, что авторизация включена:

sudo vi /etc/mongod.conf

Нужды:

security:
  authorization: enabled

Запустить службу

sudo systemctl enable mongod

sudo service mongod start