定義
setFeatureCompatibilityVersionMongoDB の旧バージョンと互換性のないデータを保持する機能を有効または無効にします。
setFeatureCompatibilityVersionはadminデータベースに対してのみ発行できます。
警告
下位互換性のないこうした機能を有効にすると、ダウングレード前に保持されていた下位互換性のない機能をすべて削除する必要があるため、ダウングレード プロセスが複雑になる場合があります。
ダウングレードの可能性を最小限に抑えるには、アップグレード後、バーンイン期間中にこれらの下位互換性のない機能を有効にせずに配置を運用することをお勧めします。ダウングレードの可能性を最小限に抑えられたと確信できたら、これらの機能を有効にします。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
バージョン8.3で変更。
このコマンドの構文は、次のとおりです。
db.adminCommand( { setFeatureCompatibilityVersion: <version>, confirm: true, writeConcern: { wtimeout: <timeout> }, dryRun: <boolean> } )
コマンドフィールド
setFeatureCompatibilityVersion コマンドは、次のフィールドがあります。
setFeatureCompatibilityVersion
必須
version に指定できる値は次のとおりです。
バージョン | 説明 |
|---|---|
| MongoDB 8.3で利用可能 配置 |
| MongoDB 8.2 およびMongoDB 8.3 で利用可能配置 MongoDB8.3 以降では、 FCV を |
| MongoDB 8.0で利用可能 配置 |
| MongoDB 7.0 配置で利用可能 |
confirm
必須
バージョン 7.0 で追加。
機能の互換性の変更を確認し、操作を続行できるようにするには、true に設定します。
confirm パラメータを省略するか、confirm を true 以外の値に設定すると、コマンドは失敗し、機能の互換性バージョンの変更に関する警告が返されます。
writeConcern
任意
writeConcern は書込み保証 (write concern) の wtimeout の値をミリ秒単位で指定します。
ryRun
任意
true に設定すると、 MongoDB は機能の互換性バージョンのアップグレードまたはダウングレードをシミュレートします。クラスターに互換性のないデータが含まれている場合、操作はエラーで失敗します。
バージョン8.3の新機能。
動作
機能の互換性バージョンを 8.0 よりもダウングレードする場合は、まず transitionToDedicatedConfigServer コマンドを実行します。ダウングレードの詳細については、「機能の互換性バージョンのダウングレード」を参照してください。
上位互換性のないデータによるアップグレード
アップグレード バージョンに上位互換性のないデータが含まれているクラスターの FCV をアップグレードしようとすると、CannotUpgrade エラーを受領します。順方向互換性のないデータとは、ターゲット バージョンで削除された機能に依存しているクラスター内の任意のデータを指します。
このエラーが発生すると、 によって次のいずれかが実行されます。
クラスター データを変更して上位互換性のない機能を削除し、アップグレード
setFeatureCompatibilityVersionバージョンで コマンドを再実行して、FCV をアップグレード バージョンに設定します。setFeatureCompatibilityVersion元のダウングレード バージョンで コマンドを実行し、FCV を元のバージョンに戻します。重要
FCV を元のバージョンに設定すると、アップグレード手順が停止し、FCV がダウングレードされたバージョンに戻ります。この手順では、クラスターは FCV のアップグレードが開始される前の状態にリセットされません。
FCV のアップグレードによって順方向に互換性のないデータがないことが確認されたが、停止または失敗した場合、次回の FCV のダウングレードの試行もエラーメッセージと共に失敗します。 FCV のダウングレードを試す前に、FCV のアップグレードを完了する必要があります。
下位互換性のないデータによるダウングレード
ダウングレード バージョンに下位互換性のないデータが含まれているクラスターの FCV をダウングレードしようとすると、CannotDowngrade エラーを受領します。下位互換性のないデータとは、ターゲット バージョンで利用できない機能に依存しているクラスター内の任意のデータを指します。
このエラーが発生すると、 によって次のいずれかが実行されます。
クラスターデータを変更して下位互換性のない機能を削除し、ダウングレードされたバージョンで
setFeatureCompatibilityVersionコマンドを再実行して、fCV をダウングレードされたバージョンに設定します。元のアップグレード バージョンで
setFeatureCompatibilityVersionコマンドを実行し、fCV を元のバージョンに戻します。重要
FCV を元のバージョンに設定すると、ダウングレード手順が停止し、FCV がアップグレードされたバージョンに戻ります。この手順では、クラスターは FCV のダウングレードが開始される前の状態にリセットされません。
FCV のダウングレードによって下位互換性のないデータがないことが確認されたが、それ以外の場合に停止または失敗した場合、次回の FCV のアップグレードの試行もエラーメッセージと共に失敗します。 FCV のアップグレードを試す前に、FCV のダウングレードを完了する必要があります。
MongoDB 8.3 のダウングレード ポリシー
8.3以降では、配置の FCV を直前のマイナー バージョンにダウングレードできます。
バックグラウンド操作との競合
特定のバックグラウンド操作により、setFeatureCompatibilityVersion の実行が妨げられる可能性があります。実行中の操作を識別するには、currentOp を使用します。
同期の失敗
最初の同期中に setFeatureCompatibilityVersion を起動した場合、oplog アプリケーション フェーズでエントリを繰り返すと、同期が失敗し、OplogOperationUnsupported エラー メッセージが表示される場合があります。操作フェーズで操作が繰り返されなくなるため、このあとの同期は成功します。
Default Values
配置 | featureCompatibilityVersion |
|---|---|
新しい8.3の場合 配置 |
|
8.3からアップグレードされた8.2 配置の場合 |
|
新しい8.0の場合 配置 |
|
8.0からアップグレードされた7.0 配置の場合 |
|
新しい 7.0 配置の場合 |
|
6.0からアップグレードされた 7.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 8.0 配置で機能の互換性バージョンを設定する
8.0 の下位互換性のない機能を有効にする
8.0MongoDB と互換性のないデータを保持する7.0 機能を有効にするには、"8.0" MongoDB 配置で機能の互換性を8.0 に設定します。
注意
admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "8.0", confirm: true } )
8.0 の下位互換性のない機能を無効にする
8.0MongoDB と互換性のないデータを保持する7.0 機能を無効にするには、"7.0" MongoDB 配置で機能の互換性を8.0 に設定します。
注意
admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。
スタンドアロンの場合は、スタンドアロンの
mongodインスタンスでコマンドを実行します。レプリカセットの場合は、プライマリでコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。
シャーディングされたクラスターの場合は、
mongosインスタンスでコマンドを実行します。
"7.0"featureCompatibilityVersion は、 MongoDB 7.0 およびMongoDB 8.0 の配置でサポートされています。
db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
MongoDB からMongoDB へのダウングレード プロセスの一部としてこのコマンドを実行する場合は、8.0 7.07.0と 互換性のない すべての永続機能も削除する必要があります。適切なダウングレード手順を参照してください。
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 と互換性のないすべての永続機能も削除する必要があります。適切なダウングレード手順を参照してください。
書込み保証 (write concern) タイムアウトの設定
次の例では、任意の書込み保証 (write concern) の wtimeout フィールドを 5000(5 秒)に設定しています。
注意
admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0", writeConcern: { wtimeout: 5000 } } )