レプリカセットを 5.0 にアップグレード
このドキュメントの内容をよく読み、前提条件を十分に確認してから、MongoDB 5.0 にアップグレードしてください。
次の手順では、レプリカセット メンバーである mongod
をバージョン4.4から5.0にアップグレードする手順について説明します。
5.0へのアップグレードに関するガイダンスが必要な場合は、 MongoDB プロフェッショナル サービスがメジャー バージョン アップグレード サポートを提供して、MongoDB アプリケーションを中断することなくスムーズに移行できるようにします。
アップグレードの推奨事項とチェックリスト
アップグレードの際には、次の点を考慮してください。
アップグレード バージョン パス
既存の MongoDB デプロイを 5.0 にアップグレードするには、4.4 シリーズのリリースを実行している必要があります。
4.4シリーズより前のバージョンの場合、最終的に4.4シリーズになるまで、メジャー リリースを順次アップグレードする必要があります。 たとえば、 4.2シリーズを実行している場合、 まず4.4にアップグレード した 後に 、 5.0にアップグレードする必要があります。
ドライバーの互換性を確認
MongoDB をアップグレードする前に、MongoDB 5.0の互換性があるドライバーを使用していることを確認してください。 MongoDB 5.0との互換性を確認するには、特定のドライバーのドライバー のドキュメントを参照してください。
互換性のないドライバーでアップグレードを実行した場合、予期しないまたは未定義の動作が発生する可能性があります。
警告
v3.6 で非推奨になったレガシー命令コードをドライバーが使用している場合は、サポートされている命令コードを使用するバージョンにドライバーを更新してください。 レガシー命令コードを使用するドライバーはサポートされなくなりました。
事前対策
アップグレードを開始する前に、ドキュメント「MongoDB 5.0 での互換性の変更」で、ご利用のアプリケーションとデプロイが MongoDB 5.0 と互換性があることを確認してください。アップグレードを開始する前に、お使いの環境の互換性の問題を解決してください。
MongoDB をアップグレードする際は、アップグレードを本番環境にデプロイする前に、必ずアプリケーションをステージング環境でテストします。
ダウングレードの検討事項
5.0にアップグレードしてから、ダウングレードが必要な場合は、 4.4の最新パッチ リリースにダウングレードすることをお勧めします。
前提条件
レプリカセットをアップグレードする前に、「5.0 のパフォーマンスに関する考慮事項」で、5.0 にアップグレードした際に考えられるパフォーマンスへの影響について確認してください。
TTL 設定が有効か確認する
TTL 構成が有効であることを確認します。アップグレードする前に、expireAfterSeconds
が NaN
に設定されている TTL インデックスを削除または修正してください。MongoDB 5.0 以降では、expireAfterSeconds
を NaN
に設定すると、expireAfterSeconds
を 0
に設定するのと同じ効果があります。詳しくは、「NaN
に設定した場合の expireAfterSeconds
TTL の動作」を参照してください。
全ノードのバージョン
すべてのレプリカセットノードはバージョン 4.4 を実行している必要があります。レプリカセットを 4.2 シリーズ以前からアップグレードするには、最初にレプリカセットのすべてのノードを最新の 4.4 シリーズのリリースにアップグレードしてから、MongoDB 4.4 から 5.0 にアップグレードする手順に従います。
クリーンシャットダウンの確認
レプリカセットのノードをアップグレードする前に、そのノードが完全にシャットダウンされていることを確認してください。
機能の互換性バージョン
4.4 のレプリカセットでは、 featureCompatibilityVersion
を"4.4"
に設定する必要があります。
レプリカセットのすべてのノード featureCompatibilityVersion
が "4.4"
に設定されていることを確認するには、各レプリカセット ノードに接続し、featureCompatibilityVersion
を確認します。
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
すべてのノードは "featureCompatibilityVersion" : { "version" : "4.4" }
を含む結果を返す必要があります。
featureCompatibilityVersion
を設定または更新するには、プライマリで次のコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。
db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
レプリカセット ノードの状態
レプリカセット ノードがROLLBACK
またはRECOVERING
状態になっていないことを確認します。
5.0 バイナリのダウンロード
パッケージマネージャー経由
MongoDB を MongoDB の apt
、yum
、dnf
、zypper
のいずれかのリポジトリからインストールした場合、5.0 へのアップグレードにはパッケージ マネージャーを使用する必要があります。
Linux システムの場合は、5.0 のインストール手順をご利用ください。新しいリリース用にリポジトリを追加して、実際にアップグレードを行う方法を解説しています。
手動
パッケージ マネージャーを使用して MongoDB をインストールしていない場合は、 MongoDB ダウンロード センターから MongoDB バイナリを手動でダウンロードできます。
詳しくは、5.0 インストール手順を参照してください。
アップグレード プロセス
警告
MongoDB の既存のインスタンスを MongoDB 5.0.15にアップグレードする場合、 mongod.conf
ファイルにfork: true
が設定されていると、そのインスタンスの起動が失敗する可能性があります。
アップグレードの問題は、 .deb
または.rpm
インストール パッケージを使用するすべての MongoDB インスタンスに影響します。 tarball( .tgz
)リリースまたはその他のパッケージ タイプを使用するインストールは影響を受けません。 詳細については、 SERVER-74345 を参照してください。
fork: true
設定を削除するには、システム ターミナルから次のコマンドを実行します。
systemctl stop mongod.service sed -i.bak '/fork: true/d' /etc/mongod.conf systemctl start mongod.service
設定が削除された後に、2 番目のsystemctl
コマンドはアップグレードされたインスタンスを起動します。
MongoDB4.4 から 5.0 へのアップグレードは、「ローリング」アップグレードを利用することで、他のノードが利用可能である間に個別にアップグレードを行いダウンタイムを最小限に抑えることができます。
レプリカセットのプライマリを降格します。
mongosh
をプライマリに接続し、 rs.stepDown()
を使用してプライマリを降格し、新しいプライマリの選出を強制します。
プライマリをアップグレードします。
rs.status()
でプライマリが降格し、別のノードが PRIMARY
状態になったことが示されたら、降格したプライマリをアップグレードします。
ステップダウンしたプライマリノードをシャットダウンし、
mongod
バイナリを 5.0 バイナリに置き換えます。ノードを再起動します。
下位互換性のない 5.0 の機能の有効化
この時点で、4.4 と互換性のない 5.0 の機能を使わずに 5.0 のバイナリを実行できます。
これらの 5.0 の機能を有効にするには、機能の互換性バージョン(fCV
)を 5.0 に設定します。
Tip
下位互換性のないこうした機能を有効にすると、ダウングレード前に保持されていた下位互換性のない機能をすべて削除する必要があるため、ダウングレード プロセスが複雑になる場合があります。
ダウングレードの可能性を最小限に抑えるには、アップグレード後、バーンイン期間中にこれらの機能を有効にせずにデプロイを運用することをお勧めします。ダウングレードの可能性を最小限に抑えられたと確信できたら、これらの機能を有効にします。
Tip
最初の同期が進行中でないことを確認します。最初の同期の進行中に setFeatureCompatibilityVersion
コマンドを実行すると、最初の同期がリスタートされます。
プライマリノードの admin
データベースでsetFeatureCompatibilityVersion
コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
featureCompatibilityVersion (fCV) : "5.0" に設定します暗黙的にreplSetReconfig
を実行してterm
フィールドを構成ドキュメントに追加し、新しい構成がレプリカセット ノードの大部分に伝播するまでブロックします。
このコマンドは、内部システム コレクションへの書込みを実行する必要があります。何らかの理由でコマンドが正常に完了しない場合は、操作が冪等であるため、安全にコマンドを再試行できます。
追加のアップグレード手順
スタンドアロンをアップグレードするには、「スタンドアロンの 5.0 へのアップグレード」を参照してください。
シャーディングされたクラスターをアップグレードするには、「シャーディングされたクラスターを 5.0 にアップグレードする」を参照してください。