MySQL-Upgrade 5.1 auf 5.5

Ein Blick in die neuesten Software-Pakete der Linux Gentoo "Hardened" Distribution zeigt, dass die altehrwürdige MySQL-Version 5.1 nun endgültig durch eine aktuellere Version abgelöst wird. Interessant ist, dass sich die Gentoo-Verantwortlichen dazu entschlossen haben, einen direkten Sprung von 5.1 auf die Version 5.5 durchzuführen, was den einen oder anderen Administrator etwas versunsichert. So hat es sich doch in der Vergangenheit bewährt, stets auf die nächst höhere Version zu aktualisieren. Und nun soll man gleich vier Versionen überspringen?

Aber keine Sorge, das Upgrade auf die Version 5.5 ist überhaupt nicht kritisch und lässt sich wie ein "normales" Upgrade einstufen. Einerseits kann man den Verantwortlichen von Gentoo vertrauen. Andererseits findet man auch auf der offiziellen MySQL-Webseite einen Upgrade-Leitfaden von 5.1 auf 5.5.

In diesem kurzen Artikel wird gezeigt, wie man ein solches Upgrade durchführt und dass man sich vor diesem Schritt nicht fürchten braucht.

1. Webanwendungen auf MySQL-Kompatibilität prüfen

Absolute Voraussetzung ist, ob alle Webanwendungen mit MySQL 5.5 kompatibel sind. In diesem Beispiel sind folgende Webanwendungen installiert, welche mit MySQL 5.5 kompatibel sind:

  • Typo3 4.5
  • Typo4 4.4
  • phpBB 3

2. Testen in einer lokalen Testumgebung

Bevor man das Update n der Live-Online-Umgebung durchführt und man erst die Fehler entdeckt, wenn der Groschen in den Brunnen gefallen ist, wird das Testen in einer Testumgebung empfohlen. Hierfür gibt es viele Möglichkeiten, die alle das Ziel haben, eine 1:1 Kopie der Webseite auf dem eigenen Rechner (oder einem anderen Server) lauffähig zu machen.

Um nun die MySQL 5.5 Kompabilität zu überprüfen, installiert man auf der lokalen Testumgebung einen MySQL 5.5 Server und spielt eine Datensicherung der Online-Datenbank (bsp. mit MySQL 5.1) ein. Läuft die Webseite mit der MySQL 5.5 Datenbank problemlos, kann man mit dem MySQL-Upgrade auf dem Webserver starten

3. MySQL-Upgrade Leitfaden durchlesen

Man sollte sich immer die paar Minuten Zeit nehmen und sich die offiziellen Upgrade-Leitfäden zu Herzen nehmen. Vieles darin ist für das eigene Projekt nicht relavant. Die zutreffenden Punkte sollte man zwingend berücksichtigen!

Allgemeiner Upgrade Leitfaden:
http://dev.mysql.com/doc/refman/5.5/en/upgrading.html

Spezieller Upgrade Leitfaden 5.1 auf 5.5
http://dev.mysql.com/doc/refman/5.5/en/upgrading-from-previous-series.html

Leitfaden Nacharbeiten
http://dev.mysql.com/doc/refman/5.5/en/mysql-upgrade.html

4. Vollbackup

Wir brauchen immer einen Weg zurück zur Ausgangssituation. Daher erstellen wir uns ein vollständiges Backup aller Datenbanken inklusive der MySQL-System-Datenbanken:

mysqldump -u root -p --all-databases;

5. MySQL-Software auf 5.5 aktualisieren

Abhängig von dem Server-Betriebssystem wird es nun Zeit, die MySQL-Software zu aktualisieren und MySQL neuzustarten. Unter Gentoo gibt es die Besonderheit, dass auch PHP und Apache neu installiert werden müssen, um die Untersützung für 5.5 zu gewährleisten:

emerge mysql php apache
/etc/init.d/mysql restart
/etc/init.d/apache2 restart

6. mysql_upgrade

Abschließend wird empfohlen, auf der Linux-Bash das Tool mysql_upgrade auszuführen. Dieses überpüft alle Tabellen auf Fehler und korrigiert diese. Außerdem werden wichtige MySQL-Systemtabellen aktualisiert:

# mysql_upgrade -u root -p
Enter password:
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock'
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock'
db_utf8.ad_affilinet                               OK
db_utf8.pce_config                                 OK
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
[...]

Fazit und Abschluss

Damit ist das Upgrade von MySQL 5.1 auf Version 5.5 abgeschlossen. Prüfen kann man dies entweder über die Linux-Shell...

mysql --version
mysql  Ver 14.14 Distrib 5.5.39, for Linux (x86_64) using readline 6.2

oder über eine php-Daten mit folgendem Inhalt, die man anschließend im Browser aufruft:

// Auszug aus Datei info.php
<?php phpinfo(); ?>

Nun ist es Zeit, alle betroffenen Anwendungen und Skripte zu überprüfen. Nicht nur die Webseiten an sich sollten geprüft werden, sondern auch die Skripte, welche die Datensicherung betreffen. So macht sich beispielsweise mysqldump neuerdings mit folgendem Hinweis bemerkbar:

Warning: Using unique option prefix database instead of databases is deprecated and will be removed in a future release. Please use the full name instead.

Grund für diese Warnung ist, dass MySQL in Zukunft einige Paramter umbenennen wird. Aus dem Paramater --database wird nun --databases (also um das s ergänzt). Folgendes Backup-Skript wurde also angepasst:

mysqldump --lock-tables --add-drop-database --add-drop-table --databases meineDatenbank --user=meinBenutzer --password="meinPasswort" > meinBackup.sql

Trotz dieser wenigen nachträglichen Anpassung verdeutlicht dieser Artikel aber, dass das Upgrade kinderleicht vonstattengeht und man als Webseiten-Administrator dieses relativ schnell umsetzen kann. Die gesamte Dauer beträgt ca. 30 Minuten.