すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:レプリカセットインスタンスへの接続

最終更新日:Aug 26, 2026

ApsaraDB for MongoDB レプリカセットインスタンスは、プライマリノード、セカンダリノード、読み取り専用ノード用の個別のエンドポイントと、アプリケーション接続用の高可用性 ConnectionStringURI、ConnectionStringURI SRV、ReadOnly ConnectionStringURI を提供します。このトピックでは、これらのエンドポイントを取得し、インスタンスに接続する方法について説明します。

接続アドレス

エンドポイント選択

本番環境では、負荷分散と高可用性を確保するために、ConnectionStringURI または ConnectionStringURI SRV アドレスを使用してインスタンスに接続してください。インスタンスに読み取り専用ノードがある場合は、読み取り専用アプリケーションは ReadOnly ConnectionStringURI アドレスを使用して接続してください。フェールオーバーによりノードの役割が変わる可能性があるため、単一ノード接続アドレスは使用しないでください。接続タイプの違いについては、次の表をご参照ください。

エンドポイントタイプ

アドレスタイプ

説明

ConnectionStringURI SRV アドレス [推奨]

MongoDB では、SRV は MongoDB 接続文字列を簡素化し、レプリカセット内のメンバーの自動検出をサポートする DNS レコードタイプです。

レプリカセットインスタンスでノードが追加または削除された場合、SRV アドレスを使用することで、アプリケーションはインスタンスとシームレスにやり取りできます。これにより、アプリケーションの設計と保守が簡素化されます。

重要
  • デフォルトでは、SRV アドレスはコンソールに表示されません。利用するには、[データベース接続] ページに移動し、[プライベート SRV アドレスの申請] または [パブリック SRV アドレスの申請] をクリックします。

  • パブリック SRV アドレスを申請するには、まずインスタンスのパブリックアドレスを有効にする必要があります。

  • SRV アドレスは、クラウドディスクを使用するインスタンスでのみサポートされています。

  • 本番環境のアプリケーションでは、ConnectionStringURI SRV アドレスを使用してデータベースに接続することを推奨します。クライアントは、負荷分散のためにインスタンスの複数のノードにリクエストを自動的に分散します。ノードに障害が発生した場合、クライアントは自動的にフェイルオーバーを実行し、正常なノードにリクエストを送信します。

  • 古いバージョンのドライバーでは、SRV アドレスやノードの自動検出がサポートされていない場合があります。例:

    • pymongo 3.9.0 より前のバージョン。

    • mongo-java-driver 3.10.0 より前のバージョン。

    • mongodb-go-driver 1.1.0 より前のバージョン。

    • MongoDB Node.js driver 3.3.0 より前のバージョン。

    • mongo-cxx-driver 3.8. より前のバージョン。

ConnectionStringURI アドレス

ConnectionStringURI アドレスは、負荷分散と高可用性を提供します。インスタンス内のすべてのノードのアドレスが含まれており、データベースに対して読み書き操作を実行できます。ドライバーのバージョンが SRV アドレスやノードの自動検出をサポートしていない場合は、このアドレスを使用してください。

重要
  • 本番環境のアプリケーションでは、ConnectionStringURI アドレスを使用してインスタンスに接続することを推奨します。これにより、フェイルオーバーがアプリケーションの読み書き操作に影響を及ぼすのを防ぎます。

  • readPreference および readPreferenceTags パラメーターが設定されていない場合、クライアントは読み取りリクエストをプライマリーノードに送信します。

  • レプリカセットインスタンスでノードを追加または削除した後は、これらの変更を反映するために接続文字列を更新する必要があります。

読み取り専用 ConnectionStringURI アドレス

読み取り専用 ConnectionStringURI アドレスには、インスタンス内のすべての読み取り専用ノードのアドレスのみが含まれます。このアドレスに接続すると、クライアントは読み取りリクエストを読み取り専用ノードに送信し、書き込みリクエストをプライマリーノードに送信します。

説明
  • インスタンスに読み取り専用ノードがある場合、読み取り専用アプリケーションではこのアドレスを使用してインスタンスに接続することを推奨します。

  • 読み取り専用 ConnectionStringURI アドレスは、インスタンスに読み取り専用ノードがある場合にのみ表示されます。

  • インスタンス内の読み取り専用ノードに障害が発生した場合、読み取りリクエストは利用可能な別の読み取り専用ノードに自動的にリダイレクトされるため、アプリケーションの読み取り操作に影響はありません。すべての読み取り専用ノードに障害が発生した場合、このアドレスへの接続は失敗します。

