setFeatureCompatibilityVersion
項目一覧
定義
setFeatureCompatibilityVersion
MongoDB の旧バージョンと互換性のないデータを保持する機能を有効または無効にします。
setFeatureCompatibilityVersion
はadmin
データベースに対してのみ発行できます。
警告
下位互換性のないこうした機能を有効にすると、ダウングレード前に保持されていた下位互換性のない機能をすべて削除する必要があるため、ダウングレード プロセスが複雑になる場合があります。
ダウングレードの可能性を最小限に抑えるには、アップグレード後、バーンイン期間中にこれらの下位互換性のない機能を有効にせずに配置を運用することをお勧めします。ダウングレードの可能性を最小限に抑えられたと確信できたら、これらの機能を有効にします。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { setFeatureCompatibilityVersion: <version>, writeConcern: { wtimeout: <timeout> } } )
コマンドフィールド
version
に指定できる値は次のとおりです。
バージョン | 説明 |
---|---|
| MongoDB 6.0 配置で利用可能 |
| MongoDB 5.0 および 6.0 の配置で利用可能 |
任意のwriteConcern
は、書込み保証(write concern)のwtimeout
の値をミリ秒単位で指定します。
動作
バックグラウンド操作との競合
特定のバックグラウンド操作により、setFeatureCompatibilityVersion
の実行が妨げられる可能性があります。実行中の操作を識別するには、currentOp
を使用します。
同期の失敗
最初の同期中に setFeatureCompatibilityVersion
を起動した場合、oplog
アプリケーション フェーズでエントリを繰り返すと、同期が失敗し、OplogOperationUnsupported
エラー メッセージが表示される場合があります。操作フェーズで操作が繰り返されなくなるため、このあとの同期は成功します。
Default Values
配置 | featureCompatibilityVersion |
---|---|
新しい 6.0 配置の場合 |
|
5.0からアップグレードされた 6.0 配置の場合 |
|
新しい 5.0 配置の場合 |
|
4.4 からアップグレードされた 5.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 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 と互換性のないすべての永続機能も削除する必要があります。適切なダウングレード手順を参照してください。
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 と互換性のないすべての永続機能も削除する必要があります。適切なダウングレード手順を参照してください。
MongoDB 4.2 配置で機能の互換性バージョンを設定する
4.2 の下位互換性のない機能を有効にする
MongoDB 4.0と互換性のないデータを保持する4.2機能を有効にするには、MongoDB 4.2配置で機能の互換性を"4.2"
に設定します。
注意
admin
データベースに対して setFeatureCompatibilityVersion
コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )
書込み保証 (write concern) タイムアウトの設定
次の例では、任意の書込み保証 (write concern) の wtimeout
フィールドを 5000(5 秒)に設定しています。
注意
admin
データベースに対して setFeatureCompatibilityVersion
コマンドを実行します。
db.adminCommand( { setFeatureCompatibilityVersion: "5.0", writeConcern: { wtimeout: 5000 } } )