Использование обновления для пивоварения 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"?
Спасибо!
Ответы
Ответ 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