プライマリーアドレス

プライマリーノードの接続アドレスです。このアドレスに接続して、データベースに対して読み書き操作を実行できます。

重要

本番環境のアプリケーションでは、このアドレスを使用してインスタンスに接続することは推奨しません。フェイルオーバー後、プライマリーノードアドレスが変更されます。読み書き操作の中断を避けるために、新しいプライマリーノードに接続する必要があります。

セカンダリーアドレス

セカンダリーノードの接続アドレスです。このアドレスに接続して、データベースに対して読み取り操作のみを実行できます。

重要

本番環境のアプリケーションでは、このアドレスを使用してインスタンスに接続することは推奨しません。フェイルオーバー後、セカンダリーノードがプライマリーに昇格する可能性があります。アプリケーションがこのアドレスを引き続き使用すると、プライマリーノードに接続する可能性があり、権限の競合や意図しない書き込み操作につながる恐れがあります。

読み取り専用アドレス

読み取り専用ノードの接続アドレスです。このアドレスに接続して、データベースに対して読み取り操作のみを実行できます。

説明

このアドレスは、インスタンスに読み取り専用ノードがある場合にのみ表示されます。

接続アドレスのフォーマット

ConnectionStringURI SRV アドレス

フォーマット:

mongodb+srv://<username>:<password>@<srv-host>/<database>?[authSource=<authenticationDatabase>][&readPreference=<readPreference_value>][&readPreferenceTags=<readonly_Tags>]<other_options>

パラメータ:

パラメータ

説明

mongodb+srv://

サービスディスカバリーに DNS SRV レコードを使用することを示す接続文字列のプレフィックスです。

<username>

データベースアカウントの名前です。

<password>

データベースアカウントのパスワードです。

<srv-host>

ホスト名です。

<database>

アクセスするデータベースです。デフォルト: admin。

authSource=<authenticationDatabase> (オプション)

このパラメータは、データベースアカウントが属するデータベースを指定します。<authenticationDatabase> は認証データベースの名前です。

説明

ApsaraDB for MongoDB の SRV 接続文字列では、TXT レコードで authSource=admin が指定されており、これが <database> の認証属性をオーバーライドします。認証データベースを変更する場合は、<database> パラメータを変更するのではなく、明示的に authSource=<authenticationDatabase> を設定する必要があります。詳細については、「MongoDB 公式ドキュメント」をご参照ください。

readPreference=[primary | primaryPreferred | secondary | secondaryPreferred] (オプション)

このパラメータは、読み書き分離と負荷分散を有効にします。書き込みリクエストをプライマリーノードに、読み取りリクエストを指定されたノードタイプにルーティングします。有効な値:

  • readPreference=primary:読み取りリクエストをプライマリーノードのみにルーティングします。

  • readPreference=primaryPreferred:読み取りリクエストを最初にプライマリーノードにルーティングします。プライマリーノードが利用できない場合、リクエストはセカンダリノードおよび読み取り専用ノードにルーティングされます。

  • readPreference=secondary:読み取りリクエストをセカンダリノードおよび読み取り専用ノードのみにルーティングします。すべてのセカンダリノードおよび読み取り専用ノードが利用できない場合、リクエストは失敗し、プライマリーノードにはルーティングされません。

  • readPreference=secondaryPreferred:読み取りリクエストを最初にセカンダリノードおよび読み取り専用ノードにルーティングします。すべてのセカンダリノードおよび読み取り専用ノードが利用できない場合、リクエストはプライマリーノードにルーティングされます。

説明

読み取りリクエストがセカンダリノードおよび読み取り専用ノードにルーティングされる場合、負荷が不均一になる可能性があります。ノードをさらに指定するには、readPreferenceTags パラメータを設定してください。

readPreferenceTags=<readonly_Tags> (オプション)

