全部产品
Search
文档中心

ApsaraDB for MongoDB:Hubungkan ke instans set replika

更新时间:Dec 04, 2025

Instans set replika ApsaraDB for MongoDB menyediakan titik akhir terpisah untuk node primary, secondary, dan read-only, serta URI string koneksi berdaya tinggi seperti ConnectionStringURI, ConnectionStringURI SRV, dan ReadOnly ConnectionStringURI untuk koneksi aplikasi. Topik ini menjelaskan cara memperoleh titik akhir tersebut dan memberikan petunjuk koneksi.

Detail titik akhir

Pilih titik akhir

Dalam lingkungan produksi, hubungkan ke instans Anda menggunakan alamat ConnectionStringURI atau ConnectionStringURI SRV untuk memastikan load balancing dan ketersediaan tinggi. Jika instans Anda memiliki node read-only, aplikasi yang hanya melakukan operasi baca sebaiknya terhubung melalui ReadOnly ConnectionStringURI. Menghubungkan ke instans melalui titik akhir node tunggal tidak disarankan karena failover primary/secondary dapat mengubah peran suatu node. Tabel berikut menjelaskan perbedaan antar jenis titik akhir.

Jenis titik akhir

Jenis alamat

Deskripsi

Alamat ConnectionStringURI SRV (Direkomendasikan)

Dalam MongoDB, SRV adalah tipe rekaman DNS yang menyederhanakan string koneksi dan mendukung penemuan otomatis anggota dalam kluster set replika.

Saat Anda menambahkan atau menghapus node dari instans set replika, Anda dapat menggunakan alamat SRV untuk berinteraksi dengan instans tanpa menyadari perubahan tersebut. Hal ini menyederhanakan desain dan maintenance aplikasi.

Penting
  • Secara default, Konsol tidak menampilkan alamat SRV. Untuk menggunakannya, klik Request Private SRV Address atau Request Public SRV Address pada halaman Database Connection.

  • Sebelum meminta alamat SRV publik, Anda harus terlebih dahulu mengaktifkan titik akhir publik untuk instans tersebut.

  • Alamat SRV hanya didukung untuk instans yang menggunakan disk.

  • Aplikasi dalam lingkungan produksi sebaiknya terhubung ke database menggunakan alamat ConnectionStringURI SRV. Client secara otomatis mengirim permintaan ke beberapa node instans untuk menerapkan load balancing. Jika suatu node gagal, client secara otomatis melakukan failover dan mengirim permintaan ke node yang sehat. Saat Anda menambahkan atau menghapus node, Anda dapat berinteraksi dengan kluster tanpa menyadari perubahan tersebut. Hal ini menyederhanakan desain dan maintenance aplikasi.

  • Alamat SRV atau penemuan otomatis node tidak didukung oleh versi driver lama, seperti:

    • pymongo versi sebelum 3.9.0.

    • mongo-java-driver versi sebelum 3.10.0.

    • mongodb-go-driver versi sebelum 1.1.0.

    • mongodb node.js versi sebelum 3.3.0.

    • mongo-cxx-driver versi sebelum 3.8.

Alamat ConnectionStringURI

Alamat ConnectionStringURI menyediakan load balancing dan ketersediaan tinggi. Alamat ini berisi alamat semua node dalam instans. Anda dapat terhubung ke alamat ini untuk melakukan operasi baca dan tulis pada database.

Penting
  • Aplikasi dalam lingkungan produksi sebaiknya terhubung ke instans menggunakan alamat ConnectionStringURI. Hal ini memastikan bahwa operasi baca dan tulis tidak terpengaruh oleh alih bencana primary/secondary.

  • Jika parameter readPreference dan readPreferenceTags tidak diatur, permintaan baca dikirim ke node primary.

  • Saat Anda menambahkan atau menghapus node dari instans set replika, Anda harus memodifikasi string koneksi ini untuk menambahkan atau menghapus informasi koneksi node yang sesuai.

Alamat ReadOnly ConnectionStringURI

