Migration von MyISAM zu InnoDB
Aus MoodleDocs
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
- New moodle.org - Diskussionsbeitrag im Kurs Using Moodle auf moodle.org
- MySQL Engines: MyISAM vs. InnoDB Artikel von Tag1 Consulting
- An easy migration of MyISAM mysqldump to InnoDB