MyISAM zu InnoDB konvertieren- so funktioniert es!
Wenn du mit dem Datenbanksystem MySQL Storage Engine arbeitest, bieten sich dir viele Optionen deine Datenbank zu verwalten. Mitunter kann es hier auch vorkommen, dass du deine Daten in ein neues Subsystem umwandeln musst oder möchtest. Dadurch bieten sich dir viele Vorteile und deine Datenbank ist auf dem neusten Stand. Damit du einen Überblick über Funktionalität und Konvertierung von MyISAM zu InnoDB erhältst, werden im folgenden die wichtigsten Aspekte erläutert.
WordPress Optimierung für einen schnelleren Onlineauftritt
Wenn du hier auf der Suche nach Optionen zur Konvertierung von MyISAM zu InnoDB bist, wirst du vermutlich vertraut sein mit der ganzen Materie. Um den Einstieg in das Thema zu finden, soll an dieser Stelle dennoch eine kurze Erläuterung stattfinden.
MySQL ist das unter anderem weltweit am meisten verbreitete System zur Verwaltung von relationalen Datenbanken. Es ist sowohl als open source Version verfügbar, als auch als geschlossene Version für Unternehmen. Angewendet werden kann es unter verschiedenen Betriebssystemen und es bildet somit eine Grundlage für viele Web Auftritte. MySQL wird vorrangig für die Datenspeicherung von Websites genutzt. So basieren viele der weltweit größten Websites auf MySQL Servern. Dazu gehören unter anderem YouTube, Twitter oder Facebook. All diese Portale greifen zur Abwicklung von Zugriffen aus dem Netz auf MySQL Datenbanken zurück.
In diesem Zusammenhang kommen wir dann auch bereits auf den Kern unserer Erläuterungen zu. Ein wichtiger Bestandteil von MySQL sind die Speichersubsysteme. In der Fachsprache werden diese auch “Engines” genannt. Jeder dieser Engines ist für einen bestimmten Zweck konzipiert und optimiert. Je nach Version, bilden sie nicht nur eine Datenbank ab, sondern implementieren eine Reihe von Funktionen, auf die wir noch zu sprechen kommen werden. Welchen Speicher Engine du für deine Zwecke nutzen solltest, hängt ganz davon ab, wofür du ihn benötigst.
Die hier referenzierten Engines MyISAM und InnoDB sind die gängigsten Versionen. Dennoch gibt es eine Reihe weiteren Optionen, zwischen denen du als Verwalter deiner Web Services auswählen kannst. Einige sind offizielle Versionen von MySQL, andere werden von unabhängigen Anbietern zur Verfügung gestellt. Falls du also eines Tages spezielle Anforderungen an deine Speichersubsysteme stellen solltest, die z.B. durch InnoDB nicht komplett abgebildet werden können, lohnt es sich sicher diesbezüglich weitere Recherchen anzustellen.
Wozu dient MyISAM?
Den Nutzen von MySQL im Allgemeinen haben wir kurz umrissen. Kommen wir also nun zu den Details von MyISAM. Deine Website basiert vermutlich aktuell auf einer von MyISAM verwalteten Datenbank. Diese Version ist bereits eine Weiterentwicklung der Vorgängerversion die schlicht nur mit “ISAM” bezeichnet wurde. Die MyISAM Datenbank wurde praktisch um einige Erweiterungen ergänzt und konnte daher mit besserer Performance punkten. Besonders geeignet ist diese Art des Storage Engine für Tabellen die häufiger gelesen werden, als dass in sie geschrieben werden soll.
Außerdem bietet MyISAM unter dem Strich eine hohe Effizienz sowie eine leistungsstarke Volltextsuche. Allerdings gibt es insbesondere im Vergleich zu InnoDB einige Schwachstellen. So unterstützt es beispielsweise keine Transaktionen und bietet keine referentielle Integrität. Was das für deine Datenbank im Einzelnen bedeutet, wird im weiteren Verlauf noch erläutert werden.
InnoDB als Nachfolger von MyISAM
Es gibt diverse Gründe, warum es sich lohnt von dem Speichersystem MyISAM auf InnoDB umzusteigen. Einige Schwachstellen von MyISAM wurden bereits kurz erwähnt. So ist ein Vorteil von InnoDB, dass es Transaktionen beherrscht. Als eine Transaktion wird in diesem Kontext eine Folge von Programmschritten betrachtet, die in sich eine Einheit bildet. Der Datenbestand wird nach der Transaktion in einem fehlerfreien und konsistenten Zustand hinterlassen. Daher ist Grundlage einer solchen Transaktion, dass sie vollständig und fehlerfrei durchgeführt wird, oder eben gar nicht. Gelingt dies nicht, ist es notwendig die Transaktion abzubrechen und alle Änderungen rückgängig zu machen, damit die Datenbank in ihrem ursprünglichen Zustand verbleibt.
Des weiteren greift InnoDB auf die referentielle Integrität zurück. Grundlage dieses Prinzips sind Bedingungen, die dazu dienen die Integrität der Daten in relationalen Datenbanken zu sichern. So dürfen Datensätze über ihre Fremdschlüssel ausschließlich auf bereits existierende Daten verweisen. Der Fremdschlüssel dient hier als Verweis zwischen zwei Relationen.
Damit das Prinzip der referentiellen Integrität funktioniert, wird auf zwei Grundsätze zurückgegriffen. Erste Voraussetzung ist, dass für den neuen Datensatz mit Fremdschlüssel, in der referenzierten Tabelle ein Datensatz mit entsprechendem Wert im Primärschlüssel existiert. Ist dies nicht gegeben, muss ein Alternativschlüssel mit einem eindeutigen Wert existieren.
Der zweite Grundsatz der referentiellen Integrität in InnoDB Systemen bezieht sich auf die Löschung von Datensätzen bzw. auf die Änderung des Schlüssel in einem Primärdatensatz. Dies ist nur dann möglich, wenn es keine weiteren Datensätze in Beziehung zu diesem Primärdatensatz gibt.
Darüber hinaus, ist InnoDB seit MySQL 5.5 als Standardspeichersystem bei der Installation unter Windows anzusehen. Wird es allerdings unter Unix installiert, ist automatisch MyISAM als Speichersubsystem angelegt. Möchtest du auch in diesem Fall explizit InnoDB verwenden, so kann dies über den Befehl “ENGINE= InnoDB” erfolgen. Bei älteren Versionen von MySQL wird der Befehl “ENGINE” durch “TYPE” ersetzt. So kannst du auch in diesem Fall direkt bestimmen, welches Speichersubsystem du verwenden möchtest.
MyISAM in InnoDB konvertieren
Auf Grund der bereits erläuterten Vorzüge, möchten immer mehr Anwender zu InnoDB wechseln. Unter dem Strich, hat sich dieses Subsystem in den letzten Jahren etabliert, durch schnellere Performance und erhöhte Zuverlässigkeit. Wenn auch du von MyISAM zu InnoDB konvertieren möchtest, findest du im Folgenden eine Reihe von Tipps und Hinweisen, wie diese Konvertierung am erfolgreichsten zu lösen ist.
Zunächst einmal solltest du überprüfen, über welche Database deine Word Press Site läuft, falls du dir nicht sicher bist. Insbesondere wenn deine Word Press Site schon ein wenig älter ist, läuft sie eventuell noch über MyISAM. Um dies zu überprüfen gibt es einige Schritte die du befolgen kannst. Dazu meldest du dich zunächst einmal bei MySQL an. Dann führst du den Befehl “SHOW ENGINES” aus. Hier musst du jetzt sicher stellen, dass als Wert für die Unterstützung für InnoDB entweder “YES” oder “DEFAULT” angegeben ist. Wenn du nun sicher bist, dass eine Konvertierung notwendig ist, kannst du dich mit den verschiedenen Optionen auseinander setzen, um dies durchzuführen.
Zunächst einmal musst du dich als Administrator anmelden. Dann kannst du eines der folgenden beiden, von Moodle unterstützen, InnoDB Skripte im Browser laufen lassen: “http://www.YOUR_MOODLE_SITE/admin/tool/innodb” oder alternativ “http://www.YOUR_MOODLE_SITE/admin/innodb.php”.
"phpMyAdmin" verwenden
Als weitere Option kannst du auch “phpMyAdmin” verwenden. Hier gehst du dann auf die Struktur deiner Tabelle und wählst den Reiter “Operationen” aus. Hier kannst du jetzt die Einstellung ändern von “Storage Unit” auf “InnoDB”. Diese Option ist vergleichsweise allerdings mit sehr viel Aufwand verbunden, da du an dieser Stelle jede Tabelle einzeln ändern musst.
Datenbank Dump
Spricht dich keiner der Optionen bisher an, kannst du auch auf einen sogenannten Datenbank Dump zurückgreifen. Hierzu erstellst du über folgenden Befehl einen Datenbank Dump: “mysqldump moodle_database > dump.SQL”. Wenn du die Datei erstellt hast, öffnest du sie im Anschluss in einem Editor. Nun kannst du ganz einfach in der Datei nach MyISAM suchen und dies durch InnoDB ersetzen. Wenn dieser Prozess abgeschlossen ist, spielst du die geänderte Datei wieder in die Datenbank ein.
" alter table wp_posts ENGINE=innodb"
Eine weitere Möglichkeit besteht darin, ganz simpel einen Befehl in MySQL auszuführen um den Datenbanktyp zu ändern. Dies ist möglich mit dem folgenden Kommando: ” alter table wp_posts ENGINE=innodb”. Den Namen der Tabelle, hier als “wp posts” bezeichnet, musst du natürlich entsprechend deiner Tabellennamen ändern. Der Nachteil bei diesem an sich simplen Befehl besteht darin, dass du auch hier jede Tabelle einzeln konvertieren musst.
Vevida Optimizer
Einfacher geht das ganze Unterfangen hingegen mit einem Plugin vonstatten. Hier kann der Vevida Optimizer empfohlen werden.
Dieses Plugin hat diverse Funktionen zu bieten. Eine davon ist die Möglichkeit, automatisch deine Tabellen zu konvertieren. Hast du dieses Tool installiert, kann die Konvertierung losgehen. Unter dem Menüpunkt “Tools” befindet sich die Schaltfläche mit der Bezeichnung ” Convert DB Tables”. So kannst du mit einem Klick deine kompletten MyISAM Tabellen in InnoDB Tabellen umwandeln.
Wenn für dich bis jetzt noch keine Lösung dabei war, kannst du dir auch eine der diversen Anleitungen im Netz raussuchen um deine Konvertierung durchzuführen. Eine Vielzahl von Nutzern haben bereits Skripte geschrieben, um die Umwandlung von MyISAM zu InnoDB zu realisieren. Einige sind komfortabler als andere. Was für dich in Frage kommt, solltest du dann bei näherer Betrachtung entscheiden.
Egal, welche der Optionen du für dich auswählst, im Vorfeld solltest du deine MySQL Database auf jeden Fall sichern. Es kann immer zu einem Fehler bei der Ausführung eines Skripts oder Tools kommen und dann solltest du eine Sicherung parat haben um ggf. nochmals von vorne zu beginnen. Ein Datenverlust dieser Größenordnung wäre für deine Web Services vermutlich fatal und würde eine Menge Aufwand bedeuten.
Was das Thema MyISAM und InnoDB anbelangt, hast du jetzt einen guten Überblick über die groben Funktionen der beiden Subsysteme sowie über die Möglichkeiten der Konvertierung. Auch einige Denkanstöße zu weiteren Recherchen hast du nun erhalten, ob diese für dich relevant sind kannst alleinig du entscheiden. Natürlich gibt es noch eine Menge an Hintergrundinformationen zu MySQL im Allgemeinen und den Subsystemen zur Datenspeicherung im Speziellen. Die Flut an Informationen und auch Meinungen im Netz diesbezüglich ist groß. Damit du aber deine Konvertierung von MyISAM zu InnoDB durchführen kannst, hast du jetzt alle notwendigen Informationen zur Hand.