Pengalaman GitHub dalam mempartisi RDB
(github.blog)-
GitHub memulai lebih dari 10 tahun lalu dengan RoR dan satu instance MySQL tunggal
-
Pada 2019 mulai melakukan partisi dan selama 2 tahun menjalankan berbagai pekerjaan terkait
→ Hingga 2021, beban DB disebut turun 50%
- Partisi virtual
-
Sebelum memindahkan tabel sungguhan, pemisahan dilakukan secara virtual di lapisan aplikasi
-
Tabel-tabel dikelompokkan dan diikat ke dalam domain skema, lalu batasannya dipaksa menggunakan SQL Linter
→ Agar aman saat melakukan partisi nanti
- Batas virtual diverifikasi dengan Query Linter dan Transaction Linter
- Memindahkan data tanpa downtime
- Menggunakan fitur Vertical Sharding dari Vitess
→ Setelah VTGate dideploy ke klaster Kubernetes, titik koneksi diubah
- Mengadopsi proses write-cutover
→ Menggunakan fitur replication MySQL untuk mengalirkan data ke klaster lain
→ Menggunakan ProxySQL untuk memultiplex koneksi klien MySQL
Hasil
-
Pada 2019, mysql1 yang masih berupa klaster tunggal merespons rata-rata 950 ribu kueri per detik
-
Pada 2021, beban didistribusikan ke multi-klaster, dan sambil merespons rata-rata 1,2 juta kueri per detik, beban host menjadi setengahnya
Belum ada komentar.