Datenbank: Github partitioniert zentralen MySQL-Cluster für halbe Last

Die technische Grundlage von Github war lange eine einfache Webanwendung. Vor allem für die zentrale MySQL-Datenbank brachte das viele Probleme.

Artikel veröffentlicht am ,
Github muss seine Technik im laufenden Betrieb verbessern.
Github muss seine Technik im laufenden Betrieb verbessern. (Bild: Github)

"Vor mehr als 10 Jahren begann Github.com wie viele andere Webanwendungen dieser Zeit - basierend auf Ruby on Rails - mit einer einzigen MySQL-Datenbank zum Speichern der meisten Daten", heißt es in einem aktuellen Blogbeitrag des Engineering-Teams von Github. Die zentrale MySQL-Datenbank sorgte dabei mit dem folgenden Wachstum des Code-Hosting-Dienstes jedoch für immer mehr Probleme, so dass sich das Team dazu entschied, den Aufbau grundsätzlich zu ändern.

Stellenmarkt
  1. Informatiker / Informatikerin (m/w/d)
    NLQ Hildesheim, Hildesheim
  2. (Senior) Agile Coach Consultant (m/w/d)
    AUSY Technologies Germany AG, Düsseldorf, Frankfurt am Main, Hamburg, München, Nürnberg
Detailsuche

"So haben wir beispielsweise damit begonnen, Daten für einige Funktionen (wie den Status) in separaten MySQL-Datenbanken zu speichern, wir haben Read-Replicas hinzugefügt, um die Last auf mehrere Rechner zu verteilen, und wir haben begonnen, ProxySQL zu verwenden, um die Anzahl der Verbindungen zu unseren primären MySQL-Instanzen zu reduzieren".

Der zentrale MySQL-Cluster blieb dabei aber zunächst weiter bestehen. Darin gespeichert wurden etwa die Profile der Nutzer, Repositories, Github-Issues oder auch Pull Requests. Dazu heißt es jedoch: "Wir hatten Mühe, die Größe unserer Datenbanksysteme angemessen zu halten und mussten immer wieder auf neuere und größere Maschinen umsteigen, um sie zu vergrößern."

Die Lösung für Github war hier die Partitionierung der Datenbank. Doch "bevor Datenbanktabellen physisch verschoben werden können, müssen wir sicherstellen, dass sie virtuell im Anwendungslayout getrennt sind", heißt es in dem Blog. Dazu haben die Beteiligten die Tabelle zunächst gruppiert und die Grenzen mit Hilfe von Lintern durchgesetzt. Die Linter erkennen dabei SQL-Abfragen und auch Transaktionen, die über die Gruppengrenzen hinweggehen und verhindern diese. Durch eine intelligente Wiederverwendung der MySQL-Replikation konnten die Daten letztlich auch physisch getrennt werden.

Versionsverwaltung mit Git: Praxiseinstieg (mitp Professional)
Golem Karrierewelt
  1. Implementing Cisco Enterprise Wireless Networks (ENWLSI): virtueller Fünf-Tage-Workshop
    10.-14.10.2022, virtuell
  2. Green IT: Praxisratgeber zur nachhaltigen IT-Nutzung (virtueller Ein-Tages-Workshop)
    26.10.2022, virtuell
Weitere IT-Trainings

Das Ergebnis der Arbeit ist für Github von großem Vorteil. So habe das Team zwar ein weiteres Wachstum der Zugriffe auf die Datenbanktabellen inzwischen auf rund 1,2 Millionen Abfragen pro Sekunde verzeichnet. Doch dank der Arbeit an der Partitionierung konnte die durchschnittliche Last auf jedem der Hosts etwa halbiert werden, wie es in dem Blogpost heißt. Zusätzlich zu der Partitionierung setzt das Entwicklungsteam inzwischen auch auf das sogenannte Sharding. Details dazu sollen folgen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Aktuell auf der Startseite von Golem.de
Die große Umfrage
Das sind Deutschlands beste IT-Arbeitgeber 2023

Golem.de und Statista haben 23.000 Fachkräfte nach ihrer Arbeit gefragt. Das Ergebnis ist eine Liste der 175 besten Unternehmen für IT-Profis.

Die große Umfrage: Das sind Deutschlands beste IT-Arbeitgeber 2023
Artikel
  1. Roadmap: CD Projekt kündigt neues Cyberpunk und mehrere Witcher an
    Roadmap
    CD Projekt kündigt neues Cyberpunk und mehrere Witcher an

    Project Polaris wird eine Witcher-Saga, Orion das nächste Cyberpunk 2077 und Hadar etwas ganz Neues: CD Projekt hat seine Pläne vorgestellt.

  2. Monitoring von Container-Landschaften: Prometheus ist nicht alles
    Monitoring von Container-Landschaften
    Prometheus ist nicht alles

    Betreuer von Kubernetes und Co., die sich nicht ausreichend mit der Thematik beschäftigen, nehmen beim metrikbasierte Monitoring unwissentlich einige Nachteile in Kauf. Eventuell ist es notwendig, den üblichen Tool-Stack zu ergänzen.
    Von Valentin Höbel

  3. USB-C: Europaparlament macht Weg für einheitliche Ladekabel frei
    USB-C
    Europaparlament macht Weg für einheitliche Ladekabel frei

    In der EU gibt es künftig eine Standard-Ladebuchse für Smartphones und weitere Elektrogeräte. Die IT-Wirtschaft sieht die Einigung kritisch.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • 3 Spiele für 49€ • Saturn Gutscheinheft • Günstig wie nie: LG OLED 48" 799€, Xbox Elite Controller 2 114,99€, AOC 28" 4K UHD 144 Hz 600,89€, Corsair RGB Midi-Tower 269,90€, Sandisk microSDXC 512GB 39€ • Bis zu 15% im eBay Restore • MindStar (PowerColor RX 6700 XT 489€) [Werbung]
    •  /