Migration von MyISAM zu InnoDB

Aus MoodleDocs
Wechseln zu:Navigation, Suche

Dieser Artikel ist für Moodle-Administrator/innen gedacht, die eine MySQL-Datenbank verwenden. Es geht um die Umwandlung der MySQL storage engine.


Unterschied zwischen MyISAM und InnoDB

  • Lesen Sie diesen Artikel.
  • InnoDB ist bestens geeignet, um Daten-Integrität sicherzustellen, es ist nicht so gut geeignet für das Durchsuchen von großen Dateien und es verwendet mehr CPU-Zyklen und Speicher als MyISAM.
  • InnoDB ist wesentlich jünger als MyISAM, wird aber immer attraktiver. Es ist jedoch komplexer, so dass einige Tools, die für MyISAM entwickelt wurden, mit InnoDB eventuell nicht funktionieren (z.B. mysqlhotcopy)
  • Sie können InnoDB für ausgewählte Tabellen der Moodle-Datenbank verwenden und die anderen Tabellen unter MyISAM belassen.

MySQL Konfiguration

Bevor Sie den Tabellentyp einer Datenbank-Tabelle ändern, sollten Sie:

  • Prüfen, dass InnoDB aktiviert ist. Melden Sie sich in MySQL an und führen Sie den Befehl SHOW ENGINES aus. Stellen Sie sicher, dass die Unterstützung von InnoDB entweder "YES" oder "DEFAULT" ist.
  • Setzen Sie innodb_file_per_table, falls nötig. Diese Einstellung kann für große Moodle-Installationen nützlich sein, sie betrifft jedoch nur neue Tabellen und kann nicht im Nachhinein angewendet werden.

Verschiedene Methoden aus den Moodle-Foren

Wählen Sie eine der folgenden Methoden, um die Umwandlung von MyISAM zu InnoDB durchzuführen:

  • Melden Sie sich als Administrator/in an und lassen Sie das innodb-Skript im Webbrowser laufen: http://www.YOUR_MOODLE_SITE/admin/tool/innodb bzw. http://www.YOUR_MOODLE_SITE/admin/innodb.php (je nach Moodle-Version)
  • Verwenden Sie das CLI-Skript /moodle/admin/cli/mysql_engine.php - dafür ist Shell-Zugriff auf den Moodle-Server erforderlich und die Moodle-Konfigurationsdatei config.php darf nur eine Moodle-Instanz enthalten und keine Timeout-Einschränkungen.
  • Verwenden Sie phpMyAdmin, gehen Sie auf die Struktur-Ansicht einer Tabelle und klicken Sie dann der Reiter Operationen. Ändern Sie die Einstellung von Storage Engine auf InnoDB. Diese Vorgehensweise ist aufgrund der großen Anzahl der Tabellen sehr aufwändig, weil jede Tabelle einzeln geändert werden muss, siehe [1]
  • Erstellen Sie einen Datenbank-Dump (z.B. mit dem Befehl mysqldump moodle_database > dump.SQL), öffnen Sie die Dump-Datei in einem Editor und suchen & ersetzen Sie MyISAM durch InnoDB. Spielen Sie dann die geänderte Dump-Datei wieder in die Datenbank ein.
  • Folgen Sie dieser Anleitung: https://sites.google.com/site/moodlemayhem/tcea2011-moodle-server-setup-basics/moodleacidtrip
  • Verwenden Sie das PHP-Skript http://noveckg.blogspot.com/2012/04/moodle-php-script-to-convert-mysql.html (getestet mit Moodle 1.9 und 2.0/2.2)

Siehe auch