このパラメータは、指定されたタグに一致するノードに読み取りリクエストを優先的にルーティングします。通常、readPreference パラメータと組み合わせて使用します。primary モードとは互換性がありません。<readonly_Tags> は、読み取り専用ノードのキーと値のペアのタグのリストです。サポートされるタイプ:

  • readPreferenceTags=role:electable:読み取りリクエストをセカンダリノードへ優先的にルーティングします。

    説明

    このオプションは、クラウドディスクインスタンスでのみ有効です。

  • readPreferenceTags=role:readonly:読み取りリクエストを読み取り専用ノードへ優先的にルーティングします。

<other_options>

その他のオプションパラメータです。

説明

SRV 接続の SSL オプションは、デフォルトで true です。SSL 暗号化を無効にするには、接続文字列に ssl=false パラメータを追加してください。オプションパラメータの詳細については、「MongoDB 公式ドキュメント」をご参照ください。

さまざまなシナリオに合わせて、readPreferencereadPreferenceTags パラメータを組み合わせることができます:

フェールオーバー動作

優先ノード

パラメータの組み合わせ

優先ノードからの読み取りが失敗した場合、読み取りリクエストをプライマリーノードにルーティングする

プライマリーノードを優先

readPreference=primaryPreferred

セカンダリーノードと読み取り専用ノードを優先

readPreference=secondaryPreferred

セカンダリーノードを優先

説明

セカンダリーノードが利用できない場合、読み取りリクエストはプライマリーノードにフェールオーバーします。

readPreference=secondaryPreferred&readPreferenceTags=role:electable

読み取り専用ノードを優先

説明

読み取り専用ノードが利用できない場合、読み取りリクエストはプライマリーノードにフェールオーバーします。

readPreference=secondaryPreferred&readPreferenceTags=role:readonly

優先ノードからの読み取りが失敗した場合、読み取りリクエストをプライマリーノードにルーティングしない

セカンダリーノードと読み取り専用ノードからのみ読み取る

readPreference=secondary

セカンダリーノードからのみ読み取る

説明

セカンダリーノードが利用できない場合、読み取り操作は失敗します。

readPreference=secondary&readPreferenceTags=role:electable

読み取り専用ノードからのみ読み取る

説明

読み取り専用ノードが利用できない場合、読み取り操作は失敗します。

readPreference=secondary&readPreferenceTags=role:readonly

例:

この例では、'test' データベースアカウントを使用して 'admin' データベースに接続します。

mongodb+srv://test:****@dds-bp19215393a0****-srv.mongodb.nosql.aliyuncs.com/admin?ssl=false

接続文字列 URI

フォーマット:

mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>][&readPreference=<readPreference_value>][&readPreferenceTags=<readonly_Tags>]

パラメータ:

パラメータ

説明

<username>

データベースアカウントのユーザー名です。デフォルト:root。

<password>

データベースアカウントのパスワードです。

<host>

プライマリーノード、セカンダリーノード、および読み取り専用ノードの[ドメイン名のリスト]です。

<port>

プライマリーノード、セカンダリーノード、および読み取り専用ノードの[ポートのリスト]です。

<database>

アクセスするデータベースです。デフォルト:admin。

replicaSet=<replicaSet_value>

読み取りリクエストをレプリカセットインスタンス内のすべてのノードにルーティングします。<replicaSet_value> は、インスタンスの高可用性エンドポイントの一意の ID です。

authSource=<authenticationDatabase> (オプション)

データベースアカウントが定義されている認証データベースを指定します。<authenticationDatabase> は認証データベースの名前です。省略した場合、認証データベースはデフォルトで <database> の値になります。

readPreference=[primary | primaryPreferred | secondary | secondaryPreferred] (オプション)

このパラメータは、読み書き分離と負荷分散を有効にします。書き込みリクエストをプライマリーノードにルーティングし、読み取りリクエストを指定されたノードタイプにルーティングします。有効な値:

  • readPreference=primary:読み取りリクエストをプライマリーノードにのみルーティングします。

  • readPreference=primaryPreferred:読み取りリクエストをまずプライマリーノードにルーティングします。プライマリーノードが利用できない場合、リクエストはセカンダリーノードおよび読み取り専用ノードにルーティングされます。

  • readPreference=secondary:読み取りリクエストをセカンダリーノードおよび読み取り専用ノードにのみルーティングします。すべてのセカンダリーノードおよび読み取り専用ノードが利用できない場合、リクエストは失敗し、プライマリーノードにはルーティングされません。

  • readPreference=secondaryPreferred:読み取りリクエストをまずセカンダリーノードおよび読み取り専用ノードにルーティングします。すべてのセカンダリーノードおよび読み取り専用ノードが利用できない場合、リクエストはプライマリーノードにルーティングされます。

