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ルックアップを実行します:
- SRVレコード(
_mongodb._tcp.cluster0.abc123.mongodb.net)— すべてのクラスターメンバーの実際のホスト名とポートを返す - TXTレコード(
cluster0.abc123.mongodb.net)— デフォルトの接続オプション(例:authSource=admin&replicaSet=atlas-xxx)を返す
これにより、クラスターがノードの追加/削除やポートの変更を行っても、アプリケーションの接続文字列を更新する必要がありません。
Atlasダッシュボードからの接続文字列
MongoDB Atlasは接続文字列を自動生成します:
- Atlasクラスターに移動
- Connectをクリック
- ドライバー(Node.js、Pythonなど)を選択
- 接続文字列をコピーし、
<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を活用した安全なクラウドデータベースアクセス。