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