[MySQL] Datenbankproblem nach Serverumzug

Bei einem Umzug mehrerer MySQL Datenbanken auf einen neuen Server, gab MySQL beim Starten folgende Fehlermeldungen aus:

ERROR 1577 (HY000) at line 1: Cannot proceed because system tables used by Event Scheduler were found damaged at server start

ERROR 1547 (HY000) at line 1: Column count of mysql.proc is wrong. Expected 20, found 16. The table is probably corrupted

Bei einem Wechsel auf einen neuen Linux-Server, mit einem anderen Linux-Betriebssystem, ist es sehr gut möglich, dass auf dem neuen System auch eine andere MySQL-Version läuft, so war es auch hier der Fall. Es ist wichtig, dass dann ein Upgrade der Datenbanken durchgeführt wird, um solche Fehler zu vermeiden . In unserem Fall war ein normales Upgrade nicht mehr möglich, die Datenbanken wurden schon, wenn auch nur für kurze Zeit, produktiv genutzt. MySQL bietet die Möglichkeit ein –force Upgrade durchzuführen, dies konnte in unserem Fall die Probleme der Datenbanken erfolgreich beseitigen und Mysql läuft nun Fehlerfrei. Anzuwenden ist es wie folgt:

  1. Es wird ein Datenbankbenutzer benötigt, der die Rechte für diese Aktion inne hat, in den meisten Fällen wird dies der root Benutzer von MySQL sein (hiervon gehe ich im Beispiel aus). Es kann aber auch sein, dass statt root ein Benutzer admin,… existiert, Hosting Provider machen so etwas gerne.
  2. Verbindet euch nun mit dem Linux System, z.B. per SSH. Wenn ihr euch mit dem Server per eingeschränktem Useraccount verbunden habt, so wechselt nun mit „su“ zu root. Als nächstes führt ihr folgendes Kommando aus:
    • mysql_upgrade -u root -p --verbose --force
  3. mysql_upgrade führt eigentlich mysqlcheck mit den Parametern –all-databases –check-upgrade –auto-repair aus. So wird das Upgrade also auf alle Datenbanken und alle Tabellen angewandt.
  4. Waren die Eingaben korrekt, und die Reparatur erfolgreich, so muss der Server nur noch einmal gestoppt und wieder gestartet werden. Unter Debian nutzt man folgende Befehle:
    • service mysql stop
    • service mysql start
  5. Die Fehlermeldungen sollten nun Vergangenheit sein. Generell wird empfohlen, bei jedem Upgrade von Mysql, auch ein Upgrade der Datenbanken durchzuführen.

[Linux Howto] Suchen und Ersetzen mit Vi(m)

Ich musste heute auf einem Linux-System ohne grafische Oberfläche eine Konfigurationsdatei anpassen. Hierbei sollte der alte Servername an vielen Stellen gegen den neuen Hostname ausgetauscht werden. Natürlich kann man die einzelnen Fundstellen von Hand editieren, aber im „Vi“ gibt es einen schönen Ausdruck, mit dem ein String gesucht und ersetzt werden kann.

Wer „Vi“ nicht kennt, es handelt sich hierbei um einen Editor (der über extrem viele Shortcuts und Anpassungsmöglichkeiten verfügt), der auf jedem Linux-/Unix-System zu finden ist. Die Bedienung ist etwas gewöhnungsbedürftig, ermöglicht aber nach etwas Einarbeitungszeit extrem schnelles Editieren und Coden.

Nun aber zum „Suchen und Ersetzen“ mit vi:

Möchte man alle Fundstellen gegen einen neuen String austauschen, so bringt folgendes Kommando das gewünschte Ergebnis:

:%s/string_alt/string_neu /g

Möchte man nur eine Zeichenkette austauschen, so lässt man einfach das „/g“ weg.

Da hierbei reguläre Ausdrücke verwendet werden, ist es wichtig vor speziellen Zeichen, wie z.B. einem Punkt, den so genannten Escapecharacter einzufügen. Hierbei handelt es sich um einen Backslash „\“. Statt . würde man also \. eingeben.

Wichtig !!!
Seid vorsichtig mit Befehlen im Terminal, ausgeführte Befehle können euer System dauerhaft schädigen und zu Datenverlusten führen. Also verschafft euch zuerst das notwendige Wissen und verwendet erst dann das Terminal. Ich hafte nicht für Schäden, die durch die Anwendung meiner Howtos entstehen.

Wichtig !!!

Seid vorsichtig mit Befehlen im Terminal, ausgeführte Befehle können euer System dauerhaft schädigen und zu Datenverlusten führen. Also verschafft euch zuerst das notwendige Wissen und verwendet erst dann das Terminal. Ich hafte nicht für Schäden, die durch die Anwendung meiner Howtos entstehen.

Links:

[Linux] Ubuntu per USB-Stick installieren

Ich bin heute auf ein geniales Tool gestoßen, um Ubuntu (oder eine andere Linux-Distro) per USB-Stick zu installieren. Das eignet sich natürlich besonders für Geräte ohne DVD-Laufwerk, wie z.B. die aktuellen Netbooks, oder eben für mein kleines Thinkpad X61s. Das Tool von dem ich hier schreibe nennt sich UNetbootin, ist Open Source und kann von sourceforge.net in einer Windows- und einer Linux-Version geladen werden. Ich habe mich für die Windows-Variante entschieden. Nach dem Herunterladen und Entpacken des Programms kann es auch direkt ohne Installation gestartet werden.

unetbootin_01.jpg

Als erstes wählt man die zu installierende Linux-Variante aus, in meinem Fall Ubuntu. Anschließend wählt man das zugehörige ISO-Image aus, das man von der jeweiligen Distributions-Homepage geladen hat. Als Typ kommt bei mir nur USB Drive in Frage und an dieser Stelle sollte man überprüfen, dass das angezeigte Laufwerk auch zu dem USB-Stick passt, denn dieser verliert bei einem Klick auf „OK“ jegliche Daten und das Tool kopiert die notwendigen Installationsdaten auf den Stick und macht ihn bootfähig.

unetbootin_02.png

unetbootin_03.png

Nach der Installation kann man zwischen einem Neustart wählen, wenn das Linux auf dem aktuellen System aufgespielt werden soll, oder man beendet den Assistenten und nutzt den USB-Stick an jedem beliebigen Gerät, das von USB booten kann. Denkt daran, dass Ihr im BIOS das Booten von USB aktiviert!

Wenn ihr von dem USB-Stick hochfahrt, startet bei Ubuntu ein Live-Modus und ihr könnt zuerst mal Ubuntu etwas testen, oder ihr klickt auf dem Desktop auf Installieren. So einfach war es echt noch nie, ein Linux per USB-Stick zu nutzen. Also probiert es ruhig mal aus.

Links: