6.0 レプリカセットから 5.0 へのダウングレード
ダウングレードを試みる前に、このページの内容を理解してください。
ダウングレード パス
重要
レプリカセットをアップグレードまたはダウングレードする前に、すべてのレプリカセット ノードが実行されていることを確認してください。そうしないと、すべてのノードが起動されるまでアップグレードまたはダウングレードは完了しません。
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
プロセスの開始 」を参照してください。