Ich werde alle Tabellen der 500-MB-Datenbank von MyISAM in InnoDB konvertieren, um festzustellen, ob dadurch die Gesamtleistung einer ausgelasteten Drupal 6-Site verbessert wird. Ich frage mich, was der beste (dh sicherste / einfachste / schnellste) Weg ist, um die Konvertierung durchzuführen.
9
Antworten:
Als MySQL-DBA vertraue ich darauf, dass MySQL die Konvertierung durchführt, indem MySQL das Skript für mich schreibt.
Führen Sie mit dem Linux-Befehl diese Abfrage aus
Das Skript konvertiert zuerst die kleinsten Tabellen. Dieses Skript hat auch alle MyISAM-Tabellen mit FULLTEXT-Indizes umgangen.
Nachdem Sie sich das Skript angesehen haben, können Sie es einfach wie folgt in MySQL ausführen:
oder wenn Sie den Zeitpunkt jeder Konvertierung sehen möchten, melden Sie sich bei mysql an und führen Sie Folgendes aus:
Dies sollte nicht durcheinander gebracht werden, da bei der Ausführung der Konvertierung eine vollständige Tabellensperre auftritt.
Sobald alle Tabellen konvertiert sind, müssen Sie die MySQL-Einstellungen für die InnoDB-Verwendung optimieren und den key_buffer verkleinern.
Bitte lesen Sie dies, um den InnoDB-Pufferpool festzulegen: /dba/1/what-are-the-main-differences-between-innodb-and-myisam/2194#2194
Bitte lesen Sie dies auch: /drupal/1715/what-would-the-optimal-mysql-configuration-for-a-drupal-7-site-be/2367#2367
Versuche es !!!
quelle
Ich habe vor einiger Zeit einen Drush-Befehl dafür geschrieben.
Hat vor ungefähr einem Jahr für mich gearbeitet und ist sich nicht sicher, ob sich die Drush-API seitdem geändert hat.
Sie können das in einer convert.drush.inc platzieren, zum Beispiel im Ordner .drush, oder es irgendwie auf Ihrer Site ausführen, zum Beispiel mit dem php-Block devel execute. Als Drush-Skript können Sie es so nennen:
Warnung : Wenn jemand etwas mit der Datenbank macht, während diese Befehle ausgeführt werden, wird Ihre Datenbank komplett durcheinander gebracht. Nicht wiederherstellbar. Versetzen Sie Ihre Site in den Wartungsmodus und erstellen Sie ein Backup, bevor Sie dies versuchen! Und natürlich probieren Sie zuerst eine Entwicklungs- / Test-Site an :)
quelle