All Products
Search
Document Center

ApsaraDB RDS:Atur atribut pemisahan baca/tulis dan bobot baca

Last Updated:Sep 17, 2026

Setiap titik akhir proxy database untuk ApsaraDB RDS for MySQL memiliki dua pengaturan yang mengontrol pengarahan lalu lintas SQL: read/write attribute (node mana yang menangani operasi tulis versus baca) dan read weight (bagaimana lalu lintas baca didistribusikan ke node tersebut). Mengonfigurasi pengaturan ini dengan benar memungkinkan Anda meningkatkan throughput baca, mengisolasi beban kerja pelaporan, serta melakukan pemeliharaan secara aman tanpa gangguan layanan.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Atribut baca/tulis

Pilih mode

Mode

Paling cocok untuk

Permintaan tulis

Permintaan baca

Read/Write

Menambah throughput baca melalui instans primary dan instansi hanya baca

Selalu diarahkan ke instans primary

Didistribusikan ke node yang dikonfigurasi berdasarkan bobot

Read-only

Mengisolasi beban kerja hanya baca seperti laporan

Tidak diterima — klien menerima error koneksi

Didistribusikan ke instansi hanya baca secara round-robin

Mode Read/Write memerlukan setidaknya satu instans primary dan satu instans hanya baca dalam kebijakan akses proxy. Mode ini mendukung transaction splitting dan connection pools.

Mode Read-only memerlukan setidaknya satu instans hanya baca. Instans primary tidak terlibat dalam pengarahan, dan transaction splitting tidak didukung. Setiap koneksi klien dipetakan ke satu koneksi pada satu instans hanya baca. Kapasitas koneksi total sama dengan jumlah koneksi dari semua instans hanya baca yang dikonfigurasi.

Untuk instans Edisi Kluster, mode Read/Write hanya mengirim permintaan tulis ke node primary, sedangkan mode Read-only mengarahkan permintaan baca ke node secondary secara round-robin. Daftar putih IP untuk database proxy tetap disinkronkan secara otomatis dengan daftar putih instans primary.

Perilaku pengarahan dalam kasus khusus

Tabel berikut menunjukkan apa yang terjadi dalam mode Read/Write ketika instans hanya baca tidak tersedia, dan dalam mode Read-only di semua skenario bobot.

Mode

Metode bobot

Bobot Utama

Operasi normal

Instansi hanya baca terakhir dihapus

Semua instansi hanya baca gagal

Read-only

System-assigned atau Custom

Tidak dapat diatur

Primary: tidak ada baca atau tulis (tidak diteruskan). Proxy: dapat dibaca, tidak dapat ditulis

Primary: tidak ada baca atau tulis. Proxy: error koneksi

Primary: tidak ada baca atau tulis. Proxy: error koneksi

Read/Write

System-assigned

0 (default)

Primary: hanya tulis, tidak baca. Proxy: baca dan tulis

Primary: baca dan tulis. Proxy: baca dan tulis

Primary: baca dan tulis. Proxy: baca dan tulis

Read/Write

Custom

Lebih besar dari 0

Primary: baca dan tulis. Proxy: baca dan tulis

Primary: baca dan tulis. Proxy: baca dan tulis

Primary: baca dan tulis. Proxy: baca dan tulis

Read/Write

Custom

0

Primary: hanya tulis, tidak baca. Proxy: baca dan tulis

Primary: baca dan tulis. Proxy: baca dan tulis

Primary: baca dan tulis. Proxy: baca dan tulis

Dalam mode Read-only, "tidak diteruskan" berarti instans primary tidak menerima permintaan baca. Jika proxy tidak memiliki instans yang dapat dibaca, klien akan menerima error koneksi.
Dalam mode Read/Write dengan bobot primary diatur ke 0, permintaan baca tidak dikirim ke instans primary secara default. Permintaan baca hanya dikirim ke instans primary jika node read-only tidak sehat, petunjuk memaksa pengarahan ke sana, atau transaction splitting diaktifkan.

Algoritma load balancing

Proxy mendukung dua algoritma untuk mendistribusikan permintaan baca ke node-node.

Versi sebelum 2.25.4: Hanya load balancing berbasis bobot yang tersedia.

Versi 2.25.4 dan lebih baru: Kedua algoritma tersedia. Gunakan load balancing berbasis active requests kecuali Anda memiliki alasan khusus untuk memilih distribusi berbasis bobot yang ketat — algoritma ini memberikan performa puncak lebih baik untuk kluster dan mengurangi dampak kegagalan satu node.

Load balancing berbasis active requests (direkomendasikan)

Mengarahkan setiap permintaan ke node dengan rasio (Active Requests / Node Weight) terendah. Ini menyesuaikan secara real time terhadap beban yang tidak merata dan kurang terpengaruh oleh node yang lambat.

Contoh dengan bobot primary 100, bobot node read-only 1 sebesar 200, dan bobot node read-only 2 sebesar 200:

Putaran

Permintaan Aktif Utama

Permintaan aktif node read-only 1

Permintaan aktif node read-only 2

Diarahkan ke

1

