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

rs.add()

項目一覧

  • 定義
  • IP バインディング
  • 動作
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 アドレスにバインドする前に、クラスターを不正アクセスから保護する必要があります。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。

MongoDB バイナリ(mongodmongos)は、デフォルトで localhost にバインドされます。バイナリに net.ipv6 構成ファイルや --ipv6 コマンド ライン オプションが設定されている場合、バイナリはローカルホストの IPv6 アドレスに追加でバインドされます。

デフォルトでは、localhost にバインドされている mongodmongos は、同じコンピューター上で実行中のクライアントによる接続のみを受け入れます。このバインディング動作には、mongosh や、レプリカセットやシャーディングされたクラスターのノードなどが含まれます。リモート クライアントは、ローカルホストのみにバインドされているバイナリには接続できません。

デフォルトのバインドをオーバーライドして、他の IP アドレスにバインドするには、net.bindIp 構成ファイル設定や --bind_ip コマンド ライン オプションを使用して、ホスト名または IP アドレスのリストを指定します。

警告

たとえば、次の 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 より前のバージョンを実行中で、 votespriorityの設定が0より大きいセカンダリを追加すると、投票ノードの過半数がオンラインであるにもかかわらずプライマリを選出できない状況が発生する可能性があります。このような状況を回避するには、最初にpriority :0votes :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 より前のバージョンを実行中で、 votespriorityの設定が0より大きいセカンダリを追加すると、投票ノードの過半数がオンラインであるにもかかわらずプライマリを選出できない状況が発生する可能性があります。このような状況を回避するには、最初にpriority :0votes :0を使用して新しいセカンダリを追加することを検討してください。次に、 rs.status()を実行して、ノードがSECONDARY状態に移行したことを確認します。最後に、 rs.reconfig()を使用して優先順位と投票をアップデートします。

次の操作は、ホスト 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)

以下も参照してください。

戻る

複製