ApsaraDB for MongoDB のレプリカセットインスタンスは、プライマリノード、セカンダリノード、および読み取り専用ノード用に個別のエンドポイントを提供します。また、アプリケーション接続用に、ConnectionStringURI、ConnectionStringURI SRV、ReadOnly ConnectionStringURI などの高可用性接続文字列 URI も提供します。このトピックでは、これらのエンドポイントの取得方法と接続手順について説明します。
エンドポイントの詳細
エンドポイントの選択
本番環境では、負荷分散と高可用性を確保するために、ConnectionStringURI または ConnectionStringURI SRV アドレスを使用してインスタンスに接続します。インスタンスに読み取り専用ノードがある場合、読み取り操作のみを実行するアプリケーションは、ReadOnly ConnectionStringURI アドレスを使用してインスタンスに接続する必要があります。プライマリ/セカンダリのスイッチオーバーによってノードのロールが変更される可能性があるため、単一ノードのエンドポイントでインスタンスに接続することは推奨されません。次の表に、エンドポイントタイプの違いを示します。
エンドポイントのタイプ
アドレスタイプ | 説明 |
ConnectionStringURI SRV アドレス (推奨) | MongoDB では、SRV は接続文字列を簡素化し、レプリカセットクラスター内のメンバーの自動検出をサポートする DNS レコードタイプです。 レプリカセットインスタンスにノードを追加または削除する場合、SRV アドレスを使用すると、変更を意識することなくインスタンスと対話できます。これにより、アプリケーションの設計とメンテナンスが簡素化されます。 重要
|
ConnectionStringURI アドレス | ConnectionStringURI アドレスは、負荷分散と高可用性を提供します。このアドレスには、インスタンス内のすべてのノードのアドレスが含まれています。このアドレスに接続して、データベースに対する読み取りおよび書き込み操作を実行できます。 重要
|
ReadOnly ConnectionStringURI アドレス | ReadOnly ConnectionStringURI アドレスには、インスタンス内のすべての読み取り専用ノードのアドレスのみが含まれます。このアドレスに接続すると、読み取りリクエストは読み取り専用ノードに送信され、書き込みリクエストはプライマリノードに送信されます。 説明
|
プライマリアドレス | プライマリノードのエンドポイント。このアドレスに接続して、データベースに対する読み取りおよび書き込み操作を実行できます。 重要 本番環境のアプリケーションをこのアドレスを使用してインスタンスに接続しないでください。インスタンスに対してプライマリ/セカンダリのスイッチオーバーがトリガーされると、プライマリノードのアドレスが変更されます。読み取りおよび書き込み操作が影響を受けないように、新しいプライマリノードに接続する必要があります。 |
セカンダリアドレス | セカンダリノードのエンドポイント。このアドレスに接続して、データベースに対する読み取り操作のみを実行できます。 重要 本番環境のアプリケーションをこのアドレスを使用してインスタンスに接続しないでください。インスタンスに対してプライマリ/セカンダリのスイッチオーバーがトリガーされると、セカンダリノードがプライマリノードに昇格する可能性があります。プライマリノードのアドレスは書き込み操作をサポートしているため、データと権限のセキュリティ問題が発生する可能性があります。 |
読み取り専用アドレス | 読み取り専用ノードのエンドポイント。このアドレスに接続して、データベースに対する読み取り操作のみを実行できます。 説明 このアドレスは、インスタンスに読み取り専用ノードがある場合にのみ表示されます。 |
接続アドレスのフォーマット
ConnectionStringURI SRV アドレス
フォーマット:
mongodb+srv://<username>:<password>@<srv-host>/<database>?[authSource=<authenticationDatabase>][&readPreference=<readPreference_value>][&readPreferenceTags=<readonly_Tags>]<other_options>パラメーターの説明:
パラメーター | 説明 |
| 接続文字列のプレフィックス。サービスディスカバリに DNS SRV レコードが使用されることを示します。 |
| データベースアカウントの名前。 |
| データベースアカウントのパスワード。 |
| ホスト名。 |
| アクセスするデータベースの名前。デフォルト値は admin です。 |
| このパラメーターは、データベースアカウントが存在するデータベースを指定します。 説明 ApsaraDB for MongoDB の SRV 接続文字列の TXT レコードは |
| このパラメーターは、読み書き分離と負荷分散を実装します。書き込みリクエストをプライマリノードに送信し、読み取りリクエストをこのパラメーターで指定されたノードに送信します。有効な値:
説明 読み取りリクエストがセカンダリノードと読み取り専用ノードに送信される場合、負荷が不均等になる可能性があります。ノードをさらに指定するには、readPreferenceTags パラメーターを設定します。 |
| このパラメーターは、指定されたタグに一致するノードに読み取りリクエストを優先的に送信します。通常、readPreference パラメーターと共に使用され、
|
| その他のオプションパラメーター。 説明 SRV 接続の SSL オプションは、デフォルトで true です。SSL 暗号化接続を使用する必要がない場合は、接続文字列に |
MongoDB インスタンスでは、readPreference および readPreferenceTags パラメーターを使用できます。さまざまなタグを組み合わせることで、さまざまなシナリオの要件を満たすことができます。
読み取りリクエストのルーティングポリシー | 読み取りリクエストのターゲットノード | パラメーターの組み合わせ |
読み取りリクエストはプライマリノードにフォールバック可能 | 最初にプライマリノードから読み取る |
|
最初にセカンダリノードと読み取り専用ノードから読み取る |
| |
最初にセカンダリノードから読み取る 説明 セカンダリノードに障害が発生した場合、読み取りリクエストはプライマリノードに送信されます。 |
| |
最初に読み取り専用ノードから読み取る 説明 読み取り専用ノードに障害が発生した場合、読み取りリクエストはプライマリノードに送信されます。 |
| |
読み取りリクエストはプライマリノードにフォールバックしない | セカンダリノードと読み取り専用ノードからのみ読み取る |
|
セカンダリノードからのみ読み取る 説明 利用可能なすべてのセカンダリノードに障害が発生した場合、読み取り操作は失敗します。 |
| |
読み取り専用ノードからのみ読み取る 説明 利用可能なすべての読み取り専用ノードに障害が発生した場合、読み取り操作は失敗します。 |
|
例:
データベースアカウントは test で、admin データベースに属しています。
mongodb+srv://test:****@dds-bp19215393a0****-srv.mongodb.nosql.aliyuncs.com/admin?ssl=falseConnectionStringURI アドレス
フォーマット:
mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>][&readPreference=<readPreference_value>][&readPreferenceTags=<readonly_Tags>]パラメーターの説明:
パラメーター | 説明 |
| データベースアカウントの名前。デフォルト値は root です。 |
| データベースアカウントのパスワード。 |
| プライマリノード、セカンダリノード、および読み取り専用ノードの[ドメイン名]です。 |
| プライマリノード、セカンダリノード、および読み取り専用ノードの [ポート] |
| アクセスするデータベースの名前。デフォルト値は admin です。 |
| このパラメーターは、レプリカセットインスタンスのすべてのノードに読み取りリクエストを送信します。 |
| このパラメーターは、データベースアカウントが存在するデータベースを指定します。 |
| このパラメーターは、読み書き分離と負荷分散を実装します。書き込みリクエストをプライマリノードに送信し、読み取りリクエストをこのパラメーターで指定されたノードに送信します。有効な値:
説明 読み取りリクエストがセカンダリノードと読み取り専用ノードに送信される場合、負荷が不均等になる可能性があります。ノードをさらに指定するには、readPreferenceTags パラメーターを設定します。 |
| このパラメーターは、指定されたタグに一致するノードに読み取りリクエストを優先的に送信します。通常、readPreference パラメーターと共に使用され、
|
MongoDB インスタンスでは、readPreference および readPreferenceTags パラメーターを使用できます。さまざまなタグを組み合わせることで、さまざまなシナリオの要件を満たすことができます。
読み取りリクエストのルーティングポリシー | 読み取りリクエストのターゲットノード | パラメーターの組み合わせ |
読み取りリクエストはプライマリノードにフォールバック可能 | 最初にプライマリノードから読み取る |
|
最初にセカンダリノードと読み取り専用ノードから読み取る |
| |
最初にセカンダリノードから読み取る 説明 セカンダリノードに障害が発生した場合、読み取りリクエストはプライマリノードに送信されます。 |
| |
最初に読み取り専用ノードから読み取る 説明 読み取り専用ノードに障害が発生した場合、読み取りリクエストはプライマリノードに送信されます。 |
| |
読み取りリクエストはプライマリノードにフォールバックしない | セカンダリノードと読み取り専用ノードからのみ読み取る |
|
セカンダリノードからのみ読み取る 説明 利用可能なすべてのセカンダリノードに障害が発生した場合、読み取り操作は失敗します。 |
| |
読み取り専用ノードからのみ読み取る 説明 利用可能なすべての読み取り専用ノードに障害が発生した場合、読み取り操作は失敗します。 |
|
例:
mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****ReadOnly ConnectionStringURI アドレス
フォーマット:
mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,...,<hostN>:<portN>/<database>?readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=<replicaSet_value>[&authSource=<authenticationDatabase>]説明:
パラメーター | 説明 |
| データベースアカウントの名前。デフォルト値は root です。 |
| データベースアカウントのパスワード。 |
| 読み取り専用ノードの[ドメイン名] |
| 読み取り専用ノードの[ポート]。 |
| アクセスするデータベースの名前。デフォルト値は admin です。 |
| このパラメーターは、読み取りリクエストを読み取り専用ノードに送信します。 |
| このパラメーターは、レプリカセットインスタンスのすべてのノードに読み取りリクエストを送信します。 |
| このパラメーターは、データベースアカウントが存在するデータベースを指定します。 |
例:
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]説明:
パラメーター | 説明 |
| データベースアカウントの名前。 |
| データベースアカウントのパスワード。 |
| プライマリノードのドメイン名 |
| プライマリノードの[ポート] |
| アクセスするデータベースの名前。デフォルト値は admin です。 |
| リクエストが現在のエンドポイント (プライマリノード) にのみ送信されるように指定します。
|
例:
mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?directConnection=trueセカンダリ アドレス
フォーマット:
mongodb://<username>:<password>@<host>:<port>/<database>?[directConnection=true]説明:
パラメーター | 説明 |
| データベースアカウントの名前。 |
| データベースアカウントのパスワード。 |
| セカンダリノードのドメイン名。 |
| セカンダリノードの[ポート]です。 |
| アクセスするデータベースの名前。デフォルト値は admin です。 |
| リクエストが現在のエンドポイント (セカンダリノード) にのみ送信されるように指定します。
|
例:
mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?directConnection=true読み取り専用アドレス
フォーマット:
mongodb://<username>:<password>@<host>:<port>/<database>?[directConnection=true]説明:
パラメーター | 説明 |
| データベースアカウントの名前。 |
| データベースアカウントのパスワード。 |
| 読み取り専用ノードの[ドメイン名] |
| 読み取り専用ノードの [ポート] |
| アクセスするデータベースの名前。デフォルト値は admin です。 |
| リクエストが現在のエンドポイント (読み取り専用ノード) にのみ送信されるように指定します。
|
例:
mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?directConnection=true接続アドレスのネットワークタイプ
ネットワークタイプ | 説明 |
プライベートネットワーク |
|
パブリックネットワーク | インターネット経由でインスタンスに接続すると、セキュリティリスクが生じます。ApsaraDB for MongoDB インスタンスは、デフォルトではパブリックエンドポイントを提供しません。パブリックネットワーク経由で接続するには、手動でパブリックエンドポイントを申請できます。 |
データベースエンドポイントの取得
[レプリカセットインスタンス] ページに移動します。ページの上部でリソースグループとリージョンを選択し、対象のインスタンスの ID をクリックします。
インスタンス詳細ページの左側のナビゲーションウィンドウで、データベース接続 をクリックします。
MongoDB データベースへのログイン
次の情報を取得します。
データベースアカウント。初期アカウントは root です。
説明本番環境でデータベースに接続するために root アカウントを使用しないでください。データベースアカウントを作成し、権限を付与できます。
データベースアカウントのパスワード。パスワードを設定していない場合や忘れた場合は、パスワードをリセットできます。
アクセスするデータベース。データベースアカウントが root の場合、対応するデータベースは admin です。
データベースにログインします。次のいずれかの方法を使用できます。