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. Ingenieur FH / Bachelor (m/w/d) der Fachrichtung Elektrotechnik, Nachrichtentechnik, Hochfrequenztechnik ... (m/w/d)
    Bayerisches Landeskriminalamt, Königsbrunn
  2. IT Spezialist Identity Management (gn)
    HORNBACH Baumarkt AG, Bornheim bei Landau Pfalz
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 Akademie
  1. Terraform mit AWS
    14.-15. Dezember 2021, online
  2. Linux-Systemadministration Grundlagen
    25.-29. Oktober 2021, online
  3. PostgreSQL Fundamentals
    6.-9. Dezember 2021, online
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
Age of Empires 4 im Test
Im Galopp durch die Geschichte

Acht Völker aus aller Welt: Das Echtzeit-Strategiespiel Age of Empires 4 schickt uns auf Windows-PC in spannende Kämpfe in aller Welt.
Von Peter Steinlechner

Age of Empires 4 im Test: Im Galopp durch die Geschichte
Artikel
  1. Elektroautos: BMW-Hauptwerk beendet 2024 Verbrennerproduktion
    Elektroautos
    BMW-Hauptwerk beendet 2024 Verbrennerproduktion

    BMW steigt zwar nicht komplett aus dem Verbrennergeschäft aus, doch ab 2024 sollen in Münchner Stammwerk keine Verbrennungsmotoren mehr gebaut werden.

  2. Hasbro: Halo Needler kommt als Nerf-Gun
    Hasbro
    Halo Needler kommt als Nerf-Gun

    Der Halo Needler kann motorisiert zehn Nerf-Elite-Darts verschießen und kommt mit Effektbeleuchtung und einem Standfuß.

  3. HT Aero: Xpeng kündigt fliegendes Auto an
    HT Aero
    Xpeng kündigt fliegendes Auto an

    HT Aero heißt das Flugauto, das der chinesische Autohersteller Xpeng 2024 auf den Markt bringen will.

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 • Bosch Professional & Lexware Steuersoftware bei Amazon günstiger • Alternate (u. a. Apacer 1TB SATA-SSD 86,90 & Team Group 1TB PCIe-4.0-SSD 159,90) • Asus ROG Strix Z590-A Gaming WIFI 258€ • Saturn Gutscheinheft mit Direktabzügen und Zugaben • Seagate SSDs & HDDs günstiger [Werbung]
    •  /