AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

自己管理型レプリカセットの構成

rs.conf()メソッドまたはreplSetGetConfigコマンドを使用して、レプリカセットの構成にアクセスできます。

レプリカセットの構成を変更するには、rs.reconfig() メソッドを使用して、構成ドキュメントをメソッドに渡します。

警告

MongoDB のバージョンによって検証ルールが異なる可能性があるため、異なるバージョンの MongoDB のノードを含むレプリカセットの再設定は避けてください。

次のドキュメントは、レプリカセット構成ドキュメントの表現を示しています。お使いのレプリカセットの構成には、以下の設定の一部しか含まれていない場合があります。

{
_id: <string>,
version: <int>,
term: <int>,
protocolVersion: <number>,
writeConcernMajorityJournalDefault: <boolean>,
configsvr: <boolean>,
members: [
{
_id: <int>,
host: <string>,
arbiterOnly: <boolean>,
buildIndexes: <boolean>,
hidden: <boolean>,
priority: <number>,
tags: <document>,
secondaryDelaySecs: <int>,
votes: <number>
},
...
],
settings: {
chainingAllowed : <boolean>,
heartbeatIntervalMillis : <int>,
heartbeatTimeoutSecs: <int>,
electionTimeoutMillis : <int>,
catchUpTimeoutMillis : <int>,
getLastErrorModes : <document>,
getLastErrorDefaults : <document>,
replicaSetId: <ObjectId>
}
}
_id

: string

レプリカセットの名前です。

_id は、replication.replSetName またはコマンドラインで mongod に指定された --replSet の値と同一である必要があります

Tip

レプリカセット名の設定については、replSetName または --replSet を参照してください。

version

タイプ: int

レプリカセット構成ドキュメントの改訂版を前の構成と区別するため、数字を 1 つずつ増やします。

レプリカセット ノードは、termversion を使用して「最新」 に関するコンシステント を実現します。レプリカ構成。メンバーがレプリカ構成ドキュメントを比較する場合、term が大きい構成ドキュメントが「最新」と見なされます。 term が同じか存在しない場合、より大きい version を含む構成ドキュメントが「最新」と見なされます。

term

タイプ: int

機能の互換性バージョン(FCV)「4.4」以降でのみ使用可能です。

レプリカセット構成ドキュメントの改訂版を前の構成と区別するため、数字を 1 つずつ増やします。構成ドキュメントのterm は、再構成を実行したterm プライマリ のレプリカセットのタームと一致します。プライマリreplSetReconfig は、選挙で選出されるたびにタームが増加します。 操作で明示的に設定されている場合、プライマリは フィールドを無視します。

term強制再構成を発行すると、replSetReconfig フィールドが削除されます。プライマリが次にterm を強制なしで発行すると、 は独自のタームに設定されます。

レプリカセット ノードは、termversion を使用して「最新」 に関するコンシステント を実現します。レプリカ構成。メンバーがレプリカ構成ドキュメントを比較する場合、term が大きい構成ドキュメントが「最新」と見なされます。 term が同じか存在しない場合、より大きい version を含む構成ドキュメントが「最新」と見なされます。

configsvr

タイプ: ブール値

デフォルト: false

レプリカセットがシャーディングされたクラスターのコンフィギュレーションサーバーに使用されるかどうかを示します。レプリカセットがシャーディングされたクラスターのコンフィギュレーションサーバー用である場合は、true に設定します。

protocolVersion

タイプ: 数値

デフォルト: 1

MongoDB は protocolVersion: 1 のみをサポートし、protocolVersion: 0 はサポートしなくなりました。

writeConcernMajorityJournalDefault

タイプ: ブール値

デフォルト: true

書込み保証 (write concern) でジャーナル オプション j が明示的に指定されていない場合の、{ w: "majority" } 書込み保証 (write concern) の動作を決定します。

次の表に、writeConcernMajorityJournalDefault の値と、それに対応する { w: "majority" } の動作を示します。

{ w: "majority" } 動作

true

MongoDB は、投票権を持つノードの過半数がディスク上のジャーナルに書込んだ後、書込み (write) 操作に確認応答を返します。

重要: writeConcernMajorityJournalDefaulttrue の場合、投票権を持つレプリカセットの全ノードはジャーナリングを実行する必要があります。

レプリカセットの投票ノードのいずれかが インメモリストレージエンジンを使用する場合は、 writeConcernMajorityJournalDefaultfalse に設定する必要があります。

