定義
setFeatureCompatibilityVersionMongoDB の旧バージョンと互換性のないデータを保持する機能を有効または無効にします。
setFeatureCompatibilityVersionはadminデータベースに対してのみ発行できます。
警告
下位互換性のないこうした機能を有効にすると、ダウングレード前に保持されていた下位互換性のない機能をすべて削除する必要があるため、ダウングレード プロセスが複雑になる場合があります。
アップグレード後、バーンイン期間中は、下位互換性のない機能を有効にせずに配置を実行します。ダウングレードの可能性が低いと確信できるようになってから、これらの機能を有効にします。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
バージョン 7.0 で変更。
このコマンドの構文は、次のとおりです。
db.adminCommand( { setFeatureCompatibilityVersion: <version>, confirm: true, writeConcern: { wtimeout: <timeout> } } )
コマンドフィールド
setFeatureCompatibilityVersion コマンドは、次のフィールドがあります。
setFeatureCompatibilityVersion
必須
version に指定できる値は次のとおりです。
バージョン | 説明 |
|---|---|
| MongoDB 8.0で利用可能 配置 |
| MongoDB 7.0 配置で利用可能 |
| MongoDB 6.0 および 7.0 配置で利用可能 MongoDB 5.0と互換性のないデータを永続化する6.0機能を有効にします。 |
| MongoDB 5.0 および 6.0 の配置で利用可能 MongoDB 4.4と互換性のないデータを永続化する5.0機能を有効にします。 |
confirm
必須
バージョン 7.0 で追加。
機能の互換性の変更を確認し、操作を続行できるようにするには、true に設定します。
If you omit theconfirm parameter or setconfirm to a value other than,true the command fails and returns a warning about modifying the 機能の互換性バージョン.警告には、クラスターの FCV をアップグレードまたはダウングレードした後は、バイナリ バージョンをダウングレードするには、サポートによる支援が必要であることが記載されています。
writeConcern
任意
writeConcern は書込み保証 (write concern) の wtimeout の値をミリ秒単位で指定します。
動作
機能の互換性バージョンを 8.0 よりもダウングレードする場合は、まず transitionToDedicatedConfigServer コマンドを実行します。ダウングレードの詳細については、「機能の互換性バージョンのダウングレード」を参照してください。
上位互換性のないデータによるアップグレード
アップグレード バージョンに上位互換性のないデータが含まれているクラスターの 機能の互換性バージョン をアップグレードしようとすると、CannotUpgrade エラーを受領します。順方向互換性のないデータとは、ターゲット バージョンで削除された機能に依存しているクラスター内の任意のデータを指します。
このエラーが発生すると、 によって次のいずれかが実行されます。
クラスター データを変更して上位互換性のない機能を削除し、アップグレード バージョンで
setFeatureCompatibilityVersionコマンドを再実行して、機能の互換性バージョン をアップグレード バージョンに設定します。元のダウングレード バージョンで
setFeatureCompatibilityVersionコマンドを実行し、機能の互換性バージョン を元のバージョンに戻します。重要
機能の互換性バージョンを元のバージョンに設定すると、アップグレード手順が停止し、機能の互換性バージョンがダウングレードされたバージョンに戻ります。クラスターは、機能の互換性バージョンのアップグレードが開始される前の状態に戻りません。
機能の互換性バージョン のアップグレードで前方の互換性のないデータがないことが確認されても、それ以外で停止または失敗した場合、その後のすべての機能の互換性バージョンのダウングレードの試行もエラー メッセージとともに失敗します。機能の互換性バージョンをダウングレードする前に、機能の互換性バージョンのアップグレードを完了する必要があります。
下位互換性のないデータによるダウングレード
ダウンロードしたバージョンに互換性のないデータが含まれているクラスターの FCVCannotDowngrade をダウングレードしようとすると、 エラーを受領します。このエラーが発生すると、クラスターは過渡的なdowngrading 状態のままになります。
クラスターを downgrading 状態から移動するには、次のいずれかを実行します。
クラスターデータを変更して下位互換性のない機能を削除し、ダウングレードされたバージョンで
setFeatureCompatibilityVersionコマンドを再実行して、fCV をダウングレードされたバージョンに設定します。元のアップグレード バージョンで
setFeatureCompatibilityVersionコマンドを実行し、fCV を元のバージョンに戻します。重要
機能の互換性バージョン を元のバージョンに設定すると、ダウングレード手順が停止し、機能の互換性バージョン がアップグレードされたバージョンに戻ります。クラスターは 機能の互換性バージョン のダウングレードが開始する前の状態に戻りません。
機能の互換性バージョンのダウングレードで、後方互換性のないデータがないことが確認されたものの、それ以外で停止または失敗した場合、それ以降の機能の互換性バージョンのアップグレードの試行もエラーメッセージと共に失敗します。機能の互換性バージョンをアップグレードする前に、機能の互換性バージョンのダウングレードを完了する必要があります。
MongoDB 7.0 でのダウングレード ポリシーの変更
MongoDB 7.0 以降では、デプロイでの FCV を MongoDB の Rapid Release バージョンにダウングレードしたり、Rapid Release バージョンから任意のバージョンにダウングレードしたりすることはできません。
配置の FCv をアップグレードまたはダウングレードする場合、サポートの支援なしに配置のバイナリ バージョンをダウングレードすることはできません。
詳しくは、「7.0 から 6.0 へのダウングレード」を参照してください。
バックグラウンド操作との競合
特定のバックグラウンド操作により、setFeatureCompatibilityVersion の実行が妨げられる可能性があります。実行中の操作を識別するには、currentOp を使用します。
同期の失敗
最初の同期中に 機能の互換性バージョン を変更すると、oplog アプリケーション フェーズでエントリを繰り返すと、同期が失敗し、OplogOperationUnsupported エラーが表示される場合があります。操作フェーズで操作が繰り返されなくなるため、次の同期は成功します。
Default Values
配置 | featureCompatibilityVersion |
|---|---|
新しい 7.0 配置の場合 |
|
6.0からアップグレードされた 7.0 配置の場合 |
|
新しい 6.0 配置の場合 |
|
5.0 からアップグレードされた 6.0 配置の場合 |
|
べき等性
このコマンドは、内部システム コレクションへの書き込みを実行する必要があります。コマンドが正常に完了しない場合は、安全に再試行できます。操作は冪等です。
Cluster-to-Cluster Sync とユーザー書込み (write) ブロック
MongoDB 6.0 以降では、機能の互換性バージョンをダウングレードする必要がある場合は、クラスター間のレプリケーションとユーザー書込みブロックを無効にしてください。
クラスター間のレプリケーションを有効にしている場合は無効にします。
ユーザーに書込みブロックを有効にしている場合は、無効にします。
db.runCommand( { setUserWriteBlockMode: 1, global: false } ) 前のコマンドが完了するまで待機します。
setFeatureCompatibilityVersionを使用して機能の互換性バージョンをダウングレードします。
MongoDB Cluster-to-Cluster Sync の詳細については、ドキュメントを参照してください。
アービタの機能互換性
アービタは admin.system.version コレクションを複製しません。このため、レプリカセットの fCV 値に関係なく、アービタは常にバイナリのダウングレード バージョンと同じ機能の互換性バージョンを使用します。
例、 MongoDB 5.0 クラスターのアービタの FCV 値は 4.4 です。
例
FeatureCompatibilityVersion の取得
mongod インスタンスの featureCompatibilityVersion を表示するには、mongod インスタンスで getParameter コマンドを実行します。
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
出力は次のようになります。
{ featureCompatibilityVersion: { version: '5.0' }, ok: 1, '$clusterTime': { clusterTime: Timestamp({ t: 1660318752, i: 5 }), signature: { hash: Binary(Buffer.from("ce0cff3621e9b089fa6d8e9a1e1efc1a1ff15dab", "hex"), 0), keyId: Long("7129893797260951557") } }, operationTime: Timestamp({ t: 1660318752, i: 5 }) }
注意
mongos インスタンスでは操作が未定義です。
アクセス制御が有効になっているシャーディングされたクラスターでは、コマンドを実行するためにシャード ローカル ユーザーとしてシャードに接続する必要があります。
MongoDB 7.0 配置で機能の互換性バージョンを設定する
7.0 の下位互換性のない機能を有効にする
MongoDB 6.0 と互換性のないデータを保持する 7.0 の機能を有効にするには、MongoDB 7.0 配置で機能の互換性を "7.0" に設定します。
注意
admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
7.0 の下位互換性のない機能を無効にする
MongoDB 6.0 と互換性のないデータを保持する 7.0 の機能を無効にするには、MongoDB 7.0 配置で機能の互換性を "6.0" に設定します。
注意
admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。
スタンドアロンの場合は、スタンドアロンの
mongodインスタンスでコマンドを実行します。レプリカセットの場合は、プライマリでコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。
シャーディングされたクラスターの場合は、
mongosインスタンスでコマンドを実行します。
"6.0"featureCompatibilityVersion は、MongoDB 6.0 および MongoDB 7.0 の配置でのみサポートされます。
db.adminCommand( { setFeatureCompatibilityVersion: "6.0", confirm: true } )
MongoDB 7.0 から MongoDB 6.0 へのダウングレード プロセスの一部として実行する場合には、6.0 と互換性のないすべての永続機能も削除する必要があります。適切なダウングレード手順を参照してください。
MongoDB 6.0 配置で機能の互換性バージョンを設定する
6.0 の下位互換性のない機能を有効にする
MongoDB 5.0 と互換性のないデータを保持する 6.0 機能を有効にするには、 MongoDB 6.0 配置で機能の互換性を "6.0" に設定します。
注意
admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
6.0 の下位互換性のない機能を無効にする
MongoDB 5.0 と互換性のないデータを保持する 6.0 機能を無効にするには、 MongoDB 6.0 配置で機能の互換性を "5.0" に設定します。
注意
admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。
スタンドアロンの場合は、スタンドアロンの
mongodインスタンスでコマンドを実行します。レプリカセットの場合は、プライマリでコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。
シャーディングされたクラスターの場合は、
mongosインスタンスでコマンドを実行します。
"5.0"featureCompatibilityVersion は、MongoDB 5.0 および MongoDB 6.0 の配置でのみサポートされます。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
MongoDB 6.0 からMongoDB 5.0 へのダウングレード プロセスの一部として実行する場合には、5.0 と 互換性のない すべての永続機能も削除する必要があります。適切なダウングレード手順を参照してください。
書込み保証 (write concern) タイムアウトの設定
次の例では、任意の書込み保証 (write concern) の wtimeout フィールドを 5000(5 秒)に設定しています。
注意
admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0", writeConcern: { wtimeout: 5000 } } )
トラブルシューティング
機能の互換性バージョンを設定した後にスタートアップの問題が発生した場合は、MongoDBサポート にお問い合わせください。