ダウングレードを試みる前に、このページの内容を理解してください。
ダウングレード パス
重要
レプリカセットをアップグレードまたはダウングレードする前に、すべてのレプリカセット ノードが実行されていることを確認してください。そうしないと、すべてのノードが起動されるまでアップグレードまたはダウングレードは完了しません。
6.0 からダウングレードする必要がある場合は、5.0 の最新パッチ リリースにダウングレードします。
MongoDB は 1 つのバージョンのダウングレードのみをサポートします。現在のリリースより数バージョン前のリリースにダウングレードすることはできません。
たとえば、6.0 シリーズの配置を 5.0 シリーズにダウングレードできます。ただし、5.0 シリーズの配置から 4.4 シリーズの配置へのさらなるダウングレードはサポートされていません。
アクセス制御
レプリカセットでアクセス制御が有効になっている場合、ダウングレード ユーザーの権限には、データベース全体のインデックスを一覧表示して管理する特権が含まれている必要があります。 rootロールを持つユーザーには必要な特権があります。
前提条件
ダウングレード手順を開始する前に、次の前提条件手順を完了する必要があります。
バックアップの作成
任意ですが推奨します。 データベースのバックアップを作成します。
バックアップの作成方法については、「自己管理型配置のバックアップ メソッド 」を参照してください。
下位互換性のない機能を削除する
6.0 から 5.0 にダウングレードするには、5.0 と 互換性のない 6.0 の機能を削除する必要があります。 互換性のない機能のリストと削除方法については、「ダウングレードの考慮事項 」を参照してください。
ダウングレード機能の互換性バージョン(FCV)
レプリカセットの FCV をダウングレードするには:
最初の同期が進行中でないことを確認します。 最初の同期の進行中に
setFeatureCompatibilityVersionコマンドを実行すると、最初の同期がリスタートされます。レプリカセット構成に
newlyAddedフィールドがないノードがないことを確認します。 これを確認するには、レプリカセット内の各ノードで次のコマンドを実行します。use local db.system.replset.find( { "members.newlyAdded" : { $exists : true } } ); newlyAddedフィールドは、最初の同期の実行中とその直後にのみ、ノードのレプリカセット構成ドキュメントにのみ表示されます。レプリカセット ノードが
ROLLBACKまたはRECOVERING状態になっていないことを確認します。プライマリに接続するには、
mongoshを使用します。featureCompatibilityVersionを"5.0"にダウングレードします。db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } ) setFeatureCompatibilityVersionコマンドは内部システム コレクションへの書込みを実行し、冪等です。 コマンドが正常に完了しない場合は、プライマリでコマンドを再試行してください。レプリカセットのすべてのノードに更新された
featureCompatibilityVersionが適用されていることを確認するには、各レプリカセット ノードに接続し、featureCompatibilityVersionを確認します。db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) すべてのノードは次の内容を含む結果を返す必要があります。
"featureCompatibilityVersion" : { "version" : "5.0" } いずれかのノードが
"6.0"のfeatureCompatibilityVersionを返す場合は、続行する前にノードがバージョン"5.0"を返すまで待機します。
返されたfeatureCompatibilityVersion値の詳細については、 「 FeatureCompatibilityVersion の取得 」を参照してください。
ダウングレード手順
警告
ダウングレード手順に入る前に、 遅延レプリカセット ノードを含むすべてのレプリカセット ノードに前提条件が変更されていることを確認してください。 そのためには、ダウングレードする前に、 featureCompatibilityVersionと を確認して、各ノードの互換性のない機能を削除します。
最新の 5.0 バイナリをダウンロードします。
パッケージ マネージャーまたは手動ダウンロードのいずれかを使用して、5.0 シリーズの最新リリースを取得します。 パッケージ マネージャーを使用する場合は、5.0 バイナリの新しいリポジトリを追加してから、実際のダウングレード プロセスを実行します。
重要
レプリカセットをアップグレードまたはダウングレードする前に、すべてのレプリカセット ノードが実行されていることを確認してください。そうしないと、すべてのノードが起動されるまでアップグレードまたはダウングレードは完了しません。
6.0 からダウングレードする必要がある場合は、5.0 の最新パッチ リリースにダウングレードします。
レプリカセットのセカンダリ ノードをダウングレードします。
レプリカセットの各セカンダリノードを 1 つずつダウングレードします。
ノードをシャットダウンします。
mongodプロセスをシャットダウンするには、mongoshを使用してセカンダリに接続し、次のコマンドを実行します。db.adminCommand( { shutdown: 1 } ) ノードを再起動します。
mongodプロセスを開始するには、次のコマンドを実行します。mongod --dbpath </path-to-data-folder> mongodプロセスの開始の詳細については、「mongodプロセスの開始 」を参照してください。ノードが
SECONDARY状態になるまで待ちます。次のセカンダリをダウングレードする前に、ノードが
SECONDARY状態に回復するまで待ちます。 メンバーの状態を確認するには、rs.status()mongoshで メソッドを使用します。ノードが
SECONDARYステージに達したら、次のセカンダリをダウングレードします。
アービタ レプリカセット ノード(存在する場合)をダウングレードします。
レプリカセットにアービタが含まれていない場合は、この手順をスキップします。
レプリカセットのアービタノードをダウングレードします。
ノードをシャットダウンします。
アービタをシャットダウンするには、
mongoshを使用してアービタに接続し、次のコマンドを実行します。db.adminCommand( { shutdown: 1 } ) アービタ データ ディレクトリの内容を削除します。
アービタ
mongodのデータディレクトリを見つけるには、storage.dbPath構成設定または--dbpathコマンドライン オプションのいずれかを確認します。次のコマンドを実行します:
rm -rf /path/to/mongodb/datafiles/* アービタを再起動します。
mongodプロセスを開始するには、次のコマンドを実行します。mongod --dbpath </path-to-mongodb-datafiles> mongodプロセスの開始の詳細については、「mongodプロセスの開始 」を参照してください。ノードが
ARBITER状態になるまで待ちます。プライマリをダウングレードする前に、ノードが
ARBITER状態に回復するまで待ちます。 メンバーの状態を確認するには、rs.status()mongoshで メソッドを使用します。
プライマリをダウングレードします。
プライマリを降格します。
mongoshでは、rs.stepDown()を使用してプライマリを降格し、通常のフェイルオーバー手順を強制します。rs.stepDown() プライマリが降格したことを確認します。
次のコマンドを実行します:
rs.status() プライマリが降格し、別のノードが
PRIMARY状態になったことを確認します。以前のプライマリ
mongodを置き換えて再起動します。ノードをシャットダウンします。
プライマリのシャットダウンを実行するには、
mongoshを使用してプライマリに接続し、次のコマンドを実行します。db.adminCommand( { shutdown: 1 } ) 5.0バイナリを使用して
mongodを再起動します。mongodプロセスを開始するには、次のコマンドを実行します。mongod --dbpath </path-to-mongodb-datafiles> mongodプロセスの開始の詳細については、「mongodプロセスの開始 」を参照してください。