MySQL verteilen und sichern: Master und Slave

Die Replikation

Die Einwege-Replikation bei MySQL basiert auf dem Binary-Log des Masters und steht seit Version 3.23.15 zur Verfügung. Ist das Binary-Log auf dem Master aktiviert, protokolliert dieser alle Queries, die zu Änderungen an der Datenbasis führen, in diesem Log. Jeder Eintrag im Binary-Log hat dabei eine eindeutige Positionskennung, also eine Art Hausnummer, mit der ein bestimmter Zustand im Master identifiziert werden kann.

Verbindet sich ein Slave mit dem Server, dann teilt dieser Slave dem Master im Zuge der Verbindung mit, an welcher Stelle er sich innerhalb des Binary-Logs befindet. Darauf reagiert der Master, indem er dem Slave alle Updates seit dieser Position mitteilt. Auf Basis dieser Information kann der Slave dann seine eigenen Daten auf den aktuellen Stand bringen. Sind Master und Slave auf dem gleichen Stand, so wartet der Slave auf weitere Updates und hält somit, solange er verbunden ist, immer die gleichen Daten vorrätig wie der Master.

Dies bringt einige interessante Implikationen mit sich: Es ist beispielsweise nicht notwendig, dass der Slave zu jedem Zeitpunkt mit dem Master verbunden bleibt. Trennt man die Verbindung, etwa um den Slave zu warten, so muss man die Verbindung nur wieder herstellen, um den Slave auf den neuesten Stand der Datenbasis zu bringen. Das ist nicht nur für einfache Wartungszwecke, sondern auch für aufwendige Operationen wie Komplett-Backups oder Betriebssystem-Updates optimal.