Zum Hauptinhalt Zur Navigation

Datenbank: Facebook braucht schon Jahre für MySQL-Update

Das Update von MySQL 5.6 auf das aktuelle 8.0 laufe bei Facebook wegen vieler Probleme schon seit "einigen Jahren" und ist noch nicht fertig.
/ Sebastian Grüner
28 Kommentare News folgen (öffnet im neuen Fenster)
Das MySQL-Update dauert bei Facebook Jahre. (Bild: Dado Ruvic/File Photo/Reuters)
Das MySQL-Update dauert bei Facebook Jahre. Bild: Dado Ruvic/File Photo/Reuters

Software-Updates von Abhängigkeiten können bei besonders großen Anwendungen und vor allem bei eigenen Anpassungen einige Zeit dauern. Das beschreibt nun auch der Betreiber von sozialen Netzwerken Facebook in seinem Engineering-Blog(öffnet im neuen Fenster) . Demnach habe das letzte große Update von MySQL auf Version 5.6 "länger als ein Jahr" gedauert. Darüber hinaus laufe ein Update auf Version 8.0 seit "einigen Jahren" .

Das Problem dabei für Facebook ist, dass die Version 5.6 nicht nur bereits acht Jahre alt ist, sondern seit Februar 2021 offiziell von Hersteller Oracle auch nicht mehr unterstützt wird. Hinzu kommt, dass Facebook das Update auf Version 5.7 ausgelassen hat. MySQL 8.0 ist erstmals vor mehr als drei Jahren erschienen, im Frühjahr 2018.

Dass das MySQL-Update bei Facebook so lange braucht, liegt wohl vor allem daran, dass das Unternehmen zahlreiche Anpassungen an dem Code vorgenommen hat. Für MySQL 5.6 seien das rund 1.700 Patches. Diese mussten alle auf Version 8.0 portiert werden. Zusätzlich dazu haben die Entwickler bei Facebook aber auch noch neue Funktionen für die alte Version geschrieben, da sie ja noch im Produktivbetrieb ist. Auch diese müssen letztlich portiert werden.

Darüber hinaus lief anderer Facebook-Code nicht mehr mit der neuen Version 8.0, so dass auch dieser Code angepasst und dafür ein Update-Pfad erarbeitet werden muss. Ein ähnliches Problem bezieht sich möglicherweise auf APIs, die mit MySQL 8.0 entfernt worden sind, aber in MySQL 5.6 noch vorhanden sind. Auch hier muss Facebook Lösungen finden. Hinzu kommt, dass Facebook mit Myrocks(öffnet im neuen Fenster) ein eigenes Storage-Backend für MySQL erstellt hat, das auf RocksDB basiert. Auch dieser Code musste auf die neue MySQL-Version vorbereitet werden.

Langer Upgrade-Pfad

Für das eigentliche Upgrade setzt Facebook auf Replikations-Cluster (Replika-Set), die alle die gleichen Daten vorhalten und aus Primär- und Sekundär-Instanzen bestehen. Ziel ist es, die Sekundär-Instanzen auf Version 8.0 zu migrieren, diese später als Primär-Instanz zum Lesen der Daten zu verwenden und letztlich die Instanzen mit der alten Version 5.6 zu löschen.

Auch wegen der bereits aufgezählten zahlreichen Probleme mit dem Code ist dies aber für Facebook alles andere als leicht umzusetzen. Denn um die Migration zu automatisieren, habe Facebook "neue Infrastruktur" erstellen müssen. Ebenso muss die Migration eines Clusters überprüft und validiert werden.

Inzwischen sei der größte Teil der Datenbank-Instanzen migriert und der Rest befinde sich bereits in der Migration. Und trotz all der Probleme zeige die Nutzung von MySQL 8.0 einige Vorteile für Anwendungen. Außerdem erweitere das Update, was Facebook mit MySQL machen könne.


Relevante Themen