ApsaraDB for MongoDB mendukung Ketersediaan tinggi dan Pemisahan baca/tulis pada instans set replika. Untuk memanfaatkan fitur-fitur ini, Anda harus menghubungkan aplikasi ke instans dengan benar serta mengonfigurasi pengaturan yang diperlukan.
Latar Belakang
Node primary pada instans set replika tidak bersifat tetap. Jika node primary mengalami kegagalan, sistem akan memicu alih bencana primary/secondary, sehingga menurunkan status node primary asli menjadi node secondary.
Jika Anda menghubungkan ke database menggunakan titik akhir langsung dari node primary, semua operasi baca dan tulis akan dikirim ke node tersebut. Hal ini dapat menyebabkan beban tinggi pada node primary. Selain itu, jika terjadi alih bencana primary/secondary, node yang sedang Anda hubungi akan berubah menjadi node secondary, sehingga klien Anda tidak dapat lagi melakukan operasi tulis—kondisi yang berpotensi berdampak serius terhadap bisnis Anda.
Ketersediaan tinggi
ApsaraDB for MongoDB menyediakan URI string koneksi untuk menjamin Ketersediaan tinggi. URI ini mencantumkan alamat semua node dalam instans. Setelah terjadi alih bencana primary/secondary, permintaan tulis akan secara otomatis diarahkan ke node primary baru, sehingga mencegah gangguan pada operasi tulis.
Untuk informasi lebih lanjut tentang cara menghubungkan ke instans set replika, lihat Connect to a replica set instance.
-
Untuk menjamin Ketersediaan tinggi di lingkungan produksi, hubungkan aplikasi Anda ke instans menggunakan URI string koneksi.
-
Semua driver resmi MongoDB mendukung URI string koneksi.
Memperoleh alamat Ketersediaan tinggi
-
Buka halaman Replica Set Instances, pilih kelompok sumber daya dan wilayah, lalu klik ID instans target.
-
Di panel navigasi sebelah kiri, klik Database Connections.
-
Peroleh URI string koneksi Ketersediaan tinggi. Di bagian Private Connection - Virtual Private Cloud, temukan baris Connection String URI yang ditandai sebagai Recommended, lalu salin alamat tersebut. Format alamatnya adalah sebagai berikut:
mongodb://root:****@dds-InstanceID.mongodb.rds.aliyuncs.com:3717,dds-InstanceID.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-ReplicaSetID.Saat Anda menghubungkan menggunakan URI string koneksi, klien secara otomatis mendeteksi peran node primary dan secondary. Jika terjadi alih bencana primary/secondary, klien secara otomatis mengarahkan ulang operasi tulis ke node primary baru, sehingga menjamin Ketersediaan tinggi.
Pemisahan baca/tulis
URI string koneksi menyediakan parameter readPreference dan readPreferenceTags. Parameter readPreference mengontrol Pemisahan baca/tulis dan penyeimbangan beban, sedangkan parameter readPreferenceTags memprioritaskan pengarahan permintaan baca ke node yang memiliki tag tertentu.
Anda dapat menggabungkan parameter readPreference dan readPreferenceTags untuk mendukung berbagai kasus penggunaan.
|
Fallback saat kegagalan baca |
Target Node |
Parameter |
|
Arahkan permintaan baca ke node primary jika terjadi kegagalan |
Lebih memilih node primary |
|
|
Lebih memilih node secondary dan node read-only |
|
|
|
Lebih memilih node secondary (hanya untuk instans berbasis cloud disk) |
|
|
|
Lebih memilih node read-only |
|
|
|
Jangan arahkan permintaan baca ke node primary jika terjadi kegagalan |
Baca hanya dari node secondary dan node read-only |
|
|
Baca hanya dari node secondary (hanya untuk instans berbasis cloud disk) |
|
|
|
Baca hanya dari node read-only |
|
Pemisahan baca/tulis dengan URI string koneksi
Untuk menerapkan Pemisahan baca/tulis, tambahkan parameter readPreference dan readPreferenceTags ke URI string koneksi.
Sebagai contoh, untuk mengarahkan semua permintaan tulis ke node primary dan permintaan baca secara eksklusif ke node read-only tanpa fallback, tambahkan &readPreference=secondary&readPreferenceTags=role:readonly ke URI string koneksi. Contoh berikut menunjukkan URI lengkap:
mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****&readPreference=secondary&readPreferenceTags=role:readonly
Lingkungan pengujian menggunakan versi driver berikut:
-
pymongo 3.11.4
-
mongodb-driver-sync 4.6.1
-
mongosh 2.2.15