setFeatureCompatibilityVersion
定義
setFeatureCompatibilityVersion
MongoDB の旧バージョンと互換性のないデータを保持する機能を有効または無効にします。
setFeatureCompatibilityVersion
はadmin
データベースに対してのみ発行できます。
警告
下位互換性のないこうした機能を有効にすると、ダウングレード前に保持されていた下位互換性のない機能をすべて削除する必要があるため、ダウングレード プロセスが複雑になる場合があります。
ダウングレードの可能性を最小限に抑えるには、アップグレード後、バーンイン期間中にこれらの下位互換性のない機能を有効にせずに配置を運用することをお勧めします。ダウングレードの可能性を最小限に抑えられたと確信できたら、これらの機能を有効にします。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドは、M 0 、M 2 、M 5 、M 10 + クラスターではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
コマンドは、次の形式をとります。
db.adminCommand( { setFeatureCompatibilityVersion: <version>, writeConcern: { wtimeout: <timeout> } } )
version
の値は次のとおりです。
バージョン | 説明 |
---|---|
"5.0" | MongoDB 5.0で利用可能 配置 |
"4.4" | MongoDB 4.4 および 5.0 の配置で利用可能 MongoDB 4.2と互換性のないデータを永続化する4.4機能を有効にします。 |
"4.2" | MongoDB 4.4 配置で利用可能 MongoDB 4.2と互換性のないデータを保持する4.4機能を無効にします。 |
writeConcern
任意
writeConcern
は書込み保証 (write concern) の wtimeout
の値をミリ秒単位で指定します。
動作
バックグラウンド操作との競合
特定のバックグラウンド操作により、setFeatureCompatibilityVersion
の実行が妨げられる可能性があります。実行中の操作を識別するには、currentOp
を使用します。
同期の失敗
最初の同期中に setFeatureCompatibilityVersion
を起動した場合、oplog
アプリケーション フェーズでエントリを繰り返すと、同期が失敗し、OplogOperationUnsupported
エラー メッセージが表示される場合があります。操作フェーズで操作が繰り返されなくなるため、このあとの同期は成功します。
Default Values
配置 | featureCompatibilityVersion |
---|---|
新しい 5.0 配置の場合 | "5.0" |
4.4 からアップグレードされた 5.0 配置の場合 |
べき等性
このコマンドは、内部システム コレクションへの書込みを実行する必要があります。何らかの理由でコマンドが正常に完了しない場合は、操作がべき等であるため、安全にコマンドを再試行できます。
アービタの機能互換性
アービタは admin.system.version
コレクションを複製しません。このため、レプリカセットの fCV 値に関係なく、アービタは常にバイナリのダウングレード バージョンと同じ機能の互換性バージョンを使用します。
たとえば、MongoDB 5.0 クラスターのアービタの fCV 値は 4.4 です。
例
FeatureCompatibilityVersion の表示
mongod
インスタンスのfeatureCompatibilityVersion
を表示するには、 mongod
インスタンスで次のコマンドを実行します。
注意
mongos
インスタンスでは操作は未定義です。 アクセス制御が有効になっているシャーディングされたクラスターの場合、シャード レプリカセットのノードに対して コマンドを実行するには、シャード ローカル ユーザーとしてノードに接続する必要があります。
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
このコマンドの出力は、 mongod
の現在の状態に応じて、次のいずれかのようになります。
配置にデフォルトの
featureCompatibilityVersion
がある場合、またはsetFeatureCompatibilityVersion
コマンドが配置に対して正常に実行された場合、featureCompatibilityVersion
は次の形式になります。"featureCompatibilityVersion" : { "version" : <version> } mongod
が部分的にアップグレードまたはダウングレード状態にある場合、featureCompatibilityVersion
の形式は次のようになります。"featureCompatibilityVersion" : { "version" : <version> , "targetVersion" : <target version> } たとえば、シャーディングされたクラスターに、
setFeatureCompatibilityVersion
mongos
に対して コマンドを実行した場合にのみ読み取られるシャード レプリカセットがある場合、コマンドは失敗し、コンフィギュレーションサーバーのfeatureCompatibilityVersion
にはtargetVersion
フィールドが含まれます。 。または、
setFeatureCompatibilityVersion
の実行中にレプリカセットが読み取り専用になった場合は、コマンドは失敗し、レプリカセットのfeatureCompatibilityVersion
にはtargetVersion
フィールドも含まれます。
MongoDB 5.0 配置で機能の互換性バージョンを設定する
5.0 の下位互換性のない機能を有効にする
MongoDB 4.4 と互換性のないデータを保持する 5.0 の機能を有効にするには、MongoDB 5.0 配置で機能の互換性を "5.0"
に設定します。
注意
admin
データベースに対して setFeatureCompatibilityVersion
コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
5.0 の下位互換性のない機能を無効にする
MongoDB 4.4 と互換性のないデータを保持する 5.0 の機能を無効にするには、MongoDB 5.0 配置で機能の互換性を "4.4"
に設定します。
注意
admin
データベースに対して setFeatureCompatibilityVersion
コマンドを実行します。
スタンドアロンの場合は、スタンドアロンの
mongod
インスタンスでコマンドを実行します。レプリカセットの場合は、プライマリでコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。
シャーディングされたクラスターの場合は、
mongos
インスタンスでコマンドを実行します。
"4.4"
featureCompatibilityVersion は、MongoDB 4.4 および MongoDB 5.0 の配置でのみサポートされます。
db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
MongoDB 5.0 から MongoDB 4.4 へのダウングレード プロセスの一部として実行する場合には、4.4 と互換性のないすべての永続機能も削除する必要があります。適切なダウングレード手順を参照してください。
書込み保証 (write concern) タイムアウトの設定
次の例では、任意の書込み保証 (write concern) の wtimeout
フィールドを 5000(5 秒)に設定しています。
注意
admin
データベースに対して setFeatureCompatibilityVersion
コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0", writeConcern: { wtimeout: 5000 } } )