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

ApsaraDB for MongoDB:レプリカセットインスタンスに接続し、読み書き分離と高可用性を実装する

最終更新日:Jun 13, 2024

ApsaraDB for MongoDB レプリカセットインスタンスは、データの高い信頼性を確保するためにデータの複数のコピーを提供します。 また、ApsaraDB for MongoDBの高可用性を保証する自動フェイルオーバーメカニズムも提供します。 高可用性を実装するには、正しい方法を使用してレプリカセットインスタンスに接続する必要があります。 読み書き分離用の接続を設定することもできます。

注意事項

  • レプリカセットインスタンスのプライマリノードが変更される場合があります。 プライマリノードとセカンダリノード間のフェイルオーバーは、レプリカセットインスタンスのノードが順番にアップグレードされたとき、プライマリノードに障害が発生したとき、またはネットワークが分割されたときに発生する可能性があります。 これらのシナリオでは、レプリカセットは新しいプライマリノードを選択し、元のプライマリノードをセカンダリノードにダウングレードできます。
  • レプリカセットインスタンスのプライマリノードがプライマリノードの接続文字列を介して直接接続されている場合、プライマリノードはすべての読み取りおよび書き込み操作を処理するために大きな負荷を負います。 レプリカセットインスタンスでフェイルオーバーがトリガーされ、接続されているプライマリノードがセカンダリノードにダウングレードされると、書き込み操作を実行できなくなり、ビジネスに深刻な影響を与えます。

接続文字列URI

レプリカセットインスタンスに正しく接続するには、MongoDBの接続文字列URIの形式を理解する必要があります。 あらゆる公式 drivers は、Connection string URI で MongoDB に接続することをサポートしています。

mongodb://[username:password @]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
接続文字列URIで使用されるパラメータ:
  • mongodb://: プレフィックス。接続文字列URIを示します。
  • username:password @: データベースへのログインに使用されるユーザー名とパスワード。 認証が有効になっている場合は、パスワードが必要です。
  • hostX:portX: レプリカセットインスタンス内のノードへの接続に使用される接続文字列のリスト。 各接続文字列は、IPアドレスおよびポート番号からなる。 複数の接続文字列はコンマ (,) で区切ります。
  • /database: 接続するデータベースの名前。 デフォルト値: admin。
  • ? オプション: インスタンスへの接続に使用される追加オプション。

    一般的なオプションはauthSource=<authenticationDatabase> です。 このパラメーターは、指定されたデータベースアカウントが属するデータベースを指定するために使用されます。 <authenticationDatabase>: 認証に使用されるデータベースの名前。 認証を成功させるには、指定されたデータベースアカウントが指定された認証データベースに属している必要があります。 認証データベースを指定しない場合は、<database> で指定したデータベースが認証データベースとして使用されます。

説明 接続文字列URIの詳細については、「接続文字列URI形式」をご参照ください。

Connection string URI を使用したレプリカセットインスタンスへの接続

接続文字列URIを使用して、レプリカセットインスタンスに接続できます。

  1. レプリカセットインスタンスの Connection string URI を取得します。 詳細については、「レプリカセットインスタンス接続の概要」をご参照ください。
  2. 取得した Connection string URI を使用して、アプリケーションをインスタンスに接続します。 詳細は、MongoDB ドライバの接続サンプルコードをご参照ください。
    説明 読み書き分離では、optionsパラメーターにreadPreference=secondaryPreferredを追加して、読み取りプリファレンスをセカンダリノードに設定する必要があります。 読み取り設定オプションの詳細については、「読み取り設定」をご参照ください。

    例:

    データベースアカウントはtestで、データベースはadminです。
    mongodb:// test:**** @ dds-bp19f409d7512 **** .mongodb.rds.aliyuncs.com:3717、dds-bp19f409d7512 **** .mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108 ****&readPreference=secondaryPreferred

上記の方法を使用してレプリカセットインスタンスに接続すると、クライアントは読み取り要求をセカンダリノードに優先的に送信して、読み取り /書き込み分離を実装できます。 クライアントは、プライマリノードとセカンダリノードの関係も自動的に検出します。 プライマリノードが変更された場合、クライアントは書き込み操作を新しいプライマリノードに自動的に切り替えて、ApsaraDB for MongoDBの高可用性を確保します。