Die zweite Maschine – der Slave – wird nicht aktiv benutzt. Stattdessen dient er als „Backup“, falls der Master auf Grund von Defekten an der Hardware ausfallen sollte. Um das zu erreichen, wird auf dem Master das so genannte „Binlog“ aktiviert. Der MySQL-Master schreibt nun alle die Datenbank verändernden SQL-Statements in ein binäres Logfile. Der oder die Slaves wiederum lesen dieses Binlog aus und führen die Statements auf ihren lokalen Tabellen ebenfalls aus. Auf diese Weise wird der Zustand der Daten des Masters fast in Echtzeit auf die Slaves repliziert. Fällt der Master aus, sind die Daten noch vorhanden und der Slave kann so umkonfiguriert werden, dass er zum Master wird. Details zu diesem Verfahren liefert das MySQL-Handbuch [4].

Nun ist es nicht unbedingt sinnvoll, jedes Statement, das an die Datenbank absetzt, auf die Slaves zu replizieren, weil das Schreiben des Binlogs ebenfalls Last auf der MySQL-Maschine verursacht. Die Cache-Tabellen und eventuell auch die Frontend-Sessions müssen nicht unbedingt gesichert werden. Solange die Last es erlaubt, bringt die Replikation dieser Daten Vorteile, aber wirklich nötig ist sie bei vielen Systemen nicht.

Leider kann man in MySQL das Binlog nicht so konfigurieren, dass einzelne Tabellen aus der Replikation ausgenommen werden, lediglich einzelne Datenbanken lassen sich ausschließen. Allerdings ist es möglich, innerhalb einer Datenbank-Connection per SQL-Statement die Replikation kurzzeitig ein- und auszuschalten, wenn der MySQL-Benutzer über SUPER-Privilegien verfügt.

Die Lösung: Über die statische Methode „highPerformance::switchMySQLBinLog()“ wird geprüft, ob das MySQL-Binlog zurzeit aktiv ist und anschließend deaktiviert, sofern das gewünscht ist. Ein erneuter Aufruf der Methode schaltet das Binlog wieder ein. Die dafür relevanten Methoden des TYPO3-Kerns wurden so überschrieben, dass sie das Binlog deaktivieren, bevor sie ein schreibendes Statement, etwa auf die Cache-Tabellen, absetzen und es anschließend wieder aktivieren. Die Optimierung des Binlogs muss über die PHP-Konstante „MYSQL_BINLOG_SPEEDUP“ aktiviert werden.

Seite:  1 2 3 4 5 6 7 8 9 10

Das interessiert dich bestimmt auch

Hilfreiche Ressourcen zu TYPO3

Hilfreiche Ressourcen zu TYPO3

TYPO3 ist mit über 500.000 Installationen, einer Community von mehr als 100.000 internationalen Mitgliedern und über...