von Dominique Stender, 04.09.2007

Lösungen für eine bessere Performance in TYPO3 Version 4: TYPO3 ausreizen

Aus dem
t3n Magazin Nr. 9

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 TYPO3 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

Empfohlene Artikel

Was erwartet uns in TYPO3 4.7?

Was erwartet uns in TYPO3 4.7?

Plangemäß ist inzwischen die zweite Alpha von TYPO3 4.7 erschienen – ein guter Zeitpunkt, um einen Blick auf die...