1 (rasio: 0,01)

5 (rasio: 0,025)

6 (rasio: 0,03)

Node primary

2

2

4

6

Node read-only 1

3

2

5

3

Node read-only 2

4

1

2

3

Node read-only 1

5

1

2

1

Node read-only 2

6

0

3

3

Node primary

Load balancing berbasis bobot

Mendistribusikan permintaan baca secara ketat berdasarkan rasio bobot menggunakan algoritma round-robin. Setiap ronde penjadwalan memilih node dengan nilai current_weight tertinggi, lalu menyesuaikan bobot sebagai berikut:

  1. Seleksi: Node dengan current_weight tertinggi dipilih. Jika seri, urutan dalam daftar konfigurasi menentukan pemenangnya.

  2. Akumulasi: Setelah setiap ronde, current_weight setiap node bertambah sebesar bobotnya sendiri.

  3. Reset: current_weight node yang dipilih dikurangi dengan jumlah bobot semua node.

Contoh dengan bobot primary 100, bobot node read-only 1 sebesar 200, dan bobot node read-only 2 sebesar 200:

Round

Primary current_weight

Node read-only 1 current_weight

Node read-only 2 current_weight

Diarahkan ke

1

0

0

0

Node primary

2

−400

200

200

Node read-only 1

3

−300

−100

400

Node read-only 2

4

−200

100

100

Node read-only 1

5

−100

−200

300

Node read-only 2

6

0

0

0

Node primary

Konfigurasi atribut baca/tulis dan bobot baca

  1. Buka halaman RDS Instances. Di bilah navigasi atas, pilih wilayah, lalu klik ID instans target.

  2. Di panel navigasi kiri, klik Database Proxy.

  3. Di bagian Connection Information, temukan titik akhir proxy target dan klik Modify Configuration di kolom Actions.

  4. Di dialog tersebut, atur Read/Write Attributes ke salah satu opsi berikut:

    • Read/Write (Read/Write Splitting)

    • Read-only (Primary Instance Not Connected to Receive Write Requests)

  5. Di bagian Read Weight Allocation, pilih metode bobot:

    Metode

    Perilaku

    Kapan digunakan

    Automatic Distribution

    Sistem menetapkan bobot berdasarkan tipe instans. Instans hanya baca baru secara otomatis disertakan dengan system-assigned weights — tidak perlu pembaruan manual.

    Kluster homogen di mana kapasitas instans serupa

    Custom

    Tetapkan bobot eksplisit (0–10.000) untuk setiap instans. Instans hanya baca baru secara default bernilai 0 dan harus dikonfigurasi secara manual.

    Kluster heterogen di mana Anda ingin kontrol presisi atas distribusi trafik

    Cara kerja bobot: Bobot yang lebih tinggi berarti lebih banyak permintaan baca. Misalnya, jika primary memiliki bobot 0 dan tiga instans hanya baca memiliki bobot 100, 200, dan 200, permintaan baca didistribusikan dalam rasio 1:2:2. Primary tetap menerima semua permintaan tulis.

Bobot baca mengontrol cara proxy mendistribusikan permintaan baca ke database backend dan bersifat independen dari fitur nearest access. Gunakan keduanya bersamaan untuk meminimalkan latensi.
Instans yang telah dikonfigurasi dengan replication delay tidak dapat diatur bobotnya.
Menghapus instans hanya baca akan menghapus bobotnya secara otomatis. Bobot instans lain tidak berubah.
Perubahan bobot langsung berlaku tanpa gangguan layanan. Koneksi yang sudah ada tidak diputus; baik koneksi baru maupun yang sudah ada diarahkan berdasarkan bobot yang diperbarui.
Sebelum menghapus instans hanya baca dari proxy: Atur bobotnya ke 0 terlebih dahulu, tunggu sesi aktif selesai, lalu hapus instans tersebut. Lihat Matikan instans hanya baca tanpa gangguan layanan untuk prosedur lengkapnya.

Dampak perubahan bobot terhadap sesi yang sedang berjalan

Perilaku perubahan bobot terhadap sesi aktif bergantung pada versi mesin database proxy. Untuk memeriksa atau meningkatkan versi Anda, lihat Lihat versi mesin minor database proxy dan Tingkatkan versi mesin minor database proxy.

Skenario

Versi mesin 2.8.41 dan lebih baru

Versi sebelum 2.8.41

Sesi baru terhubung ke node dengan bobot 0?

Tidak

Tidak

Bobot diubah dari non-nol ke 0: apakah node dihapus dari sesi yang sedang berjalan?

Tidak

Tidak

Bobot diubah dari non-nol ke 0: apakah sesi yang sedang berjalan diarahkan berdasarkan bobot baru?

Tidak

Protokol PS (Prepared Statement): Tidak. Protokol berbasis teks: Ya

Bobot diubah dari 0 ke non-nol: apakah node ditambahkan ke sesi yang sedang berjalan?

Tidak

Ya

Bobot diubah dari 0 ke non-nol: apakah sesi yang sedang berjalan diarahkan berdasarkan bobot baru?

Tidak