Alamat ReadOnly ConnectionStringURI hanya berisi alamat semua node read-only dalam instans. Saat Anda terhubung ke alamat ini, permintaan baca dikirim ke node read-only, dan permintaan tulis dikirim ke node primary.

Catatan
  • Jika instans Anda memiliki node read-only, aplikasi yang hanya melakukan operasi baca sebaiknya terhubung ke instans menggunakan alamat ini.

  • Anda hanya dapat melihat alamat ReadOnly ConnectionStringURI jika instans memiliki node read-only.

  • Jika suatu node read-only dalam instans gagal, permintaan baca secara otomatis dialihkan ke node read-only berikutnya. Hal ini tidak memengaruhi operasi baca aplikasi Anda. Jika semua node read-only gagal, terjadi error koneksi jika Anda tetap menggunakan titik akhir ini.

Alamat Primary

Titik akhir node primary. Anda dapat terhubung ke alamat ini untuk melakukan operasi baca dan tulis pada database.

Penting

Jangan menghubungkan aplikasi dalam lingkungan produksi ke instans menggunakan alamat ini. Saat alih bencana primary/secondary dipicu untuk instans, alamat node primary berubah. Anda harus terhubung ke node primary baru untuk memastikan operasi baca dan tulis tidak terganggu.

Alamat Secondary

Titik akhir node secondary. Anda dapat terhubung ke alamat ini untuk hanya melakukan operasi baca pada database.

Penting

Jangan menghubungkan aplikasi dalam lingkungan produksi ke instans menggunakan alamat ini. Saat alih bencana primary/secondary dipicu untuk instans, node secondary dapat dipromosikan menjadi node primary. Alamat node primary mendukung operasi tulis, yang dapat menyebabkan masalah keamanan data dan izin.

Alamat ReadOnly

Titik akhir node read-only. Anda dapat terhubung ke alamat ini untuk hanya melakukan operasi baca pada database.

Catatan

Alamat ini hanya ditampilkan saat instans memiliki node read-only.

Format alamat koneksi

Alamat ConnectionStringURI SRV

Format:

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

Deskripsi parameter:

Parameter

Deskripsi

mongodb+srv://

Awalan string koneksi. Menunjukkan bahwa rekaman DNS SRV digunakan untuk penemuan layanan.

<username>

Nama akun database.

<password>

Kata sandi akun database.

<srv-host>

Hostname.

<database>

Nama database yang akan diakses. Nilai default adalah admin.

authSource=<authenticationDatabase> (Opsional)

Parameter ini menentukan database tempat akun database berada. <authenticationDatabase> adalah nama database otentikasi.

Catatan

Rekaman TXT dari string koneksi SRV untuk ApsaraDB for MongoDB menentukan authSource=admin. Ini menggantikan properti autentikasi dari <database>. Oleh karena itu, untuk mengubah database otentikasi, Anda harus secara manual menentukan authSource=<authenticationDatabase> alih-alih mengubah parameter <database>. Untuk informasi lebih lanjut, lihat dokumentasi resmi MongoDB.

readPreference=[primary | primaryPreferred | secondary | secondaryPreferred] (Opsional)

Parameter ini menerapkan Pemisahan baca/tulis dan load balancing. Mengirim permintaan tulis ke node primary dan permintaan baca ke node yang ditentukan oleh parameter ini. Nilai yang valid:

  • readPreference=primary: Permintaan baca hanya dikirim ke node primary.

  • readPreference=primaryPreferred: Permintaan baca diprioritaskan ke node primary. Jika node primary gagal, permintaan baca dikirim ke node secondary dan read-only.

  • readPreference=secondary: Permintaan baca hanya dikirim ke node secondary dan read-only. Jika semua node secondary dan read-only gagal, permintaan baca gagal dan tidak dikirim ke node primary.

  • readPreference=secondaryPreferred: Permintaan baca diprioritaskan ke node secondary dan read-only. Jika semua node secondary dan read-only gagal, parameter ini mengirim permintaan baca ke node primary.

Catatan

Saat permintaan baca dikirim ke node secondary dan read-only, beban mungkin tidak merata. Untuk menentukan node lebih lanjut, atur parameter readPreferenceTags.

