Jika sistem database Anda menerima banyak permintaan baca tetapi sedikit permintaan tulis, kinerja instance utama ApsaraDB RDS for MySQL dapat terpengaruh. Untuk mengatasi hal ini, gunakan fitur pemisahan baca/tulis dari proksi database. Sistem database secara otomatis meneruskan permintaan baca dan tulis melalui titik akhir proksi database. Titik akhir ini mengarahkan permintaan baca ke instance RDS baca-saja, sehingga mengurangi beban pada instance RDS utama. Sebelumnya, titik akhir proksi database dikenal sebagai terminal proksi.
Pengenalan
Setelah membuat instance RDS baca-saja, aktifkan fitur pemisahan baca/tulis proksi database. Fitur ini memungkinkan sistem meneruskan permintaan tulis ke instance RDS utama dan permintaan baca ke instance RDS baca-saja berdasarkan bobot baca yang ditentukan. Hal ini membantu mengurangi beban pada instance RDS utama.
RDS Basic Edition: Pemisahan baca/tulis tidak didukung.
RDS High-availability Edition: Anda harus membuat instance RDS baca-saja, lalu mengaktifkan fitur proksi database untuk mengimplementasikan pemisahan baca/tulis.
RDS Cluster Edition: Anda dapat langsung mengaktifkan fitur proksi database untuk mengimplementasikan pemisahan baca/tulis.
Manfaat
Titik akhir pemisahan baca/tulis terpadu untuk memudahkan pemeliharaan.
Jika pemisahan baca/tulis dinonaktifkan, Anda perlu menambahkan titik akhir instance RDS utama dan instance RDS baca-saja ke aplikasi Anda untuk melakukan pemisahan baca/tulis.
Dengan mengaktifkan pemisahan baca/tulis, Anda hanya perlu terhubung ke titik akhir proksi database untuk memproses permintaan tulis dan baca yang secara otomatis diteruskan ke instance RDS utama dan instance RDS baca-saja. Ini membantu mengurangi biaya pemeliharaan.
Anda juga dapat membuat instance RDS baca-saja untuk meningkatkan kemampuan baca sistem database tanpa perlu mengubah konfigurasi data di aplikasi Anda.
Tautan asli untuk meningkatkan kinerja dan mengurangi biaya pemeliharaan.
Jika Anda membangun lapisan proksi sendiri di cloud untuk mengimplementasikan pemisahan baca/tulis, data harus diuraikan dan diteruskan oleh beberapa komponen sebelum mencapai sistem database Anda, yang meningkatkan latensi respons. Fitur pemisahan baca/tulis tertanam dalam ekosistem ApsaraDB RDS untuk mengurangi latensi respons, meningkatkan kecepatan pemrosesan, dan mengurangi biaya pemeliharaan.
Bobot baca dan ambang batas yang dapat dikonfigurasi untuk memastikan kesesuaian dalam berbagai skenario.
Anda dapat menentukan bobot baca instance RDS utama dan instance RDS baca-saja agar sistem meneruskan permintaan baca sesuai dengan bobot yang ditentukan. Anda juga dapat menentukan ambang batas latensi untuk replikasi data ke instance RDS baca-saja.
Pemeriksaan kesehatan tingkat instance untuk meningkatkan ketersediaan layanan.
Pemisahan baca/tulis secara otomatis memeriksa status kesehatan instance RDS utama dan instance RDS baca-saja. Jika instance RDS baca-saja tiba-tiba mati atau latensi replikasi datanya melebihi ambang batas yang ditentukan, sistem akan berhenti meneruskan permintaan baca ke instance tersebut. Permintaan baca dialihkan ke instance RDS sehat lainnya dalam sistem database Anda. Setelah instance RDS baca-saja pulih, ApsaraDB RDS melanjutkan pengiriman permintaan baca ke instance tersebut.
CatatanUntuk mengurangi dampak dari titik kegagalan tunggal (SPOF), kami sarankan Anda membuat setidaknya dua instance RDS baca-saja.
Logika yang digunakan untuk meneruskan permintaan
Instance RDS utama
Permintaan yang menjalankan pernyataan INSERT, UPDATE, DELETE, dan SELECT FOR UPDATE.
Semua permintaan yang menjalankan operasi DDL, seperti pembuatan basis data atau tabel, penghapusan basis data atau tabel, serta perubahan skema atau izin.
Semua permintaan yang dibungkus dalam transaksi. Jika fitur pemisahan transaksi diaktifkan, permintaan akan diteruskan berdasarkan instruksi dalam Gunakan fitur pemisahan transaksi.
Permintaan yang dibungkus dalam transaksi non-baca-saja dengan tingkat isolasi repeatable read (RR) dan seterusnya.
Permintaan yang memanggil fungsi yang ditentukan pengguna.
Permintaan yang menjalankan prosedur tersimpan.
Permintaan yang menjalankan kueri multi-pernyataan. Untuk informasi lebih lanjut, lihat Multi-Statement.
Permintaan yang melibatkan tabel sementara yang dibuat secara eksplisit.
Permintaan yang menjalankan pernyataan SELECT last_insert_id().
Semua permintaan yang menanyakan atau mengonfigurasi ulang variabel pengguna.
Permintaan yang menjalankan pernyataan KILL dalam SQL. Pernyataan ini berbeda dari perintah KILL.
Permintaan yang menjalankan pernyataan LOCK, termasuk LOCK TABLE dan UNLOCK TABLE.
Permintaan yang menjalankan pernyataan FLUSH, termasuk FLUSH TABLES WITH READ LOCK (FTWRL).
Permintaan yang menjalankan pernyataan SAVEPOINT.
Instance RDS utama atau instance RDS baca-saja
Permintaan yang menjalankan pernyataan SELECT yang tidak dibungkus dalam transaksi.
Permintaan yang menjalankan pernyataan START TRANSACTION READ ONLY.
Semua instance RDS
Semua permintaan yang mengonfigurasi ulang variabel sistem.
Permintaan yang menjalankan pernyataan USE.
Permintaan yang menjalankan pernyataan SHOW PROCESSLIST.
CatatanSetelah pernyataan SHOW PROCESSLIST dijalankan, proksi khusus mengembalikan semua proses yang berjalan pada instance RDS utama dan instance RDS baca-saja dalam sistem database Anda.
Permintaan yang menjalankan pernyataan NAMED PREPARE.
Permintaan yang menjalankan pernyataan COM_CHANGE_USER, COM_QUIT, dan COM_SET_OPTION.
Aktifkan pemisahan baca/tulis
Fitur pemisahan baca/tulis didukung untuk instance RDS yang menjalankan RDS High-availability Edition dan RDS Cluster Edition. Jika Anda ingin menggunakan fitur ini pada instance RDS yang menjalankan RDS High-availability Edition, Anda harus membuat instance RDS baca-saja. Setelah mengaktifkan fitur proksi database, fitur pemisahan baca/tulis secara otomatis diaktifkan untuk instance RDS Anda. Tidak diperlukan operasi manual.
RDS High-availability Edition: Jika instance RDS Anda menjalankan RDS High-availability Edition, instance RDS sekunder tidak dapat diakses. Untuk mengimplementasikan pemisahan baca/tulis, buat instance RDS baca-saja, lalu aktifkan fitur proksi database.
Instance RDS pada RDS Cluster Edition: Jika instance RDS Anda menjalankan RDS Cluster Edition, node sekunder dapat diakses dan hanya memproses permintaan baca. Anda dapat langsung mengaktifkan fitur proksi database untuk mengimplementasikan pemisahan baca/tulis.
Untuk menggunakan fitur pemisahan baca/tulis, Anda harus menggunakan titik akhir proksi database untuk terhubung ke instance RDS Anda. Klik Proksi Database di panel navigasi sisi kiri halaman detail instance untuk mendapatkan titik akhir proksi database. Setelah terhubung ke instance RDS Anda menggunakan titik akhir proksi database, titik akhir tersebut secara otomatis meneruskan permintaan baca dan tulis berdasarkan logika yang digunakan untuk meneruskan permintaan. Setelah mengaktifkan fitur pemisahan baca/tulis, Anda dapat melakukan operasi berikut:
Konfigurasikan atribut baca/tulis dan bobot baca: Anda dapat mengubah atribut baca/tulis titik akhir proksi database dan bobot baca instance RDS untuk mengisolasi permintaan dan menyesuaikan beban pada setiap instance.
Kueri distribusi pernyataan SQL: Anda dapat sementara mengaktifkan fitur Penjelajah SQL dan Audit untuk menanyakan pernyataan SQL yang dijalankan pada setiap instance RDS guna memahami distribusi permintaan baca dan tulis. Anda akan dikenakan biaya untuk menggunakan fitur Penjelajah SQL dan Audit. Jika tidak lagi memerlukan fitur ini, Anda dapat menonaktifkannya.
Setelah fitur proksi database diaktifkan dan pemisahan baca/tulis diimplementasikan, Anda dapat mengonfigurasi atribut baca/tulis dan menentukan bobot baca. Untuk informasi lebih lanjut, lihat Konfigurasikan atribut baca/tulis dan bobot baca.
Logika pemrosesan titik akhir proksi database berdasarkan atribut baca/tulis
Atribut baca/tulis | Cara menentukan bobot baca | Bobot instance RDS utama | Kasus normal | Setelah instance RDS baca-saja terakhir dihapus | Setelah semua instance RDS baca-saja mengalami kegagalan |
Baca-saja | Otomatis atau Kustom | Anda tidak dapat menentukan bobot baca untuk instance RDS utama Anda. | Instance RDS utama: tidak memproses permintaan baca atau tulis. Dalam kasus ini, tidak ada penerusan permintaan yang dilakukan. Titik akhir proksi database: hanya memproses permintaan baca. | Instance RDS utama: tidak memproses permintaan baca atau tulis. Dalam kasus ini, tidak ada penerusan permintaan yang dilakukan. Titik akhir proksi database: tidak memproses permintaan baca atau tulis. Dalam kasus ini, terjadi kesalahan koneksi. | Instance RDS utama: tidak memproses permintaan baca atau tulis. Dalam kasus ini, tidak ada penerusan permintaan yang dilakukan. Titik akhir proksi database: tidak memproses permintaan baca atau tulis. Dalam kasus ini, terjadi kesalahan koneksi. |
Baca dan tulis | Otomatis | Bobot sama dengan 0 Untuk informasi lebih lanjut, lihat Aturan alokasi bobot baca oleh sistem. | Instance RDS utama: hanya memproses permintaan tulis. Titik akhir proksi database: memproses permintaan baca dan tulis. | Instance RDS utama: memproses permintaan baca dan tulis. Titik akhir proksi database: memproses permintaan baca dan tulis. | Instance RDS utama: memproses permintaan baca dan tulis. Titik akhir proksi database: memproses permintaan baca dan tulis. |
Kustom | Bobot lebih besar dari 0 | Instance RDS utama: memproses permintaan baca dan tulis. Titik akhir proksi database: memproses permintaan baca dan tulis. | Instance RDS utama: memproses permintaan baca dan tulis. Titik akhir proksi database: memproses permintaan baca dan tulis. | Instance RDS utama: memproses permintaan baca dan tulis. Titik akhir proksi database: memproses permintaan baca dan tulis. | |
Bobot sama dengan 0 | Instance RDS utama: hanya memproses permintaan tulis. Titik akhir proksi database: memproses permintaan baca dan tulis. | Instance RDS utama: memproses permintaan baca dan tulis. Titik akhir proksi database: memproses permintaan baca dan tulis. | Instance RDS utama: memproses permintaan baca dan tulis. Titik akhir proksi database: memproses permintaan baca dan tulis. |
Tidak ada penerusan permintaan: menunjukkan bahwa instance RDS utama tidak terlibat dalam penerusan permintaan baca-saja.
Kesalahan koneksi: menunjukkan bahwa kesalahan koneksi dilaporkan ketika terminal proksi tidak memproses permintaan baca atau tulis.
Dalam mode baca/tulis, ketika bobot instance RDS utama diatur ke 0, permintaan baca tidak diteruskan ke instance RDS utama secara default. Namun, jika instance RDS baca-saja dari instance RDS utama mengalami kegagalan, petunjuk paksa ditentukan, atau pemisahan transaksi diaktifkan, permintaan baca diteruskan ke instance RDS utama.
Untuk informasi lebih lanjut, lihat Konfigurasikan atribut baca/tulis dan bobot baca proksi database.