説明

読み取りリクエストがセカンダリーノードおよび読み取り専用ノードにルーティングされる際、負荷が不均一になる場合があります。ノードをさらに指定するには、readPreferenceTags パラメータを設定します。

readPreferenceTags=<readonly_Tags> (オプション)

このパラメータは、指定されたタグに一致するノードに最初に読み取りリクエストをルーティングします。通常、readPreference パラメータと共に使用され、primary モードとは互換性がありません。<readonly_Tags> は、ノードを特定するためのキーと値のペアのタグのリストです。サポートされているタイプ:

  • readPreferenceTags=role:electable:読み取りリクエストに対してセカンダリーノードを優先します。

    説明

    このオプションは、クラウドディスクインスタンスでのみ有効です。

  • readPreferenceTags=role:readonly:読み取りリクエストに対して読み取り専用ノードを優先します。

さまざまなシナリオに合わせて、readPreferencereadPreferenceTags パラメータを組み合わせることができます:

フェールオーバー動作

優先ノード

パラメータの組み合わせ

優先ノードからの読み取りが失敗した場合、読み取りリクエストをプライマリーノードにルーティングする

プライマリーノードを優先

readPreference=primaryPreferred

セカンダリーノードと読み取り専用ノードを優先

readPreference=secondaryPreferred

セカンダリーノードを優先

説明

セカンダリーノードが利用できない場合、読み取りリクエストはプライマリーノードにフェールオーバーします。

readPreference=secondaryPreferred&readPreferenceTags=role:electable

読み取り専用ノードを優先

説明

読み取り専用ノードが利用できない場合、読み取りリクエストはプライマリーノードにフェールオーバーします。

readPreference=secondaryPreferred&readPreferenceTags=role:readonly

優先ノードからの読み取りが失敗した場合、読み取りリクエストをプライマリーノードにルーティングしない

セカンダリーノードと読み取り専用ノードからのみ読み取る

readPreference=secondary

セカンダリーノードからのみ読み取る

説明

セカンダリーノードが利用できない場合、読み取り操作は失敗します。

readPreference=secondary&readPreferenceTags=role:electable

読み取り専用ノードからのみ読み取る

説明

読み取り専用ノードが利用できない場合、読み取り操作は失敗します。

readPreference=secondary&readPreferenceTags=role:readonly

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****

読み取り専用 接続文字列 URI

フォーマット:

mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>]

パラメーター:

パラメーター

説明

<username>

データベースアカウントの名前です。デフォルト: root。

<password>

データベースアカウントのパスワードです。

<host>

読み取り専用ノードの [ドメイン名] です。

<port>

読み取り専用ノードの [ポート] です。

<database>

アクセスするデータベースです。デフォルト: admin。

readPreference=secondary&readPreferenceTags=role:readonly

このパラメーターは、読み取りリクエストを読み取り専用ノードにルーティングします。readPreferenceTags は、読み取り専用ノードのキーと値のペアのタグのリストを指定します。この接続タイプでは、値を role:readonly にする必要があります。

replicaSet=<replicaSet_value>

レプリカセットの名前を指定します。<replicaSet_value> は、インスタンスの高可用性エンドポイントの一意の ID です。

authSource=<authenticationDatabase> (オプション)

データベースアカウントが定義されている認証データベースを指定します。<authenticationDatabase> は、認証データベースの名前です。このパラメーターを指定しない場合、<database> が認証データベースとして使用されます。

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=mgset-6108****

プライマリアドレス

フォーマット:

mongodb://<username>:<password>@<host>:<port>/<database>?[directConnection=true]

パラメーター:

パラメーター

説明

<username>

データベースアカウントのユーザー名です。

<password>

データベースアカウントのパスワードです。

<host>

プライマリーノードの [ドメイン名] です。

<port>

プライマリーノードの [ポート] です。

<database>

アクセス先のデータベースです。デフォルト: admin。

directConnection=true (任意)