readPreferenceTags=<readonly_Tags> (Opsional)

Parameter ini memprioritaskan pengiriman permintaan baca ke node yang sesuai dengan tag yang ditentukan. Biasanya digunakan bersama parameter readPreference dan tidak kompatibel dengan mode primary. <readonly_Tags> adalah daftar pasangan kunci-nilai untuk tag node read-only. Jenis yang didukung:

  • readPreferenceTags=role:electable: Membaca secara preferensial dari node secondary.

    Catatan

    Opsi ini hanya berlaku untuk instans yang menggunakan disk.

  • readPreferenceTags=role:readonly: Membaca secara preferensial dari node read-only.

<other_options>

Parameter opsional lainnya.

Catatan

Opsi SSL untuk koneksi SRV secara default bernilai true. Jika Anda tidak perlu menggunakan koneksi terenkripsi SSL, tambahkan parameter ssl=false ke string koneksi. Untuk informasi lebih lanjut tentang parameter opsional, lihat dokumentasi resmi MongoDB.

Anda dapat menggunakan parameter readPreference dan readPreferenceTags dalam instans MongoDB. Dengan menggabungkan tag yang berbeda, Anda dapat memenuhi kebutuhan berbagai skenario:

Kebijakan perutean permintaan baca

Target node untuk permintaan baca

Kombinasi parameter

Permintaan baca dapat fallback ke node primary

Baca dari node primary terlebih dahulu

readPreference=primaryPreferred

Baca dari node secondary dan read-only terlebih dahulu

readPreference=secondaryPreferred

Baca dari node secondary terlebih dahulu

Catatan

Jika node secondary gagal, permintaan baca dikirim ke node primary.

readPreference=secondaryPreferred&readPreferenceTags=role:electable

Baca dari node read-only terlebih dahulu

Catatan

Jika node read-only gagal, permintaan baca dikirim ke node primary.

readPreference=secondaryPreferred&readPreferenceTags=role:readonly

Permintaan baca tidak fallback ke node primary

Baca hanya dari node secondary dan read-only

readPreference=secondary

Baca hanya dari node secondary

Catatan

Jika semua node secondary yang tersedia gagal, operasi baca gagal.

readPreference=secondary&readPreferenceTags=role:electable

Baca hanya dari node read-only

Catatan

Jika semua node read-only yang tersedia gagal, operasi baca gagal.

readPreference=secondary&readPreferenceTags=role:readonly

Contoh:

Akun database adalah test, dan berada di database admin.

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

Alamat ConnectionStringURI

Format:

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

Deskripsi parameter:

Parameter

Deskripsi

<username>

Nama akun database. Nilai default adalah root.

<password>

Kata sandi akun database.

<host>

Domain Name node primary, secondary, dan read-only.

<port>

Port node primary, secondary, dan read-only.

<database>

Nama database yang akan diakses. Nilai default adalah admin.

replicaSet=<replicaSet_value>

Parameter ini mengirim permintaan baca ke semua node instans set replika. <replicaSet_value> adalah ID unik titik akhir ketersediaan tinggi instans.

authSource=<authenticationDatabase> (Opsional)

Parameter ini menentukan database tempat akun database berada. <authenticationDatabase> adalah nama database otentikasi. Jika Anda tidak mengonfigurasi parameter ini, <database> digunakan sebagai database otentikasi.

readPreference=[primary | primaryPreferred | secondary | secondaryPreferred] (Opsional)

Parameter ini menerapkan Pemisahan baca/tulis dan load balancing. Mengirim permintaan tulis ke node primary dan permintaan baca ke node yang ditentukan oleh parameter ini. Nilai yang valid:

  • readPreference=primary: Permintaan baca hanya dikirim ke node primary.

  • readPreference=primaryPreferred: Permintaan baca diprioritaskan ke node primary. Jika node primary gagal, permintaan baca dikirim ke node secondary dan read-only.

  • readPreference=secondary: Permintaan baca hanya dikirim ke node secondary dan read-only. Jika semua node secondary dan read-only gagal, permintaan baca gagal dan tidak dikirim ke node primary.

  • readPreference=secondaryPreferred: Permintaan baca diprioritaskan ke node secondary dan read-only. Jika semua node secondary dan read-only gagal, parameter ini mengirim permintaan baca ke node primary.

