GitHub'un RDB bölümleme deneyimi
(github.blog)-
10 yılı aşkın süre önce RoR ve tek bir MySQL instance'ı ile başlayan GitHub
-
2019'da bölümlemeye başlayıp 2 yıl boyunca çeşitli çalışmalar yürütmelerinin ardından paylaşılan deneyimler
→ 2021 itibarıyla DB yükünün %50 azaldığı belirtiliyor
- Sanal bölümleme
-
Gerçek tabloları taşımadan önce uygulama katmanında sanal olarak ayırma
-
Tabloları gruplayıp şema domain'leri altında topladılar ve SQL Linter ile sınırların zorunlu olarak korunmasını sağladılar
→ Sonradan bölümleme yapılırken güvenli olması için
- Query Linter ve Transaction Linter ile sanal sınırları doğrulama
- Kesinti olmadan veri taşıma
- Vitess'in Vertical Sharding özelliğini kullandılar
→ VTGate'i Kubernetes cluster'ına dağıttıktan sonra bağlantı noktasını değiştirdiler
- Write-cutover süreci devreye alındı
→ MySQL'in Replication özelliğiyle veriyi başka bir cluster'a aktardılar
→ ProxySQL ile MySQL istemci bağlantılarını multiplex ettiler
Sonuç
-
2019'da tek cluster olan mysql1 saniyede ortalama 950 bin sorguya yanıt veriyordu
-
2021'de multi-cluster yapıya dağıtıldı; saniyede ortalama 1,2 milyon sorguya yanıt verirken host yükü yarıya indi
Henüz yorum yok.