レプリカセットの投票ノードのいずれかが インメモリストレージエンジンを使用し、 writeConcernMajorityJournalDefaulttrue"majority" の場合、"majority" 書込み操作が失敗する可能性があります。失敗する可能性がある操作には、 コマンドや、 user management メソッドやreplSetStepDown role managementmongosh "majority"メソッドなど、デフォルトで 書込み保証 (write concern)(書込み保証 (write concern)を使用するさまざまな メソッドがあります。

バージョン4.2 以降(および4.0.13 および3.6.14 )、レプリカセットのメンバーが、 インメモリストレージエンジンを使用しているものの(投票または非投票)、レプリカセットの がwriteConcernMajorityJournalDefault true に設定されている場合、レプリカセットノードはスタートアップ警告をログに記録します。

false

MongoDB は、投票権を持つノードの過半数がメモリ内で操作を適用した後で、書込み (write) 操作に確認応答を返します。

警告:

レプリカセットの投票ノードのいずれかが インメモリストレージエンジンを使用する場合は、 writeConcernMajorityJournalDefaultfalse に設定する必要があります。

バージョン4.2 以降(および4.0.13 および3.6.14 )、レプリカセットのメンバーが、 インメモリストレージエンジンを使用しているものの(投票または非投票)、レプリカセットの がwriteConcernMajorityJournalDefault true に設定されている場合、レプリカセットノードはスタートアップ警告をログに記録します。

writeConcernMajorityJournalDefaultfalse に設定されているシャードがあるシャーディングされたクラスター( インメモリストレージエンジンを使用する投票ノードのあるシャードなど)ではトランザクションを実行できません。

members

タイプ: 配列

レプリカセットの各ノードに 1 つある、ノード構成ドキュメントの配列。 配列は 0members から始まるインデックスの配列です。

各ノード固有の構成ドキュメントには、次のフィールドを含めることができます。

members[n]._id

タイプ: 整数

レプリカセット内のノードの整数識別子です。すべてのノード間で一意です。

MongoDB 5.0 以降では、値は 0 以上の任意の整数値にできます。以前は、この値は 0 から 255 までの整数に制限されていました。

各レプリカセットノードには一意の_id が必要です。現在の構成でその_id members[n]エントリがその を使用していない場合でも、_id の値を再利用しないでください。

一度設定すると、ノードの_id は変更できません。

注意

membersレプリカ構成オブジェクトを更新するときは、配列インデックスを使用して 配列内のレプリカセットメンバーにアクセスします。配列インデックスは で始まります。このインデックス値を、0 配列内の各ドキュメントのmembers[n]._id フィールドの値と混同members しないでください 。

members[n].host

: string

セットのノードのホスト名と、指定されている場合はポート番号。

ホスト名は、レプリカセット内のすべてのホストで解決可能である必要があります。

警告

は、セットの すべて のノードがmembers[n].host に変換されるホスト上にない限り、 またはローカルlocalhostlocalhost インターフェースに変換される値を保持できません。

members[n].arbiterOnly

任意

タイプ: ブール値

デフォルト: false

アービタを指定するブール値です。値 true は、ノードがアービタであることを示します。

rs.addArb()メソッドを使用してアービタを追加する場合、メソッドは追加されたノードのmembers[n].arbiterOnlytrue に自動的に設定します。

members[n].buildIndexes

任意

タイプ: ブール値

デフォルト: true

mongodがこのノードに インデックスmembers[n].buildIndexes を構築するかどうかを示すブール値。この値は、レプリカセットにノードを追加するときにのみ設定できます。ノードがセットに追加された後は、 フィールドを変更できません。ノードを追加するには、rs.add()rs.reconfig() を参照してください。

クライアントからクエリを受信する mongod インスタンスの場合は false に設定しないでください。

次の条件がすべて当てはまる場合は、buildIndexesfalse に設定すると便利な場合があります。

  • このインスタンスを を使用してバックアップを実行するためにのみ使用しているmongodump

  • このノードはクエリを受け取らない。

  • インデックスの作成とメンテナンスが、ホスト システムに過度の負担をかける。

false に設定しても、レプリケーションに必要な操作を容易にするために、セカンダリは _id フィールドにインデックスを構築します

警告

members[n].buildIndexesfalsemembers[n].priority0を に設定する場合は、 も に設定する必要があります。 がmembers[n].priority 0でない場合、 MongoDB は、members[n].buildIndexesfalse に等しいノードを追加しようとするとエラーを返します。

ノードがクエリを受け取らないようにするには、インデックスを構築しないインスタンスをすべて隠ぺいする必要があります。

他のセカンダリは、 が falsemembers[n].buildIndexes のノードから複製できません。

members[n].hidden

任意

タイプ: ブール値

デフォルト: false

この値が true の場合、レプリカセットはこのインスタンスを隠ぺいし、db.hello() または hello の出力にノードを含めません。こうすることで、セカンダリの読み込み設定 (read preference) によって読み取り操作(つまり、クエリ)がこのホストするに到達することを防止できます。

非表示ノードは、 書込み保証 (write concern) で発行された書込み"majority" (write) 操作に確認応答を返せます。votes 書込み保証 (write concern)で発行された書込み操作の場合、ノードは投票ノードでもある必要があります(つまり、 が0 より大きい場合)。

members[n].priority

任意

: プライマリ/セカンダリ ノードの場合は 0 から 1000 までの数値、アービタの場合は 0 または 1 の数値。

デフォルト: プライマリ/セカンダリのノードの場合は 1.0、アービタの場合は 0。

レプリカセットがプライマリになる相対的な可能性を示す数値。

  • ノードがプライマリになる可能性を高めるには、そのノードの priority 値を高く指定します。

  • ノードがプライマリになる可能性を減らすには、そのノードの priority 値を低く指定します。

ノードの優先順位を変更すると、1 つ以上の選挙がトリガーされます。選挙アルゴリズムは、最も優先順位が高いノードをプライマリに選出するために最善を尽くします。しかし、優先順位の高いセカンダリが使用できる場合でも、優先順位の低いノードがプライマリになる場合があります。

優先順位の低いノードがプライマリになると、サーバーは最も優先順位の高いレプリカセットがプライマリになるまで、定期的に選挙を呼び出します。選挙が行われる頻度は、選出されたノードと最も優先順位の高いノードとの間の優先順位の違いによって決まります。

優先順位が 0 のノードがプライマリになることはできません。

投票権のないノード(つまり、votes0 に設定されているノード)の優先順位は0 である必要があります。

members[n].tags

任意

: ドキュメント

デフォルト: なし

tags ドキュメントには、レプリカセットのユーザー定義タグ フィールドと値のペアが含まれています。

{ "<tag1>": "<string1>", "<tag2>": "<string2>",... }

詳しくは、「レプリカセットのタグセットの構成」を参照してください。

members[n].secondaryDelaySecs

任意

タイプ: 整数

デフォルト: 0

このレプリカセットがプライマリから "遅れる" 秒数。

遅延ノードを作成するにはこのオプションを使用します。遅延ノードは、過去のある時点におけるデータの状態を反映したデータのコピーを保持します。

遅延ノードは、"majority" 書込み保証votes (write0 concern) 付きで発行された書込み (write) 操作の確認に貢献できます。ただし、設定された遅延値よりも早く書込み (write) 確認応答が返されることはありません。 書込み保証 (write concern)で発行された書込み操作の場合、ノードは投票ノードでもある必要があります(つまり、 が より大きい場合)。

members[n].votes

任意

タイプ: 整数

デフォルト: 1

レプリカセット選挙においてサーバーが投じる投票数です。各ノードが持つ投票数は 1 または 0 で、アービタ は常にちょうど 1 票を持ちます。

が より大きいメンバーは、priority 00votesを持つことはできません。

レプリカセットには最大50 7メンバーを含めることができますが、投票メンバーは メンバーのみです。7 1 つのレプリカセットに を超えるノードが必要な場合は、追加の投票権のないノードのためにmembers[n].votes から0 を設定します。

投票権のない(すなわちvotes0 の)メンバーは、priority の0 を持っている必要があります。

MongoDB 5.0 以降では、新しく追加されたセカンダリは投票権のあるノードとしてカウントされず、SECONDARY 状態に達するまで選出されません。

投票権のないノードは、"majority" 書込み保証 (write concern) 付きで発行された書込み (write) 操作に確認応答できません。

settings

任意

: ドキュメント

レプリカセット全体に適用される構成オプションを含むドキュメントです。

settingsドキュメントには次のフィールドが含まれています。

settings.chainingAllowed

任意

タイプ: ブール値

デフォルト: true

MongoDB5.0.1 以前で、 が次の場合。settings.chainingAllowed

  • true: レプリカセットのセカンダリ ノードは、他のセカンダリ ノードからデータを複製できます。

  • false: セカンダリ ノードはプライマリからのみデータを複製できます。

MongoDB 5.0.2 以降

settings.getLastErrorDefaults

任意

: ドキュメント

MongoDB 5.0 以降では使用できません。

重要

MongoDB5.0 以降では、デフォルトの 以外の でデフォルトの書込み保証 (write concern)を指定することはできません。代わりに、settings.getLastErrorDefaults { w: 1, wtimeout: 0 }setDefaultRWConcernコマンドを使用して、レプリカセットまたはシャーディングされたクラスターのデフォルトの読み取りまたは書込み保証 (write concern)を設定します。

settings.getLastErrorModes

任意

: ドキュメント

の使用を通じて書込み保証 (write members[n].tagsconcern)を定義するために使用されるドキュメント。カスタム書込み保証 (write concern) は、データセンターの認識を提供できます。

{ getLastErrorModes: {
<name of write concern> : { <tag1>: <number>, .... },
...
} }

は、書込み保証<number> (write concern)を満たすために必要な異なるタグの値の数を示します。例、次のsettings.getLastErrorModes は、 という名前の書込み保証 (write concern)を定義し、datacenter dcタグの値が異なる 2 つのノードに書込みを伝播することを要求します。

{ getLastErrorModes: { datacenter: { "dc": 2 } } }

カスタム書込み保証 (write concern) を使用するには、書込み保証名を書込み保証 (write concern) 内のwオプションに渡します。例:

{ w: "datacenter" }

詳細と例については、「レプリカセットのタグセットの構成」を参照してください。

settings.heartbeatTimeoutSecs

任意

タイプ: int

デフォルト: 10

レプリカセットがお互いのハートビートが成功するまで待つ秒数です。あるノードが時間内に応答しない場合、他のノードは期限を過ぎたそのノードをアクセス不可としてマークします。

settings.electionTimeoutMillis

任意

タイプ: int

デフォルト: 10000(10 秒)

レプリカセットのプライマリが到達不能なときを検出するための時間制限(ミリ秒単位)。この設定は、protocolVersion: 1 を使用する場合のフェイルオーバーの区別を制御します。フェイルオーバータイムアウトはelectionTimeoutMillis の値を超えないことが予想されます。

値を選択する際には、次の点を考慮してください。

  • 値が大きいほどフェイルオーバーは遅くなりますが、プライマリ ノードやネットワークの速度低下やむらの影響を受けにくくなります。

  • 値が小さいほどフェイルオーバーは速くなりますが、プライマリ ノードやネットワークの速度低下やむらの影響を受けやすくなります。

この設定はprotocolVersion: 1 を使用する場合にのみ適用されます。

注意

force フィールドを true に設定せずに rs.stepDown() または replSetStepDown を使用してプライマリを降格すると、降格したプライマリは、選挙を直ちに呼び出す資格のあるセカンダリを指名します。

settings.catchUpTimeoutMillis

任意

タイプ: int

デフォルト: -1、キャッチアップ時間は無限。

新たに選出されたプライマリが、より新しい書込み (write) を行った可能性のある他のレプリカセットと同期(キャッチアップ)するまでの時間制限(ミリ秒単位)です。時間制限が無限の場合や長い場合には、選挙後に他のノードがロールバックする必要のあるデータ量は減りますが、フェイルオーバー時間は長くなる可能性があります。

新たに選出されたプライマリは、セットの他のノードに完全に追いつくと、キャッチアップ期間を早く終了します。キャッチアップ期間中は、新しく選出されたプライマリはクライアントからの書込み (write) に対応できません。キャッチアップを中止してプライマリへの移行を完了するには、replSetAbortPrimaryCatchUp を使用します。

この設定はprotocolVersion: 1 を使用する場合にのみ適用されます。

settings.catchUpTakeoverDelayMillis

任意

タイプ: int

デフォルト: 30000(30 秒)

ノードが現在のプライマリよりも進んでいると判断した後、キャッチアップ引き継ぎの開始を待つ時間(ミリ秒単位)です。キャッチアップ引き継ぎ中、現在のプライマリの進んだノードがレプリカセットの新しいプライマリになるための選挙を開始します。

引き継ぎを開始したノードが現在のプライマリよりも先行していると判断した後、指定されたミリ秒数待機してから、次のことを確認します。

  1. まだ現在のプライマリよりも進んでいること

  2. 利用可能な全ノードの中で最新のノードであること

  3. 現在のプライマリが現在、そのノードをキャッチアップしていること

これらの条件をすべて満たしていると判断すると、引き継ぎを開始したノードは直ちに選挙に立候補します。

レプリカセット選挙の詳細については、「レプリカセット選挙」を参照してください。

注意

catchUpTakeoverDelayMillis-1を に設定すると、キャッチアップ引き継ぎが無効になります。 をcatchUpTimeoutMillis 0に設定すると、プライマリのキャッチアップが無効になり、キャッチアップの引き継ぎも無効になります。

settings.heartbeatIntervalMillis

内部でのみ使用します

ハートビートの頻度(ミリ秒単位)。

settings.replicaSetId

: ObjectId

レプリカセットに関連付けられ、rs.initiate()または replSetInitiate 中に自動的に作成された ObjectId 。 replicaSetId は変更できません。