定義
バージョン8.0の新機能。
MongoDB 8.0以降では、次のことが可能です。
通常のシャーディングされたクラスターのメタデータに加えてアプリケーションデータを保存するようにコンフィギュレーションサーバーを設定する。アプリケーションデータを保存するコンフィギュレーションサーバーをコンフィギュレーションシャードと呼ぶ。
コンフィギュレーションシャードと専用のコンフィギュレーションサーバーの間を移行します。
すべてのシャーディングされたクラスターにはコンフィギュレーションサーバーが必要です。コンフィギュレーションシャードはコンフィギュレーションサーバーとして修飾されます。必要なノードの数を減らし、配置を簡素化するには、専用のコンフィギュレーションサーバーではなくコンフィギュレーションシャードを使用します。
専用のコンフィギュレーションサーバーには独自のレプリカセットが必要です。コンフィギュレーションシャードは、 コンフィギュレーションサーバー のロールと既存の シャードレプリカセットを組み合わせるため、クラスターに必要なレプリカセットが少なくなり、コストが少なくなります。コンフィギュレーションシャードを使用しても、シャード数が少ない場合ではパフォーマンスへの影響は測定できません。
専用のコンフィギュレーションサーバーは、クラスターメタデータをアプリケーションデータから分離します。特定の機能にはこの分離が必要です。クラスターに適した配置については、「 コンフィギュレーションシャードのユースケース 」を参照してください。
transitionToDedicatedConfigServerコマンドは、コンフィギュレーションシャードを専用のコンフィギュレーションコンフィギュレーションサーバーとして実行するように構成します。 コマンドを使用すると、バランサーは優先的にチャンクをコンフィギュレーションシャードからクラスター内の他のシャードに移動するようにします。
transitionToDedicatedConfigServerを実行する前に、 mongosに接続し、管理データベースを使用します。
シャーディングされたシャーディングされたクラスターでは、 featureCompatibilityVersionを少なくとも8.0に設定する必要があります。
構文
コマンド構文:
db.adminCommand( { transitionToDedicatedConfigServer: 1 } )
動作
transitionToDedicatedConfigServer コマンドは、removeShard がデータを移動するのと同じ方法で、コンフィギュレーションシャードから他のシャードにアプリケーションデータを移動します。バランサーは、シャーディングされたコレクションデータをクラスター内の他の適格なシャードに移動します。シャーディングされていないコレクションデータとデータベースは、クラスター内の選択したシャードに移動する必要があります。構成シャードを削除する手順については、 「シャードクラスタからシャードを削除する」を参照してください。
内部的には、 transitionToDedicatedConfigServerはremoveShardコマンドを実行します。 transitionToDedicatedConfigServerはremoveShardと同じ応答を返します。 データ移動に成功した後のレスポンスにはstate: "completed"が含まれます。 完全な応答の詳細と例については、「 deleteShard の例」を参照してください。 transitionToDedicatedConfigServerを実行中する前にremoveShardのドキュメントを確認して、デプロイにどのように影響するかを理解してください。
transitionToDedicatedConfigServerを 2 回実行し、シャード データが現在他のシャードに移動している場合、 transitionToDedicatedConfigServerの 2 回目の実行によってデータ移動の現在のステータスが返されます。 transitionToDedicatedConfigServerはremoveShardと同じ応答を返します。
transitionToDedicatedConfigServerによるデータの移動が完了すると、コンフィギュレーションサーバーは専用のコンフィギュレーションサーバーになり、コンフィギュレーションシャードではなくなります。
アクセス制御
アクセス制御が有効になっている場合、transitionToDedicatedConfigServer コマンドには クラスターtransitionToDedicatedConfigServer の 認可アクションが必要です。
{ resource: { cluster : true }, actions: [ "transitionToDedicatedConfigServer" ] }
clusterManagerロールにはtransitionToDedicatedConfigServer認可アクションがあり、ユーザーに割り当てることができます。
次の例ではtestUserという名前のユーザーにclusterManagerロールを割り当てます。
db.grantRolesToUser( "testUser", [ "clusterManager" ] )
例
次の例では、 コンフィギュレーションシャード を専用の コンフィギュレーションコンフィギュレーションサーバーとして実行するように構成します。
db.adminCommand( { transitionToDedicatedConfigServer: 1 } )
詳細については、「ダウングレード機能の互換性バージョン 」を参照してください。