Catatan

Saat permintaan baca dikirim ke node secondary dan read-only, beban mungkin tidak merata. Untuk menentukan node lebih lanjut, atur parameter readPreferenceTags.

readPreferenceTags=<readonly_Tags> (Opsional)

Parameter ini memprioritaskan pengiriman permintaan baca ke node yang sesuai dengan tag yang ditentukan. Biasanya digunakan bersama parameter readPreference dan tidak kompatibel dengan mode primary. <readonly_Tags> adalah daftar pasangan kunci-nilai untuk tag node read-only. Jenis yang didukung:

  • readPreferenceTags=role:electable: Membaca secara preferensial dari node secondary.

    Catatan

    Opsi ini hanya berlaku untuk instans yang menggunakan disk.

  • readPreferenceTags=role:readonly: Membaca secara preferensial dari node read-only.

Anda dapat menggunakan parameter readPreference dan readPreferenceTags dalam instans MongoDB. Dengan menggabungkan tag yang berbeda, Anda dapat memenuhi kebutuhan berbagai skenario:

Kebijakan perutean permintaan baca

Node target untuk permintaan baca

Kombinasi parameter

Permintaan baca dapat fallback ke node primary

Baca dari node primary terlebih dahulu

readPreference=primaryPreferred

Baca dari node secondary dan read-only terlebih dahulu

readPreference=secondaryPreferred

Baca dari node secondary terlebih dahulu

Catatan

Jika node secondary gagal, permintaan baca dikirim ke node primary.

readPreference=secondaryPreferred&readPreferenceTags=role:electable

Baca dari node read-only terlebih dahulu

Catatan

Jika node read-only gagal, permintaan baca dikirim ke node primary.

readPreference=secondaryPreferred&readPreferenceTags=role:readonly

Permintaan baca tidak fallback ke node primary

Baca hanya dari node secondary dan read-only

readPreference=secondary

Baca hanya dari node secondary

Catatan

Jika semua node secondary yang tersedia gagal, operasi baca gagal.

readPreference=secondary&readPreferenceTags=role:electable

Baca hanya dari node read-only

Catatan

Jika semua node read-only yang tersedia gagal, operasi baca gagal.

readPreference=secondary&readPreferenceTags=role:readonly

Contoh:

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

Alamat ReadOnly ConnectionStringURI

Format:

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

Deskripsi:

Parameter

Deskripsi

<username>

Nama akun database. Nilai default adalah root.

<password>

Kata sandi akun database.

<host>

Domain Name node read-only.

<port>

Port node read-only.

<database>

Nama database yang akan diakses. Nilai default adalah admin.

readPreference=secondary&readPreferenceTags=role:readonly

Parameter ini mengirim permintaan baca ke node read-only. readPreferenceTags adalah daftar pasangan kunci-nilai untuk tag node read-only. Nilainya tetap role:readonly. Parameter ini tidak dapat dimodifikasi.

replicaSet=<replicaSet_value>

Parameter ini mengirim permintaan baca ke semua node instans set replika. <replicaSet_value> adalah ID unik titik akhir ketersediaan tinggi instans.

authSource=<authenticationDatabase> (Opsional)

Parameter ini menentukan database tempat akun database berada. <authenticationDatabase> adalah nama database otentikasi. Jika Anda tidak mengonfigurasi parameter ini, <database> digunakan sebagai database otentikasi.

Contoh:

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

Alamat Utama

Format:

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

Deskripsi:

Parameter

Deskripsi

<username>

Nama akun database.

<password>

Kata sandi akun database.

<host>

Domain Name node primary.

<port>

Port dari node utama.

<database>

Nama database yang akan diakses. Nilai default adalah admin.

directConnection=true (Opsional)

Menentukan bahwa permintaan hanya dikirim ke titik akhir saat ini (node primary).

  • Jika Anda menentukan parameter ini dan mengatur nilainya ke true, permintaan baca dan tulis dikirim ke node primary.

  • Jika Anda tidak menentukan parameter ini atau mengatur nilainya ke false, permintaan baca mungkin diteruskan ke node lain.