リクエストを現在のエンドポイント (プライマリーノード) にのみ送信します。

  • このパラメーターを true に設定した場合、すべての読み取りおよび書き込みリクエストはプライマリーノードに送信されます。

  • このパラメーターを指定しないか、false に設定した場合、読み取りリクエストは他のノードに転送されることがあります。

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?directConnection=true

セカンダリ アドレス

フォーマット:

mongodb://<username>:<password>@<host>:<port>/<database>?[directConnection=true]

パラメーター:

パラメーター

説明

<username>

データベースアカウントのユーザー名です。

<password>

データベースアカウントのパスワードです。

<host>

セカンダリノードの [ドメイン名] です。

<port>

セカンダリノードの [ポート] です。

<database>

アクセスするデータベースです。デフォルトは admin です。

directConnection=true (オプション)

リクエストを現在のエンドポイント (セカンダリノード) にのみ送信します。

  • true に設定すると、ノードは書き込みリクエストを拒否します。

  • このパラメーターを省略するか、false に設定した場合、書き込みリクエストはプライマリノードに転送されます。

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?directConnection=true

読み取り専用アドレス

フォーマット:

mongodb://<username>:<password>@<host>:<port>/<database>?[directConnection=true]

パラメーター:

パラメーター

説明

<username>

データベースアカウントのユーザー名です。

<password>

データベースアカウントのパスワードです。

<host>

読み取り専用ノードの[ドメイン名]です。

<port>

読み取り専用ノードの[ポート]です。

<database>

アクセスするデータベースです。デフォルトは admin です。

directConnection=true (オプション)

リクエストを現在のエンドポイント (読み取り専用ノード) にのみ送信します。

  • true に設定すると、ノードは書き込みリクエストを拒否します。

  • このパラメーターを省略するか、false に設定した場合、書き込みリクエストはプライマリーノードに転送されます。

例:

mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?directConnection=true

エンドポイントネットワークタイプ

ネットワークタイプ

説明

プライベートネットワーク

  • VPC:VPC は、セキュリティとパフォーマンスが向上した分離されたネットワークです。デフォルトでは、ApsaraDB for MongoDB インスタンスは VPC エンドポイントを提供します。

  • クラシックネットワーク:保護のためにセキュリティグループまたはホワイトリストのみに依存する、分離されていないネットワークです。新しいインスタンスではクラシックネットワークはサポートされなくなりました。詳細については、「通知:ApsaraDB for MongoDB の新規インスタンスにおけるクラシックネットワークのサポート終了」をご参照ください。

パブリックネットワーク

パブリックネットワーク経由でインスタンスに接続すると、セキュリティリスクが生じます。デフォルトでは、ApsaraDB for MongoDB インスタンスはパブリックエンドポイントを提供しません。パブリックネットワーク経由で接続する必要がある場合は、手動でパブリックエンドポイントを申請できます。

データベースエンドポイント

  1. MongoDB レプリカセットインスタンス ページに移動し、リソースグループとリージョンを選択して、ターゲットインスタンスをクリックします。

  2. ナビゲーションペインで、データベース接続 をクリックします。

MongoDB データベースへの接続

  1. 次の情報を取得します:

  2. 次のいずれかの方法でデータベースに接続します:

一般的な接続シナリオ

よくある質問

クライアントが接続文字列に記載されていないノードにリクエストを送信するのはなぜですか

この動作は、MongoDB クライアントのサービス検出機能の一部であり、高可用性に不可欠です。この機能により、クライアントはプライマリノードの障害など、クラスタートポロジーの変更に自動的に適応し、サービス継続性を確保できます。接続文字列に directConnection=true を追加して、リクエストが単一のエンドポイントにのみ送信されることを指定できます。詳細については、「directConnection」をご参照ください。

例:

5 ノードインスタンスのクライアントエンドポイントが mongodb://root:xxx@dds-xxxxx1-pub.mongodb.rds.aliyuncs.com:3717,dds-xxxxx2-pub.mongodb.rds.aliyuncs.com:3717/admin と設定されている場合、クライアントは上記エンドポイントに含まれていない残りの 2 つのノード dds-xxxxx3-pub.mongodb.rds.aliyuncs.com:3717,dds-xxxxx4-pub.mongodb.rds.aliyuncs.com:3717 にもリクエストを送信し、そのステータスをモニターします。