rs.add()
項目一覧
定義
rs.add(host, arbiterOnly)
レプリカセットにノードを追加します。メソッドを実行するには、レプリカセットのプライマリに接続する必要があります。
Parameterタイプ説明host
文字列またはドキュメントレプリカセットに追加する新しいノード。文字列または構成ドキュメントとして指定します。
ドキュメントの場合は、
members
配列にあるレプリカセット ノード構成ドキュメントを指定します。ノード構成ドキュメントでhost
フィールドを指定する必要があります。{ _id: <int>, host: <string>, // required arbiterOnly: <boolean>, buildIndexes: <boolean>, hidden: <boolean>, priority: <number>, tags: <document>, secondaryDelaySecs: <int>, votes: <number> } 構成フィールドの説明については、
members
を参照してください。文字列の場合は、新しいノードのホスト名と、オプションでポート番号を指定します。
arbiterOnly
ブール値任意。<host>
値が文字列の場合にのみ適用されます。true
の場合、追加されたホストはアービタです。rs.add()
は、replSetReconfig
データベースコマンドと対応するmongosh
ヘルパーrs.reconfig()
の一部の機能を呼び出すラッパーを提供します。 すべてのレプリカセット構成オプションを網羅したドキュメントについては、自己管理型レプリカセット構成のドキュメントを参照してください。
IP バインディング
警告
非ローカルホスト(例: (一般にアクセス可能な)IP アドレスを使用して、クラスターを不正アクセスから保護していることを確認します。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。
MongoDB バイナリ(mongod
と mongos
)は、デフォルトで localhost にバインドされます。バイナリに net.ipv6
構成ファイルや --ipv6
コマンド ライン オプションが設定されている場合、バイナリはローカルホストの IPv6 アドレスに追加でバインドされます。
デフォルトでは、localhost にバインドされている mongod
と mongos
は、同じコンピューター上で実行中のクライアントによる接続のみを受け入れます。このバインディング動作には、mongosh
や、レプリカセットやシャーディングされたクラスターのノードなどが含まれます。リモート クライアントは、ローカルホストのみにバインドされているバイナリには接続できません。
デフォルトのバインドをオーバーライドして、他の IP アドレスにバインドするには、net.bindIp
構成ファイル設定や --bind_ip
コマンド ライン オプションを使用して、ホスト名または IP アドレスのリストを指定します。
警告
MongDB5.0 以降、 スプリットホライズンDNS IP アドレスのみが設定されているノードは起動時の検証に失敗し、エラーを報告します。詳しくはdisableSplitHorizonIPCheck
を参照してください。
たとえば、次の mongod
インスタンスは、IP アドレス 198.51.100.1
に関連付けられているローカルホストとホスト名 My-Example-Associated-Hostname
の両方にバインドします。
mongod --bind_ip localhost,My-Example-Associated-Hostname
このインスタンスに接続するには、リモート クライアントはホスト名またはそれに関連付けられた IP アドレス198.51.100.1
を指定する必要があります。
mongosh --host My-Example-Associated-Hostname mongosh --host 198.51.100.1
重要
IP アドレスの変更による構成の更新を防ぐには、IP アドレスの代わりに DNS ホスト名を使用します。レプリカセット ノードまたはシャーディングされたクラスター ノードを設定するときは、IP アドレスではなく DNS ホスト名を使用することが特に重要です。
分裂されたネットワーク ホライズン全体でクラスターを構成するには、IP アドレスの代わりにホスト名を使用します。 MongoDB 5.0以降、IP アドレスのみが設定されているノードは起動時の検証に失敗し、起動しません。
動作
rs.add()
は、場合によってはプライマリの選挙をtriggerして、 shellを切断することができます(現在のプライマリよりも優先順位の高い新しいノードを追加するなど)。 このような場合、操作が成功しても、 mongosh
にエラーが表示されることがあります。
警告
MongoDB 5.0 より前では、新しく追加されたセカンダリは、データの一貫性が確保されるまでは読み取りを処理できず、プライマリにもなれませんが、投票メンバーとしてカウントされます。MongoDB バージョン 5.0 より前のバージョンを実行中で、 votes
とpriority
の設定が0より大きいセカンダリを追加すると、投票ノードの過半数がオンラインであるにもかかわらずプライマリを選出できない状況が発生する可能性があります。このような状況を回避するには、最初にpriority :0
とvotes :0
を使用して新しいセカンダリを追加することを検討してください。次に、 rs.status()
を実行して、ノードがSECONDARY
状態に移行したことを確認します。最後に、 rs.reconfig()
を使用して優先順位と投票をアップデートします。
例
新しいレプリカセットへのセカンダリの追加
デフォルトの投票設定と優先順位設定を持つ新しいセカンダリ ノードを新しいレプリカセットに追加するには、以下のように rs.add()
メソッドを呼び出します。
ノード構成ドキュメント
rs.add( { host: "mongodbd4.example.net:27017" } ) ホスト名
rs.add( "mongodbd4.example.net:27017" )
既存のレプリカセットへのセカンダリの追加
既存のレプリカセットに、デフォルトの投票と優先順位設定を持つ新しいセカンダリ ノードを追加します。
rs.add( { host: "mongodbd4.example.net:27017" } )
警告
MongoDB 5.0 より前では、新しく追加されたセカンダリは、データの一貫性が確保されるまでは読み取りを処理できず、プライマリにもなれませんが、投票メンバーとしてカウントされます。MongoDB バージョン 5.0 より前のバージョンを実行中で、 votes
とpriority
の設定が0より大きいセカンダリを追加すると、投票ノードの過半数がオンラインであるにもかかわらずプライマリを選出できない状況が発生する可能性があります。このような状況を回避するには、最初にpriority :0
とvotes :0
を使用して新しいセカンダリを追加することを検討してください。次に、 rs.status()
を実行して、ノードがSECONDARY
状態に移行したことを確認します。最後に、 rs.reconfig()
を使用して優先順位と投票をアップデートします。
レプリカ セットへの優先順位 0 のノードの追加
次の操作は、ホスト mongodb4.example.net
で実行され、デフォルトのポート 27017
でアクセス可能な mongod
インスタンスを、優先度 0 のセカンダリ ノードとして追加します。
rs.add( { host: "mongodbd4.example.net:27017", priority: 0 } )
ノード構成ドキュメントで members[n].host
フィールドを指定する必要があります。
使用可能なレプリカセット ノードの構成設定については、members
を参照してください。
レプリカセットへのアービタの追加
次の操作は、ホスト mongodb3.example.net
上で実行され、デフォルトのポート 27017
でアービタとしてアクセス可能な mongod
インスタンスを追加します。
ノード構成ドキュメント
rs.add( { host: "mongodb3.example.net:27017", arbiterOnly: true } ) ホスト名
rs.add("mongodb3.example.net:27017", true)
以下も参照してください。