Contoh:

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

Alamat Sekunder

Format:

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

Deskripsi:

Parameter

Deskripsi

<username>

Nama akun database.

<password>

Kata sandi akun database.

<host>

Domain Name node secondary.

<port>

Port node secondary.

<database>

Nama database yang akan diakses. Nilai default adalah admin.

directConnection=true (Opsional)

Menentukan bahwa permintaan hanya dikirim ke titik akhir saat ini (node secondary).

  • Jika Anda menentukan parameter ini dan mengatur nilainya ke true, permintaan tulis ditolak.

  • Jika Anda tidak menentukan parameter ini atau mengatur nilainya ke false, permintaan tulis diteruskan ke node primary.

Contoh:

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

Alamat ReadOnly

Format:

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

Deskripsi:

Parameter

Deskripsi

<username>

Nama akun database.

<password>

Kata sandi akun database.

<host>

Domain Name node read-only.

<port>

Port node read-only.

<database>

Nama database yang akan diakses. Nilai default adalah admin.

directConnection=true

Menentukan bahwa permintaan hanya dikirim ke titik akhir saat ini (node read-only).

  • Jika Anda menentukan parameter ini dan mengatur nilainya ke true, permintaan tulis ditolak.

  • Jika Anda tidak menentukan parameter ini atau mengatur nilainya ke false, permintaan tulis diteruskan ke node primary.

Contoh:

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

Jenis jaringan untuk alamat koneksi

Jenis jaringan

Deskripsi

Jaringan privat

  • Virtual private cloud (VPC): VPC adalah jaringan terisolasi yang menyediakan keamanan dan performa lebih tinggi. Instans ApsaraDB for MongoDB menyediakan titik akhir VPC secara default.

  • Jaringan klasik: Jaringan non-terisolasi yang mengandalkan grup keamanan atau daftar putih layanan Alibaba Cloud untuk perlindungan. Instans baru tidak lagi mendukung jaringan klasik. Untuk informasi lebih lanjut, lihat [Notice] Instans ApsaraDB for MongoDB baru tidak lagi mendukung jaringan klasik.

Jaringan publik

Menghubungkan ke instans melalui Internet menimbulkan risiko keamanan. Instans ApsaraDB for MongoDB tidak menyediakan titik akhir publik secara default. Untuk terhubung melalui jaringan publik, Anda dapat secara manual mengajukan titik akhir publik.

Peroleh titik akhir database

  1. Buka halaman Replica Set Instances. Di bagian atas halaman, pilih kelompok sumber daya dan wilayah, lalu klik ID instans target.

  2. Di panel navigasi sebelah kiri halaman detail instans, klik Database Connections.

Login ke database MongoDB

  1. Ambil informasi berikut:

  2. Login ke database. Anda dapat menggunakan salah satu metode berikut:

Skenario koneksi umum

FAQ

Mengapa client mengirim permintaan ke node yang tidak ada dalam string koneksi?

Perilaku ini normal dan merupakan fitur inti client MongoDB yang disebut penemuan layanan, yang dirancang untuk memastikan ketersediaan tinggi. Penemuan layanan memungkinkan client beradaptasi secara otomatis terhadap perubahan topologi kluster, seperti saat node primary mati, untuk memastikan kelangsungan layanan. Untuk mengirim permintaan hanya ke satu alamat koneksi, tambahkan directConnection=true ke string koneksi Anda. Untuk informasi lebih lanjut, lihat directConnection.

Contoh:

Jika instans lima node menggunakan string koneksi mongodb://root:xxx@dds-xxxxx1-pub.mongodb.rds.aliyuncs.com:3717,dds-xxxxx2-pub.mongodb.rds.aliyuncs.com:3717/admin, client juga mengirim permintaan ke dua node lainnya, dds-xxxxx3-pub.mongodb.rds.aliyuncs.com:3717,dds-xxxxx4-pub.mongodb.rds.aliyuncs.com:3717, dan memantau statusnya.