MongoDB Atlas SRV接続文字列(mongodb+srv://)

MongoDB Atlasクラスター用のmongodb+srv://プロトコルの使用方法。DNS SRVレコード、レプリカの自動検出、Atlas固有の接続オプションを解説します。

MongoDB

詳細な説明

MongoDB AtlasとSRV接続

MongoDB Atlasはmongodb+srv://プロトコルを使用し、DNS SRVレコードを活用して個々のホスト名を列挙することなくクラスターメンバーを自動的に検出します。

標準形式 vs SRV形式

標準形式(各ホストを列挙):

mongodb://user:pass@shard1.example.com:27017,shard2.example.com:27017,shard3.example.com:27017/mydb?replicaSet=atlas-xxx&ssl=true

SRV形式(Atlas推奨):

mongodb+srv://user:pass@cluster0.abc123.mongodb.net/mydb?retryWrites=true&w=majority

SRV形式はより短く、読みやすく、DNS経由ですべてのクラスターノードを自動検出します。

SRVの仕組み

MongoDBドライバーがmongodb+srv://を検出すると、2つのDNSルックアップを実行します:

  1. SRVレコード_mongodb._tcp.cluster0.abc123.mongodb.net)— すべてのクラスターメンバーの実際のホスト名とポートを返す
  2. TXTレコードcluster0.abc123.mongodb.net)— デフォルトの接続オプション(例:authSource=admin&replicaSet=atlas-xxx)を返す

これにより、クラスターがノードの追加/削除やポートの変更を行っても、アプリケーションの接続文字列を更新する必要がありません。

Atlasダッシュボードからの接続文字列

MongoDB Atlasは接続文字列を自動生成します:

  1. Atlasクラスターに移動
  2. Connectをクリック
  3. ドライバー(Node.js、Pythonなど)を選択
  4. 接続文字列をコピーし、<password>を実際のパスワードに置換

一般的なAtlasオプション

mongodb+srv://user:pass@cluster0.abc123.mongodb.net/mydb?retryWrites=true&w=majority&appName=myapp
パラメータ 目的
retryWrites=true 失敗した書き込みを自動リトライ
w=majority ノードの過半数が書き込みを確認
appName=myapp Atlasモニタリングでアプリを識別
maxPoolSize=50 最大コネクションプールサイズ
readPreference=secondaryPreferred 可能な場合セカンダリから読み取り

重要な注意事項

  • ポート番号なし — SRV接続はDNS経由でポートを解決するため、ポートは省略します
  • TLSは常に有効 — AtlasはTLSを要求し、SRVプロトコルはデフォルトでTLSを有効にします
  • パスワードのエンコーディング — パスワード内の特殊文字はパーセントエンコードが必要です(このツールで自動処理されます)
  • IPアクセスリスト — AtlasではIPのホワイトリスト登録が必要です。開発では0.0.0.0/0を使用しますが、本番では特定のIPに制限してください

ユースケース

Node.js、Python、またはJavaアプリケーションから本番のMongoDB Atlasクラスターへの接続。自動ノード検出とTLSを活用した安全なクラウドデータベースアクセス。

試してみる — Connection String Builder

フルツールを開く