Protokol PS: Tidak. Protokol berbasis teks: Ya

Menghapus node read-only dengan bobot non-nol menyebabkan koneksi transient?

Tidak. Proxy memiliki mekanisme retry_failed_reads, tetapi mengembalikan set hasil pada saat penghapusan masih dapat menyebabkan koneksi transient.

Ya

Menghapus node read-only dengan bobot 0 menyebabkan koneksi transient?

Tidak

Ya jika permintaan sedang dieksekusi di node tersebut saat dihapus; jika tidak, Tidak

Menghentikan koneksi di node read-only dengan bobot 0: apakah koneksi dihentikan?

Ya

Proxy versi 1.x: dihentikan hanya jika ada sesi aktif; jika tidak, koneksi tidak dihentikan dan secara otomatis dibuat ulang

Menghentikan koneksi di node read-only dengan bobot non-nol: apakah koneksi dihentikan?

—

—

Praktik terbaik

Matikan instans hanya baca tanpa gangguan layanan

Untuk menghapus instans hanya baca (misalnya, instans C dalam kluster dengan primary A dan instans hanya baca B dan C) tanpa mengganggu lalu lintas:

  1. Buka halaman RDS Instances, pilih wilayah, lalu klik ID instans primary A.

  2. Di panel navigasi kiri, klik Database Proxy. Di bagian Connection Topology Management, klik Modify Configuration.

  3. Di dialog Modify Proxy Endpoint (Terminal) Configuration, atur bobot baca untuk node read-only C menjadi 0.

  4. Buka halaman Monitoring and Alerts untuk instans hanya baca C. Di bagian Session Connection, pantau metrik active_session dan tunggu hingga nilainya turun ke 0.

    Jika active_session tidak mencapai 0 setelah menunggu cukup lama, hentikan sesi yang tersisa secara manual.
  5. Di tab Database Proxy untuk instans primary A, hapus instans hanya baca C dari titik akhir proxy.

Arahkan pernyataan SQL tertentu dengan petunjuk

Gunakan petunjuk SQL untuk memaksa pernyataan dijalankan di node tertentu — berguna untuk operasi tulis di dalam SELECT atau kueri yang harus selalu menggunakan instans hanya baca.

Instans Edisi Ketersediaan Tinggi:

  • /*FORCE_MASTER*/ — mengarahkan pernyataan ke instans primary, bahkan jika bobot baca-nya 0

  • /*FORCE_SLAVE*/ — mengarahkan pernyataan ke instans hanya baca

Instans Edisi Kluster:

  • /*FORCE_MASTER*/ — mengarahkan pernyataan ke node primary, bahkan jika bobot baca-nya 0

  • /*FORCE_SLAVE*/ — mengarahkan pernyataan ke node secondary

Tambahkan petunjuk di awal pernyataan:

/*FORCE_MASTER*/ SELECT * FROM table_name;

Kurangi latensi lintas zona

Untuk menghindari single point of failure, buat setidaknya dua instans hanya baca untuk instans primary dan sebarkan di zona berbeda. Aktifkan fitur nearest access untuk meminimalkan latensi jaringan akibat lalu lintas lintas zona. Fitur nearest access mengontrol cara aplikasi terhubung ke proxy; bobot baca mengontrol cara proxy mengarahkan permintaan ke database backend. Konfigurasikan keduanya bersamaan untuk performa optimal.

FAQ

Apakah instans primary tetap dapat dibaca setelah saya menambahkan instans hanya baca?

Setelah instans hanya baca ditambahkan, instans primary tetap dapat dibaca dan ditulis kapan saja. Menambahkan instans hanya baca tidak memengaruhi kemampuan baca atau tulis instans primary.

Instans primary memiliki titik akhir koneksi langsungnya sendiri. Titik akhir ini terhubung langsung ke instans primary tanpa melewati database proxy, sehingga instans primary selalu dapat dibaca dan ditulis melalui titik akhir ini terlepas dari konfigurasi bobot baca.

Titik akhir database proxy digunakan untuk pemisahan baca/tulis. Saat terhubung melalui titik akhir proxy, permintaan baca dan tulis diarahkan berdasarkan bobot baca yang dikonfigurasi. Ketika bobot baca instans primary diatur ke 0, proxy tidak meneruskan permintaan baca ke instans primary secara default. Namun, instans primary itu sendiri tetap dapat dibaca dan ditulis melalui titik akhir koneksi langsungnya. Ketika semua instans hanya baca mengalami latensi melebihi ambang batas atau tidak tersedia, permintaan baca secara otomatis dialihkan kembali ke instans primary untuk menjamin kelangsungan bisnis.

Untuk mengontrol pengarahan baca/tulis melalui titik akhir proxy, sesuaikan bobot baca di konfigurasi Database Proxy.

Referensi API

Operasi API

Deskripsi

DescribeDBProxy

Kueri detail database proxy untuk instans RDS

DescribeDBProxyEndpoint

Kueri kebijakan akses titik akhir database proxy

ModifyDBProxyEndpoint

Ubah kebijakan akses titik akhir database proxy

Langkah selanjutnya