このドキュメントの内容をよく読み、前提条件を十分に確認してから、 MongoDB 8.0にアップグレードしてください。
MongoDB 8.0 では、 MongoDB 7.0 からのパフォーマンスの大幅な向上が導入されています。これには次のようなものがありますが、これらに限定されません。
読み取りスループットが最大 36% 向上 します。
一般的なウェブ アプリケーションのパフォーマンスが最大 32% 向上。
レプリケーション中の同時書込みを最大 20% まで高速化します。
注意
パフォーマンス向上の量は、ワークロードとデータベースインスタンスの構成によって異なる場合があります。
詳しくは、「 のパフォーマンス向上 」を参照してください。
mongod
次の手順では、レプリカセットメンバーである をバージョン7.0 から8.0 にアップグレードする手順について説明します。
8.0へのアップグレードに関するガイダンスが必要な場合は、 MongoDB プロフェッショナル サービスがメジャー バージョン アップグレード サポートを提供して、MongoDB アプリケーションを中断することなくスムーズに移行できるようにします。
アップグレードの推奨事項とチェックリスト
アップグレードの際には、次の点を考慮してください。
アップグレード バージョン パス
既存の MongoDB デプロイを8.0にアップグレードするには、 7.0シリーズのリリースを実行している必要があります。
7.0シリーズより前のバージョンの場合、最終的に7.0シリーズになるまで、メジャー リリースを順次アップグレードする必要があります。 たとえば、6.0 シリーズを実行している場合、 にアップグレードする7.0 前に 、 まず にアップグレード8 する必要があります。0 。
ドライバーの互換性を確認
MongoDB をアップグレードする前に、MongoDB 8.0の互換性があるドライバーを使用していることを確認してください。 MongoDB 8.0との互換性を確認するには、特定のドライバーのドライバー のドキュメントを参照してください。
互換性のないドライバーでアップグレードを実行した場合、予期しないまたは未定義の動作が発生する可能性があります。
事前対策
アップグレードを開始する前に、ドキュメント「 MongoDB 8.0での互換性の変更 」で、ご利用のアプリケーションとデプロイが MongoDB 8.0と互換性があることを確認してください。 アップグレードを開始する前に、お使いの環境の互換性の問題を解決してください。
MongoDB をアップグレードする際は、アップグレードを本番環境にデプロイする前に、必ずアプリケーションをステージング環境でテストします。
ダウングレードの検討事項
配置のバイナリ バージョンをダウングレードするには、サポートによる支援が必要です。
詳しくは、「 8.0から7.0へのダウングレード 」を参照してください。
前提条件
全ノードのバージョン
すべてのレプリカセットノードはバージョン7.0を実行中中である必要があります。 レプリカセットを6.0シリーズ以前からアップグレードするには、初めにレプリカセットのすべてのノードを最新の7.0シリーズ リリースにアップグレードしてから 、次にMongoDB 7.0から8にアップグレードする手順に従います。 0 。
機能の互換性バージョン
7.0レプリカセットでは、 featureCompatibilityVersion
を"7.0"
に設定する必要があります。
レプリカセットのすべてのノード featureCompatibilityVersion
が "7.0"
に設定されていることを確認するには、各レプリカセット ノードに接続し、featureCompatibilityVersion
を確認します。
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
すべてのノードは "featureCompatibilityVersion" : { "version" : "7.0" }
を含む結果を返す必要があります。
featureCompatibilityVersion
を設定または更新するには、プライマリで次のコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。
db.adminCommand( { setFeatureCompatibilityVersion: "7.0" , confirm: true } )
レプリカセット ノードの状態
replSetGetStatus
コマンドを発行して、レプリカセット ノードが ROLLBACK
または RECOVERING
状態になっていないことを確認します。
db.adminCommand( { replSetGetStatus: 1 } )
無効な system.buckets コレクションの削除
MongoDB8.0 にアップグレードする際に、時系列コレクションではないsystem.buckets
コレクションがある場合は、drop
rename
に応じて、アップグレードする前にそれらのコレクションを または8 する必要があります。0 パッチ リリース:
- MongoDB 8.0.5 以降
- アップグレードする前に、時系列コレクションではない
system.buckets
コレクションを削除する必要はありません。ただし、アップグレードが完了した後に、これらを削除するか、名前を変更する必要があります。 - MongoDB 8.0.4 以前
- アップグレードする前に、時系列コレクションではない
system.buckets
コレクションを削除するか、名前を変更する必要があります。すべてのsystem.buckets
コレクションは、 8.0.0-8.0.4 のバージョンにアップグレードする前に、有効な時系列オプションを構成する必要があります。
時系列コレクションではない system.buckets
コレクションがあるかどうかを判断するには、フィルタを指定した db.getCollectionInfos()
メソッドを使用します。
db.getCollectionInfos( { $and: [ { name: { $regex: /^system\.buckets/ } }, { 'options.timeseries': { $exists: false } } ] } )
ダウンロード8.0 バイナリ
パッケージ マネージャーの使用
MongoDB を MongoDB apt
、 yum
、 dnf
、またはzypper
リポジトリからインストールした場合、パッケージ マネージャーを使用して8.0にアップグレードする必要があります。
Linux システムの場合は、 8.0のインストール手順を参照してください。 新しいリリース用にリポジトリを追加して、実際にアップグレードを行う方法を解説しています。
手動
パッケージ マネージャーを使用して MongoDB をインストールしていない場合は、 MongoDB ダウンロード センターから MongoDB バイナリを手動でダウンロードできます。
詳しくは、 8.0インストール手順を参照してください。
アップグレード手順
MongoDB 7.0から8.0へのアップグレードは、「ローリング」アップグレードを利用することで、他のノードが利用可能である間に個別にアップグレードを行いダウンタイムを最小限に抑えることができます。
レプリカセットのセカンダリ ノードをアップグレードします。
レプリカセットのセカンダリノードを一度に 1 つずつアップグレードします。
7.0バイナリを8.0バイナリに置き換えます。
ノードを再起動します。
レプリカセットのプライマリを降格します。
mongosh
をプライマリに接続し、 rs.stepDown()
を使用してプライマリを降格し、新しいプライマリの選挙を強制します。
プライマリをアップグレードします。
rs.status()
でプライマリが降格し、別のノードが PRIMARY
状態になったことが示されたら、降格したプライマリをアップグレードします。
ステップダウンしたプライマリをシャットダウンし、
mongod
バイナリを8.0バイナリに置き換えます。ノードを再起動します。
下位互換性のない8.0機能を有効にします。
この時点で、 7.0と互換性のない8.0機能を使わずに8.0バイナリを実行できます。
これらの 8.0 機能を有効にするには、機能の互換性バージョン(FCV
)を 8.0 に設定します。7.0 以降にアップグレードする場合は、confirm
を true に設定する必要があります。
Tip
下位互換性のないこうした機能を有効にすると、ダウングレード前に保持されていた下位互換性のない機能をすべて削除する必要があるため、ダウングレード プロセスが複雑になる場合があります。
ダウングレードの可能性を最小限に抑えるには、アップグレード後、バーンイン期間中にこれらの機能を有効にせずにデプロイを運用することをお勧めします。ダウングレードの可能性を最小限に抑えられたと確信できたら、これらの機能を有効にします。
Tip
最初の同期が進行中でないことを確認します。最初の同期の進行中に setFeatureCompatibilityVersion
コマンドを実行すると、最初の同期がリスタートされます。
プライマリノードの admin
データベースでsetFeatureCompatibilityVersion
コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "8.0", confirm: true } )
featureCompatibilityVersion (FCV) : "8.0 " に設定します暗黙的に を実行して構成ドキュメントにreplSetReconfig
term
フィールドを追加し、新しい構成がレプリカセットノードの過半数に伝播するまでブロックします。
このコマンドは、内部システム コレクションへの書込みを実行する必要があります。何らかの理由でコマンドが正常に完了しない場合は、操作が冪等であるため、安全にコマンドを再試行できます。
追加のアップグレード手順
スタンドアロンをアップグレードするには、「スタンドアロンの8.0へのアップグレード 」を参照してください。
シャーディングされたクラスターをアップグレードするには、「シャーディングされたクラスターを8.0にアップグレードする 」を参照してください。