Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

setFeatureCompatibilityVersion

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • 動作
  • バックグラウンド操作との競合
  • 同期の失敗
  • Default Values
  • べき等性
  • Cluster-to-Cluster Sync とユーザー書込み (write) ブロック
  • アービタの機能互換性
  • FeatureCompatibilityVersion の取得
  • MongoDB 6.0 配置で機能の互換性バージョンを設定する
  • MongoDB 5.0 配置で機能の互換性バージョンを設定する
  • MongoDB 4.2 配置で機能の互換性バージョンを設定する
  • 書込み保証 (write concern) タイムアウトの設定
setFeatureCompatibilityVersion

MongoDB の旧バージョンと互換性のないデータを保持する機能を有効または無効にします。 setFeatureCompatibilityVersionadmin データベースに対してのみ発行できます。

警告

下位互換性のないこうした機能を有効にすると、ダウングレード前に保持されていた下位互換性のない機能をすべて削除する必要があるため、ダウングレード プロセスが複雑になる場合があります。

ダウングレードの可能性を最小限に抑えるには、アップグレード後、バーンイン期間中にこれらの下位互換性のない機能を有効にせずに配置を運用することをお勧めします。ダウングレードの可能性を最小限に抑えられたと確信できたら、これらの機能を有効にします。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

db.adminCommand(
{
setFeatureCompatibilityVersion: <version>,
writeConcern: { wtimeout: <timeout> }
}
)

version に指定できる値は次のとおりです。

バージョン
説明

"6.0"

MongoDB 6.0 配置で利用可能

MongoDB 5.0 と互換性のないデータを永続化する 6.0 の機能を有効にします。

"5.0"

MongoDB 5.0 および 6.0 の配置で利用可能

MongoDB 4.4 と互換性のないデータを永続化する 5.0 の機能を有効にします。

任意のwriteConcernは、書込み保証(write concern)のwtimeoutの値をミリ秒単位で指定します。

  • プライマリが大多数のレプリカセット ノードからの確認を待機する時間です。時間内に確認応答が受信されない場合、操作は失敗します。

  • デフォルトは 60000 ミリ秒です。レプリカセットのセカンダリ ノードの遅延が wtimeout のデフォルトを超える場合は、時間を長くします。

注意

  • スタンドアロンの場合は、スタンドアロンの mongod インスタンスでコマンドを実行します。

  • レプリカセットの場合は、プライマリでコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。

  • シャーディングされたクラスターの場合は、mongos インスタンスでコマンドを実行します。

特定のバックグラウンド操作により、setFeatureCompatibilityVersion の実行が妨げられる可能性があります。実行中の操作を識別するには、currentOp を使用します。

最初の同期中に setFeatureCompatibilityVersion を起動した場合、oplog アプリケーション フェーズでエントリを繰り返すと、同期が失敗し、OplogOperationUnsupported エラー メッセージが表示される場合があります。操作フェーズで操作が繰り返されなくなるため、このあとの同期は成功します。

配置
featureCompatibilityVersion

新しい 6.0 配置の場合

"6.0"

"5.0" setFeatureCompatibilityVersion"6.0"から まで。

新しい 5.0 配置の場合

"5.0"

"4.4" setFeatureCompatibilityVersion"5.0"から まで。

このコマンドは、内部システム コレクションへの書込みを実行する必要があります。何らかの理由でコマンドが正常に完了しない場合は、操作がべき等であるため、安全にコマンドを再試行できます。

MongoDB 6.0 以降では、機能の互換性バージョンをダウングレードする必要がある場合は、クラスター間のレプリケーションとユーザー書込みブロックを無効にしてください。

  1. クラスター間のレプリケーションを有効にしている場合は無効にします。

  2. ユーザーに書込みブロックを有効にしている場合は、無効にします。

    db.runCommand( { setUserWriteBlockMode: 1, global: false } )
  3. 前のコマンドが完了するまで待機します。

  4. setFeatureCompatibilityVersion を使用して機能の互換性バージョンをダウングレードします。

MongoDB Cluster-to-Cluster Sync の詳細については、ドキュメントを参照してください。

アービタは admin.system.version コレクションを複製しません。このため、レプリカセットの fCV 値に関係なく、アービタは常にバイナリのダウングレード バージョンと同じ機能の互換性バージョンを使用します。

たとえば、MongoDB 5.0 クラスターのアービタの fCV 値は 4.4 です。

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 5.0 と互換性のないデータを保持する 6.0 の機能を有効にするには、MongoDB 6.0 配置で機能の互換性を "6.0" に設定します。

注意

admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。

  • スタンドアロンの場合は、スタンドアロンの mongod インスタンスでコマンドを実行します。

  • レプリカセットの場合は、プライマリでコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。

  • シャーディングされたクラスターの場合は、mongos インスタンスでコマンドを実行します。

db.adminCommand( { setFeatureCompatibilityVersion: "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 4.4 と互換性のないデータを保持する 5.0 の機能を有効にするには、MongoDB 5.0 配置で機能の互換性を "5.0" に設定します。

注意

admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。

  • スタンドアロンの場合は、スタンドアロンの mongod インスタンスでコマンドを実行します。

  • レプリカセットの場合は、プライマリでコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。

  • シャーディングされたクラスターの場合は、mongos インスタンスでコマンドを実行します。

db.adminCommand( { setFeatureCompatibilityVersion: "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.0と互換性のないデータを保持する4.2機能を有効にするには、MongoDB 4.2配置で機能の互換性を"4.2"に設定します。

注意

admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。

  • スタンドアロンの場合は、スタンドアロンの mongod インスタンスでコマンドを実行します。

  • レプリカセットの場合は、プライマリでコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。

  • シャーディングされたクラスターの場合は、mongos インスタンスでコマンドを実行します。

db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )

次の例では、任意の書込み保証 (write concern) の wtimeout フィールドを 5000(5 秒)に設定しています。

注意

admin データベースに対して setFeatureCompatibilityVersion コマンドを実行します。

  • スタンドアロンの場合は、スタンドアロンの mongod インスタンスでコマンドを実行します。

  • レプリカセットの場合は、プライマリでコマンドを実行します。データを保持するノードの過半数が利用可能である必要があります。

  • シャーディングされたクラスターの場合は、mongos インスタンスでコマンドを実行します。

db.adminCommand( {
setFeatureCompatibilityVersion: "5.0",
writeConcern: { wtimeout: 5000 }
} )

戻る

setClusterParameter