Die Replikationsfunktionen in MySQL basierten ursprünglich auf der Weitergabe von SQL-Anweisungen vom Master an den Slave. Dies bezeichnete man als anweisungsbasierte Replikation (Statement-Based Replication, SBR). Seit MySQL 5.1.5 gibt es noch eine andere Basis für die Replikation: die datensatzbasierte Replikation (Row-Based Replication, RBR). Statt die SQL-Anweisungen an den Slave zu senden, schreibt der Master alle Ereignisse, die angeben, wie einzelne Datensätze in der Tabelle geändert werden, in sein Binärlog.
Bei der klassischen anweisungsbasierten Replikation kann es Probleme mit der Replikation gespeicherter Routinen geben. Diese Probleme können Sie umgehen, indem Sie stattdessen die datensatzbasierte Replikation benutzen. Eine umfassende Liste möglicher Probleme finden Sie unter Abschnitt 19.4, „Binärloggen gespeicherter Routinen und Trigger“.
Wenn Sie MySQL aus dem Quellcode erstellen, steht die
datensatzbasierte Replikation nur dann zur Verfügung, wenn Sie
configure mit der Option
--with-row-based-replication
aufrufen.
MySQL Server verwendet standardmäßig auch dann die
anweisungsbasierte Replikation, wenn MySQL mit Unterstützung der
datensatzbasierten Replikation konfiguriert wurde. Wenn Sie die
datensatzbasierte Replikation verwenden wollen, starten Sie den
Server mit der Option --binlog-format=row
, um die
datensatzbasierte Replikation global (d. h. für alle
Clientverbindungen) zu aktivieren. Die Option aktiviert
automatisch auch
innodb_locks_unsafe_for_binlog
, was bei der
datensatzbasierten Replikation sicher zu verwenden ist.
Die anweisungsbasierte Replikation kann beim Serverstart entweder
durch Angabe von --binlog-format=statement
oder
durch vollständiges Weglassen der Option
--binlog-format
ausgewählt werden.
Die datensatzbasierte Replikation bewirkt, dass die meisten Änderungen unter Verwendung des datensatzbasierten Formats in das Binärlog geschrieben werden. Allerdings müssen einige Änderungen auch als Anweisungen in das Binärlog geschrieben werden:
ANALYZE TABLE
REPAIR TABLE
OPTIMIZE TABLE
Die Option --binlog-row-event-max-size
ist für
Server verfügbar, die die datensatzbasierte Replikation
unterstützen. Datensätze werden in Blöcken von einer Größe in
das Binärlog geschrieben, die den Wert dieser Option nicht
übersteigt. Der Wert muss ein Vielfaches von 256 sein, Standard
ist 1024.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.