Heim  >  Artikel  >  Datenbank  >  Wie man mit einer MySQL-Innodb-Ausnahme umgeht

Wie man mit einer MySQL-Innodb-Ausnahme umgeht

WBOY
WBOYnach vorne
2023-04-17 21:01:061728Durchsuche

Wie man mit einer MySQL-Innodb-Ausnahme umgeht

1. Gehen Sie zurück und installieren Sie MySQL neu

Um die Mühe zu vermeiden, diese Daten von anderen Orten zu importieren, erstellen Sie zunächst eine Sicherungskopie der Datenbankdatei der aktuellen Bibliothek (/var/lib/mysql/location). . Als nächstes deinstallierte ich das Percona-Serverpaket 5.7, installierte das ursprüngliche Paket 5.1.71 neu und startete den MySQL-Dienst. Es wurde die Meldung „Unbekannter/nicht unterstützter Tabellentyp: innodb“ angezeigt und konnte nicht normal gestartet werden.

110509 12:04:27 InnoDB: Initializing buffer pool, size = 384.0M
110509 12:04:27 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 157286400 bytes!
110509 12:04:27 [ERROR] Plugin 'InnoDB' init function returned error.
110509 12:04:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
110509 12:04:27 [ERROR] Unknown/unsupported table type: innodb
110509 12:04:27 [ERROR] Aborting
110509 12:04:27 [Note] /usr/sbin/mysqld: Shutdown complete

Löschen Sie das Verzeichnis /var/lib/mysql/, starten Sie den Datenbankdienst neu und initialisieren Sie ihn. Es wird festgestellt, dass Show Engines die Innodb-Engine finden können. Stoppen Sie dann die Datenbank, überschreiben Sie den Inhalt des zuvor gesicherten Verzeichnisses /var/lib/mysql/ mit dem Inhalt des aktuellen Speicherorts und starten Sie neu. Ich habe auch festgestellt, dass es nicht gestartet werden konnte und der Fehlerinhalt derselbe war wie zuvor. Die Struktur des Inhalts des Verzeichnisses

/var/lib/mysql ist wie folgt:

-rw-rw---- 1 mysql mysql 10485760 2月 26 18:10 ibdata1
-rw-rw---- 1 mysql mysql 5242880 2月 26 18:10 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 2月 26 17:20 ib_logfile1
drwx------ 2 mysql mysql 4096 2月 26 17:20 mysql
drwx------ 2 mysql mysql 4096 2月 26 17:24 wiki

Das Wiki-Verzeichnis ist die Bibliothek für Testdaten, die Datei ibdata1 ist die Datendatei, die beiden Dateien, die mit ib beginnen, sind Protokolldateien , und das MySQL-Verzeichnis enthält Dinge, die sich auf die Systembibliothek beziehen. Verwenden Sie die initialisierten Daten erneut und überschreiben Sie das Wiki-Verzeichnis und die Datei ibdata1 im Verzeichnis /var/lib/mysql. Sie können normal starten und sich anmelden.

2. Installieren Sie das Innodb-Modul neu.

Beim Sichern über mysqldump wird jedoch die unbekannte Tabellen-Engine „Innodb“ angezeigt. Überprüfen Sie nach dem Anmelden alle aktuellen Engine-Typen und stellen Sie fest, dass der Typ innodb nicht vorhanden ist:

Wie man mit einer MySQL-Innodb-Ausnahme umgeht

Verwenden Sie den Befehl alter, um den Typ einer der Tabellen in MyISAM zu ändern, und stellen Sie fest, dass der Fehler vorliegt wird immer noch gemeldet.

Wie man mit einer MySQL-Innodb-Ausnahme umgeht

Verwenden Sie find, um herauszufinden, dass sich im Verzeichnis /usr/lib64/mysql/plugin/ eine Datei ha_innodb_plugin.so befindet. Ich habe den Eindruck, dass spätere Versionen von MySQL5 die Online-Plugin-Installation unterstützen. Überprüfen Sie Folgendes, um sicherzustellen, dass es tatsächlich unterstützt wird:

Wie man mit einer MySQL-Innodb-Ausnahme umgeht

Beim Laden mit dem folgenden Befehl wurde festgestellt, dass der Vorgang nicht erfolgreich war:

install plugin innodb soname 'ha_innodb.so';

3. Backup

Fügen Sie die folgende Konfiguration zu /etc/my.cnf hinzu :

plugin-load=innodb=ha_innodb_plugin.so
plugin_dir=/usr/lib64/mysql/plugin/
default-storage-engine=InnoDB

Es wurde festgestellt, dass der Start immer noch fehlgeschlagen ist. Überprüfen Sie mysql-error.log und finden Sie den folgenden Inhalt:

InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 7.
InnoDB: You may have to recover from a backup.
InnoDB: It is also possible that your operating
InnoDB: system has corrupted its own file cache
InnoDB: and rebooting your computer removes the
InnoDB: error.
InnoDB: If the corrupt page is an index page
InnoDB: you can also try to fix the corruption
InnoDB: by dumping, dropping, and reimporting
InnoDB: the corrupt table. You can use CHECK
InnoDB: TABLE to scan your table for corruption.
InnoDB: See also http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html

Öffnen Sie die offizielle Seite „forcing-innodb-recovery“ und stellen Sie fest, dass Sie den Start und die Wiederherstellung erzwingen können, indem Sie den Parameter „innodb_force_recovery“ angeben. Fügen Sie den folgenden Inhalt zu /etc/my.cnf hinzu:

innodb_force_recovery=6

Der Neustart war erfolgreich. Das Sichern über mysqldump stellt kein Problem dar. Auch das Importieren der Sicherungsdaten auf andere Hosts ist normal und kann getestet werden.

Jetzt ist es ganz einfach, MySQL vollständig zu löschen und Percona Server 5.7 neu zu installieren. Nach der Installation die Datenbank erstellen, die Daten wiederherstellen, das Programm erneut verbinden und alles ist in Ordnung.

Das obige ist der detaillierte Inhalt vonWie man mit einer MySQL-Innodb-Ausnahme umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen