Rancher によってオーケストレーションされたコンテナー化環境でMongoDBレプリカセットを実行します。最新の更新をロールアウトした後、MongoDBが3.6.xから4.0.xにアップグレードされました(最新)。
いいえ アップグレードパス が続いているため、データベースストレージを保持しているボリュームをバインドしようとすると、サービスは開始できず、次の例外で終了します。
STORAGE [initandlisten] exception in initAndListen: MustDowngrade: Collection does not have UUID in KVCatalog. Collection: admin.system.version, terminating
--repair
オプションを指定してmongod
を起動しようとしても、同じ結果が得られます。また、コンテナーをMongoDB 3.6.16にロールバックしようとしましたが、ジャーナルバージョンは互換性がありません。
ボリュームのスナップショットがないため、データを復元することはできません(これは本番環境ではありません)。オンラインで見つけた唯一の solution はmongodump
とmongorestore
を活用することを示唆しており、データストレージが接続された実行中のデータベースを必要とするため、該当しません。
私はアイデアが不足しています、これを修正する方法についてのアドバイスはありますか?
約3時間、あなたが説明している内容を正確に修正しようとした後、これが私がとったステップです。ここでは、3.6にダウングレードするときにデータを保持する方法と、保持されたデータで4.0を更新する方法を示します。
これがMacユーザーに発生する理由は、brewを使用しているユーザーがbrewから直接Mongodbをダウンロードできなくなったためです。次に、brewから新しいコミュニティエディションをダウンロードする傾向があります。brewは、ディレクトリにまだ存在する古いバージョンの3.6 db
フォルダと競合します。代わりに、実際のmongodb Webサイトからダウンロードする必要があります。
https://www.mongodb.com/download-center/community
ここであなたがしたいことは、すべてを手動でダウンロードすることです。ここでこれらの指示に従いますが、これは3.6バージョンで行います。
https://medium.com/@saurabhkumar_4718/install-mongodb-without-homebrew-on-mac-os-2a98b68ab09c
注:.bash_profileをコピーするときは、export
コマンドが
3.6を手動で正常にインストールしたら、mongodump
を安全に使用できます。または、本当に保存する必要があるすべてのデータについて、すべてのmongoデータをmongoexport
を使用してjsonにエクスポートできます。
その後、以前に3.6で行ったのとまったく同じ手順に従って、4.0を手動で再インストールできます。
これは「mongorestore」を実行しなくても機能しました。「db」フォルダーがそのままにされ、すべてのデータがそこにありましたが、データを復元するには追加の手順が必要になる場合があります。最悪の場合、書き換えが必要な.jsonsがあります。 「mongo --version」も正しいバージョンを表示しました:)それが役に立てば幸い
Mac OSのHomebrewでMongoDBを3.6から4.2に更新していたところ、このような状況に遭遇しました。
式mongodb
がhomebrew-coreから削除されたため、mongodbのチームは カスタムHomebrewタップ を維持しました。
次のステップは、Homebrewを使用してMongoDBを3.6から4.2にアップグレードするための私のソリューションです。
1)Homebrewから古いバージョンのmongodbをアンインストールします。
# If you run mongodb in background service, stop it first.
brew services stop mongodb
# If you have multiple version of mongodb, you might need to add `--force` option for deleting all of them at once.
brew uninstall mongodb
2)カスタムの自作タップから新しいmongodbをインストールする
brew tap mongodb/brew
brew install [email protected]
3)[email protected]をパスに追加します
echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
4)端末を再起動し、mongod
を実行します
5)別のタブまたはターミナルウィンドウを開いてmongodump
を実行します
6)終了mongod
7)[email protected]をアンインストールし、mongodb-communityを再インストールします
brew uninstall [email protected]
brew install mongodb-community
8)古いmongoデータ構造を持つ古いデータを削除する
rm -rf /data/db/*
9)mongod
を実行します
10)実行する別のタブまたはターミナルウィンドウを開きますmongorestore /dump
mongorestore
が完了すると、mongod
は終了します。そして、mongodbをバックグラウンドサービスとして実行するか、単にmongod
を再度実行することができます。 mongo
またはRobo 3T(以前のRobomongo)を使用してMongoDBを開くと、通常どおりデータが良好であることがわかります。
それが役に立てば幸い。