Saat lalu lintas baca dan tulis berbagi jalur koneksi tunggal, beban kerja yang dominan menulis dapat mengalahkan kueri analitis, dan Anda tidak memiliki kendali langsung atas distribusi lalu lintas baca di antara instans read-only. Titik akhir proxy database mengatasi masalah ini dengan memungkinkan Anda menetapkan atribut baca/tulis pada setiap titik akhir serta mengatur bobot baca per instans, sehingga Anda dapat mengarahkan lalu lintas secara tepat dan meningkatkan kapasitas baca secara independen.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Mengaktifkan fitur database proxy untuk instans RDS Anda. Lihat Aktifkan fitur database proxy
-
Menyambungkan setidaknya satu instans read-only ke instans RDS Anda, yang diperlukan untuk pemisahan baca/tulis. Lihat Buat instansi ApsaraDB RDS for PostgreSQL read-only
Atribut baca/tulis
Titik akhir proxy beroperasi dalam salah satu dari dua mode berikut:
| Attribute | Typical use case | Traffic behavior |
|---|---|---|
| Read/Write | Traffic aplikasi umum dengan pemisahan baca/tulis | Semua permintaan tulis diarahkan ke instans primary. Permintaan baca didistribusikan ke instans read-only berdasarkan bobot baca. Titik akhir harus terhubung ke instans primary dan minimal satu instans read-only. |
| Read-only | Pelaporan, analitik, dan beban kerja read-only lainnya | Instans primary tidak menerima traffic melalui titik akhir ini. Koneksi baru didistribusikan ke instans read-only yang terhubung secara round-robin. Setiap koneksi klien mengarah ke satu instans read-only. Kapasitas koneksi total sama dengan jumlah koneksi yang tersedia di seluruh instans read-only yang terhubung. |
Perilaku berdasarkan atribut dan bobot
Tabel berikut menjelaskan cara penanganan traffic untuk setiap kombinasi pengaturan atribut baca/tulis dan bobot.
| Attribute | Weight method | Primary instance weight | Normal operation | After the last read-only instance is deleted | After all read-only instances are faulty |
|---|---|---|---|---|---|
| Read-only | Automatic atau custom | Tidak dapat dikonfigurasi | Primary: tidak ada traffic. Proxy: hanya permintaan baca. | Primary: tidak ada traffic. Proxy: error koneksi. | Primary: tidak ada traffic. Proxy: error koneksi. |
| Read/Write | Automatic | 0 (lihat Default read weights) | Primary: hanya permintaan tulis. Proxy: permintaan baca dan tulis. | Primary: permintaan baca dan tulis. Proxy: permintaan baca dan tulis. | Primary: permintaan baca dan tulis. Proxy: permintaan baca dan tulis. |
| Custom | Weight > 0 | Primary: permintaan baca dan tulis. Proxy: permintaan baca dan tulis. | Primary: permintaan baca dan tulis. Proxy: permintaan baca dan tulis. | Primary: permintaan baca dan tulis. Proxy: permintaan baca dan tulis. | |
| Weight = 0 | Primary: hanya permintaan tulis. Proxy: permintaan baca dan tulis. | Primary: permintaan baca dan tulis. Proxy: permintaan baca dan tulis. | Primary: permintaan baca dan tulis. Proxy: permintaan baca dan tulis. |
Catatan istilah dalam tabel:
-
Tidak ada traffic ke primary: Instans primary tidak termasuk dalam penerusan permintaan read-only.
-
Connection error: Terjadi ketika titik akhir proxy Read-only tidak memiliki instans read-only yang tersedia untuk menangani permintaan.
-
Mode Read/Write dengan bobot primary = 0: Permintaan baca tidak diteruskan ke instans primary dalam kondisi normal. Jika semua instans read-only mengalami gangguan, petunjuk forceful ditentukan, atau pemisahan transaksi diaktifkan, proxy akan meneruskan permintaan baca ke instans primary sebagai fallback.
Konfigurasikan atribut baca/tulis dan bobot baca
-
Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS Anda berada, lalu klik ID instans tersebut.
-
Di panel navigasi sebelah kiri, klik Database Proxy.
-
Pada bagian Connection Information, temukan titik akhir yang ingin dimodifikasi di kolom Proxy Endpoint (Terminal) ID, lalu klik Modify Configuration di kolom Actions.
-
Atur Read/Write Attributes ke salah satu opsi berikut:
-
Read/Write (Read/Write Splitting)
-
Read-only (Primary Instance Not Connected to Receive Write Requests)
-
-
Atur Read Weight Allocation ke Automatic atau Custom:
-
Automatic: Sistem menetapkan bobot baca untuk setiap instans berdasarkan spesifikasinya. Saat Anda menambahkan instans read-only, sistem secara otomatis memasukkannya ke dalam pemisahan baca/tulis dengan bobot yang sesuai — tidak perlu pembaruan manual. Untuk nilai bobot yang ditetapkan sistem, lihat Default read weights.
-
Custom: Tentukan bobot baca untuk setiap instans read-only. Nilai yang valid: 0–10000. Saat Anda membuat instans read-only baru, bobot awalnya adalah 0 — perbarui bobot tersebut agar instans tersebut ikut dalam distribusi traffic.
Catatan Bobot yang lebih tinggi berarti instans tersebut menerima proporsi permintaan baca yang lebih besar. Misalnya, jika tiga instans read-only memiliki bobot 100, 200, dan 200 serta bobot instans primary adalah 0, maka instans primary hanya menangani permintaan tulis dan instans read-only menerima traffic dalam rasio1:2:2.Perubahan bobot berlaku segera tanpa pemutusan koneksi. Koneksi yang sudah ada tidak terpengaruh; hanya koneksi baru yang menggunakan bobot yang diperbarui.
-
Arahkan permintaan dengan petunjuk SQL
Untuk mengganti keputusan routing proxy terhadap kueri tertentu, tambahkan petunjuk routing ke pernyataan SQL:
-
Paksa kueri ke instans primary:
/*FORCE_MASTER*/ SELECT * FROM table_name; -
Paksa kueri ke instans read-only:
/*FORCE_SLAVE*/ SELECT * FROM table_name;
Referensi API
| Operation | Description |
|---|---|
| DescribeDBProxy | Menanyakan detail Database Proxy |
| DescribeDBProxyEndpoint | Kueri detail titik akhir proxy database |
| ModifyDBProxyEndpoint | Modifikasi atribut baca/tulis dan bobot baca titik akhir proxy database |