Operasi O&M yang memicu pergantian pada instance ApsaraDB RDS for MySQL dapat menyebabkan koneksi sementara antara aplikasi dan proksi database terputus, berpotensi mengganggu layanan. Artikel ini menjelaskan cara mengonfigurasi pengaturan koneksi persisten untuk menjaga koneksi tetap aktif, meningkatkan ketersediaan instance, dan mengurangi biaya pemeliharaan.
Deskripsi fitur
Fitur koneksi persisten disediakan oleh proksi database ApsaraDB RDS for MySQL. Saat operasi O&M yang memicu pergantian dilakukan, fitur ini memastikan koneksi antara aplikasi dan proksi database tetap hidup. Dengan menggunakan titik akhir proksi database, kesalahan putus koneksi tidak akan dilaporkan. Gambar berikut menunjukkan detailnya.


Implementasi
Koneksi proksi database dibagi menjadi dua jenis: koneksi frontend antara proksi database dan klien serta koneksi backend antara proksi database dan database. Jika koneksi backend terganggu selama operasi seperti pergantian, koneksi frontend tetap aktif, sehingga menerapkan koneksi persisten.
Untuk koneksi backend antara proksi database dan instance RDS, koneksi persisten diimplementasikan dengan memulihkan status koneksi setelah gangguan.
Status koneksi backend bergantung pada informasi seperti variabel sistem, variabel pengguna, tabel sementara, pengkodean karakter, serta status transaksi dan pernyataan PREPARE. Artikel ini menggunakan contoh set names utf8mb4 untuk menjelaskan implementasi koneksi persisten di ApsaraDB RDS for MySQL.
Pergantian
Bagian ini menjelaskan bagaimana proksi database memastikan koneksi persisten selama pergantian.
Berikut adalah daftar operasi O&M yang memicu pergantian:
Pergantian utama/sekunder
Pembaruan versi mesin minor
Modifikasi parameter yang memerlukan restart agar modifikasi berlaku
Perubahan konfigurasi instance RDS utama
Mulai Pergantian: Blokir Koneksi dan Permintaan Baru
Proksi database tidak mendukung transaksi persisten dan memproses sesi berdasarkan status sesi.
Sesi dalam transaksi aktif selama pemblokiran: Proksi database meneruskan permintaan ke instance RDS utama untuk diproses.
Sesi dalam transaksi baru selama pemblokiran: Proksi database memblokir permintaan, dan klien menunggu respons server.
Sesi dalam transaksi aktif setelah pemblokiran: Koneksi antara klien dan proksi database terputus, dan instance RDS membatalkan transaksi yang belum dikomit.

Pergantian: Ganti Status Koneksi yang Ada
Berikut adalah penjelasan tentang status koneksi yang ada selama pergantian:
Koneksi non-persisten: Proksi database mengakhiri seluruh koneksi.
Koneksi persisten: Koneksi diakhiri dari instance RDS saat ini dan dialihkan ke instance RDS baru.
Koneksi ke instance RDS utama asli di pool koneksi: Koneksi dilepaskan.

Telah Diganti: Bentuk Ulang Koneksi
Koneksi yang tetap hidup setelah pergantian dapat dipulihkan setelah koneksi antara proksi database dan instance RDS utama baru dibentuk.

