Erfahrungsbericht zur RDB-Partitionierung bei GitHub
(github.blog)-
GitHub startete vor über 10 Jahren mit RoR und einer einzelnen MySQL-Instanz
-
2019 begann die Partitionierung, danach wurden über 2 Jahre hinweg verschiedene Arbeiten durchgeführt
→ 2021 war die DB-Last laut Bericht um 50 % gesunken
- Virtuelle Partitionen
-
Vor dem Verschieben der eigentlichen Tabellen erfolgte eine virtuelle Trennung auf der Application-Layer-Ebene
-
Tabellen wurden gruppiert und zu Schema-Domains zusammengefasst; mit einem SQL-Linter wurde die Einhaltung der Grenzen erzwungen
→ damit die spätere Partitionierung sicherer wird
- Mit Query Linter und Transaction Linter wurden die virtuellen Grenzen überprüft
- Daten ohne Downtime verschieben
- Nutzung der Vertical-Sharding-Funktion von Vitess
→ Nach dem Deployment von VTGate in einem Kubernetes-Cluster wurde der Verbindungspunkt umgestellt
- Einführung eines Write-Cutover-Prozesses
→ Mithilfe der Replication-Funktion von MySQL wurden Daten in einen anderen Cluster eingespeist
→ Mit ProxySQL wurden MySQL-Client-Verbindungen multiplexed
Ergebnis
-
2019 beantwortete mysql1 als Single-Cluster im Durchschnitt 950.000 Queries pro Sekunde
-
2021 war die Last auf mehrere Cluster verteilt; bei durchschnittlich 1,2 Millionen Queries pro Sekunde halbierte sich die Host-Last
Noch keine Kommentare.