Failover
Jika instance RDS utama gagal, sistem secara otomatis menaikkan instance RDS sekunder sebagai instance RDS utama baru dan memindahkan beban kerja dari instance RDS utama asli. Pergantian ini tidak terduga dan disebut failover.
Proksi database menyimpan pernyataan SQL yang sedang dieksekusi atau akan diteruskan. Jika instance RDS gagal, koneksi backend antara proksi database dan database terganggu. Jika proksi database mendeteksi failover, koneksi antara proksi database dan klien tidak segera terputus. Proksi database meneruskan permintaan baca yang gagal ke instance RDS yang tersedia dan memulihkan koneksi.
Proksi database tidak dapat menjamin bahwa instance RDS berhasil memproses permintaan tulis yang gagal. Oleh karena itu, koneksi persisten tidak didukung untuk permintaan tulis selama failover.
Aktifkan koneksi persisten
Mulai 9 Januari 2024, ketika Anda mengaktifkan fitur proksi database untuk instance ApsaraDB RDS for MySQL yang memenuhi persyaratan di bagian "Prasyarat", koneksi persisten diaktifkan secara default. Setelah diaktifkan, Anda dapat menonaktifkan koneksi persisten kapan saja.
Prasyarat
Koneksi persisten selama pergantian
Instance RDS Anda harus memenuhi persyaratan berikut:
Instance RDS menjalankan MySQL 5.6, MySQL 5.7, atau MySQL 8.0.
Instance RDS menjalankan Edisi Ketersediaan Tinggi RDS atau Edisi Kluster RDS.
Instance RDS menggunakan disk cloud atau Premium Local SSD.
Instance RDS menggunakan proksi database tujuan umum atau spesifikasi khusus.
Fitur proksi database diaktifkan untuk instance RDS, dan versi proksi database adalah 1.14.5_20231207 atau lebih baru. Untuk informasi lebih lanjut, lihat Aktifkan Fitur Proksi Database.
Koneksi persisten selama failover
Instance RDS Anda harus memenuhi persyaratan berikut:
Instance RDS menjalankan MySQL 5.6, MySQL 5.7, atau MySQL 8.0.
Instance RDS menjalankan Edisi Ketersediaan Tinggi RDS atau Edisi Kluster RDS.
Instance RDS menggunakan disk cloud atau Premium Local SSD.
Instance RDS menggunakan proksi database spesifikasi khusus.
CatatanProksi database tujuan umum mendukung koneksi persisten hanya selama pergantian. Proksi database spesifikasi khusus mendukung koneksi persisten selama pergantian dan failover.
Fitur proksi database diaktifkan untuk instance RDS, dan versi proksi database adalah 2.9.1 atau lebih baru. Untuk informasi lebih lanjut, lihat Aktifkan Fitur Proksi Database.
Prosedur
Masuk ke Konsol Manajemen ApsaraDB RDS dan buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instance RDS Anda berada, temukan instance RDS, lalu klik ID instance.
Di panel navigasi kiri, klik Database Proxy.
Di bagian Informasi Dasar, klik Aktifkan di sebelah kanan Koneksi Persisten.
CatatanJika Anda tidak menemukan Koneksi Persisten, instance RDS Anda tidak memenuhi prasyarat.
Gunakan koneksi persisten
Prasyarat
Fitur proksi database diaktifkan untuk instance RDS Anda.
Koneksi persisten diaktifkan untuk instance RDS Anda.
Prosedur
Masuk ke Konsol Manajemen ApsaraDB RDS dan buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instance RDS Anda berada, temukan instance RDS, lalu klik ID instance.
Di panel navigasi kiri, klik Database Proxy.
Konfigurasikan pengaturan koneksi untuk titik akhir proksi database yang diperlukan berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Konfigurasikan Pengaturan Koneksi untuk Titik Akhir Proksi Database. Atur Atribut Baca/Tulis ke Baca/Tulis (Pemisahan Baca/Tulis).
Ajukan permohonan untuk titik akhir internal atau publik untuk titik akhir proksi database yang diperlukan berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Kelola Titik Akhir Proksi Database.
Gunakan port dan endpoint internal atau publik dari titik akhir proksi database yang diperlukan untuk menghubungkan instance RDS Anda ke aplikasi.
Saat operasi O&M yang memicu pergantian dilakukan pada instance RDS Anda, fitur proksi database membantu memastikan koneksi persisten. Dengan cara ini, koneksi yang dibuat menggunakan titik akhir proksi database tetap aktif.
Batasan
Selama pergantian, koneksi persisten tidak didukung dalam skenario berikut:
Server MySQL tidak mengembalikan seluruh set hasil dari koneksi. Misalnya, jika set hasil berukuran 100 MB, hanya 50 MB yang dikembalikan, dan sisanya sedang dikembalikan.
Transaksi yang belum dikomit ada.
Pernyataan CHANGE USER dieksekusi pada koneksi.
Pernyataan LOAD DATA dieksekusi pada koneksi.
Tabel sementara ada.
Koneksi untuk langganan log biner menggunakan titik akhir proksi database ada.
Fungsi FOUND_ROWS, ROW_COUNT, dan LAST_INSERT_ID tidak didukung. Anda dapat memanggil fungsi tersebut, tetapi hasil panggilannya mungkin tidak akurat. Penggunaan
SELECT FOUND_ROWS()tidak lagi direkomendasikan oleh MySQL. Kami merekomendasikan Anda menggantiSELECT FOUND_ROWS()denganSELECT COUNT(*) FROM tb1. Untuk informasi lebih lanjut, lihat FOUND_ROWS().
Catatan penggunaan
Jika Anda mengeksekusi pernyataan
SELECT CONNECTION_ID()untuk menanyakan ID thread koneksi Anda, ID thread koneksi dapat berubah karena rekoneksi.Alamat IP dan nomor port yang ditampilkan dalam output pernyataan
SHOW PROCESSLISTatau di halaman SQL Explorer mungkin berbeda dari alamat IP dan nomor port klien karena rekoneksi.Jika variabel yang ditentukan pengguna ada pada koneksi dan koneksi tetap hidup, variabel yang ditentukan pengguna menjadi tidak valid.
Nonaktifkan koneksi persisten
Prasyarat
Koneksi persisten diaktifkan untuk instance RDS Anda.
Prosedur
Masuk ke Konsol Manajemen ApsaraDB RDS dan buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instance RDS Anda berada, temukan instance RDS, lalu klik ID instance.
Di panel navigasi kiri, klik Database Proxy.
Di bagian Basic Information, klik Disable di sebelah kanan Persistent Connections.
Pengujian
Bagian ini menjelaskan pengujian pada koneksi persisten selama pergantian.
Lingkungan pengujian
Berikut adalah deskripsi instance RDS yang digunakan untuk pengujian:
Instance RDS menjalankan MySQL 8.0 pada Edisi Ketersediaan Tinggi RDS.
Instance RDS menggunakan tipe instance mysql.x2.xlarge.2c. Tipe instance ini termasuk dalam keluarga instance spesifikasi khusus dan menyediakan 8 inti CPU dan 16 GB memori.
Alat pengujian: Sysbench
Data pengujian:
100 tabel disiapkan, dan setiap tabel berisi 40.000 entri data.
Jumlah thread konkuren adalah 128.
Metode pengujian
Dalam skenario O&M yang berbeda, uji rasio koneksi yang tetap hidup pada instance RDS sebelum dan sesudah operasi O&M yang memicu pergantian dilakukan.
Eksekusi pernyataan pengujian berikut:
sysbench --db-driver=mysql --mysql-host=127.X.X.1 --mysql-port=3306 --mysql-user=username --mysql-password='' --tables=100 --table-size=40000 --threads=128 --mysql-db=sbtest --report-interval=5 --time=600 oltp_read_write runBerikut adalah penjelasan parameter kunci dalam pernyataan pengujian di atas:
db-driver: mesin database.
mysql-host: titik akhir proksi database.
tables: jumlah tabel dalam database.
table-size: jumlah entri yang dimiliki setiap tabel.
threads: jumlah thread konkuren.
time: durasi pengujian. Unit: detik.
Hasil pengujian
Dalam skenario O&M berikut, rasio koneksi tetap hidup pada instance RDS mencapai 100%.
Pergantian | Rasio koneksi yang tetap hidup |
Pembaruan versi mesin minor | 100% |
Pergantian utama/sekunder | 100% |
Perubahan konfigurasi instance RDS utama | 100% |
Modifikasi parameter yang memerlukan restart agar modifikasi berlaku | 100% |
Operasi terkait
Operasi | Deskripsi |
Memodifikasi fitur proksi database sebuah instance. | |
Memeriksa detail proksi database sebuah instance. |