English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Problemvorstellung
Der Computer hat während der Benutzung abstürzen, nach dem Neustart wurde festgestellt, dass mysql nicht erfolgreich gestartet ist. Durch das Überprüfen des Fehlerprotokolls wurde festgestellt, dass ein Problem mit innodb der Grund für den Misserfolg des mysql-Starts ist.
Fehlerprotokoll
$ mysql.server start Starten von MySQL . FEHLER! Der Server hat sich ohne Aktualisierung der PID-Datei beendet (/usr/local/var/mysql/fdipzonedeMacBook-Air.local.pid). 22:08:37 mysqld_safe Starten des mysqld-Daemons mit Datenbanken aus /usr/local/var/mysql 2016-04-23 22:08:38 0 [Warnung] TIMESTAMP mit implizitem Standardwert ist veraltet. Bitte verwenden Sie --Serveroption explicit_defaults_for_timestamp (siehe Dokumentation für weitere Details). 2016-04-23 22:08:38 0 [Hinweis] /usr/local/Keller/mysql/5.6.24/bin/mysqld (mysqld 5.6.24) als Prozess gestartet 3604 ... 2016-04-23 22:08:38 3604 [Warnung] Lower_case_table_names festgelegt auf=2 da das Dateisystem für /usr/local/var/mysql/ ist nicht auf Gross-/Kleinschreibung empfindlich 2016-04-23 22:08:38 3604 [Hinweis] Plugin 'FEDERATED' ist deaktiviert. 2016-04-23 22:08:38 3604 [Hinweis] InnoDB: Verwendet Atome, um die Anzahl der Pufferpool-Seiten zu referenzieren 2016-04-23 22:08:38 3604 [Hinweis] InnoDB: Der InnoDB-Memory-Heap ist deaktiviert 2016-04-23 22:08:38 3604 [Hinweis] InnoDB: Mutexes und rw_locks verwenden GCC atomare Builtins 2016-04-23 22:08:38 3604 [Hinweis] InnoDB: Speicherbarriere wird nicht verwendet 2016-04-23 22:08:38 3604 [Hinweis] InnoDB: Komprimierte Tabellen verwenden zlib 1.2.3 2016-04-23 22:08:38 3604 [Hinweis] InnoDB: Verwendet CPU crc32 Anweisungen 2016-04-23 22:08:38 3604 [Hinweis] InnoDB: Initialisiere Pufferpool, Größe = 128.0M 2016-04-23 22:08:38 3604 [Hinweis] InnoDB: Initialisierung des Pufferpools abgeschlossen 2016-04-23 22:08:38 3604 [Hinweis] InnoDB: Höchstes unterstütztes Dateiformat ist Barracuda. 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Der Log-Scan hat den Checkpoint lsn überschritten. 68929933440 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Die Datenbank wurde nicht normal heruntergefahren! 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Crash-Recovery wird gestartet. 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Tablespace-Informationen werden aus den .ibd-Dateien gelesen... 2016-04-23 22:08:38 3604 [FEHLER] InnoDB: Überprüfungsfehler im Tablespace ./test_user/user_recommend_code#P#pmax.ibd (Tabelle test_user/user_recommend_code#P#pmax) 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße:1024 Seiten zum Analysieren:64 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße: 1024, Mögliche space_id-Zahl:0 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße:2048 Seiten zum Analysieren:48 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße: 2048, Mögliche space_id-Zahl:0 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße:4096 Seiten zum Analysieren:24 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße: 4096, Mögliche space_id-Zahl:0 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße:8192 Seiten zum Analysieren:12 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße: 8192, Mögliche space_id-Zahl:0 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße:16384 Seiten zum Analysieren:6 2016-04-23 22:08:38 3604 [Notiz] InnoDB: GÜLTIG: Speicher:2947354 page_no:3 page_size:16384 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seitengröße: 16384, Mögliche space_id-Zahl:1 2016-04-23 22:08:38 3604 [Notiz] InnoDB: space_id:2947354, Anzahl der übereinstimmenden Seiten: 1/1 (16384) 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Gewählter Speicher:2947354 2016-04-23 22:08:38 3604 [Notiz] InnoDB: Seite 0 des Tablespace wird wiederhergestellt 2947354 2016-04-23 22:08:38 3604 [Warnung] InnoDB: Doublewrite hat keine page_no=0 im Speicher: 2947354 2016-04-23 22:08:38 7fff79b9e300 InnoDB: Fehlernummer des Betriebssystems 2 bei einer Dateioperation. InnoDB: Der Fehler bedeutet, dass das System den angegebenen Pfad nicht finden kann. InnoDB: Wenn Sie InnoDB installieren, beachten Sie, dass Sie erstellen müssen InnoDB: Sie erstellen die Verzeichnisse selbst, InnoDB erstellt sie nicht. InnoDB: Fehler: Die Datei konnte nicht geöffnet werden-Tabellen Speicherplatz Datei ./test_user/user_recommend_code#P#pmax.ibd InnoDB: Wir führen die Crash-Recovery nicht fort, weil die Tabelle möglicherweise InnoDB: beschädigt, wenn wir die Logzeilen im InnoDB-Log nicht darauf anwenden können. InnoDB: Um das Problem zu beheben und mysqld zu starten: InnoDB: 1) Wenn es ein Berechtigungsproblem in der Datei gibt und mysqld nicht InnoDB: Öffnen Sie die Datei, Sie sollten die Berechtigungen ändern. InnoDB: 2) Wenn die Tabelle nicht benötigt wird oder Sie sie aus einer Sicherung wiederherstellen können, InnoDB: Dann können Sie die .ibd-Datei löschen und InnoDB führt eine normale InnoDB: Crash-Recovery durchführen und diese Tabelle ignorieren. InnoDB: 3) Wenn das Dateisystem oder die Festplatte defekt ist und Sie die Datei nicht entfernen können InnoDB: die .ibd-Datei, Sie können innodb_force_recovery > 0 in my.cnf einstellen InnoDB: und zwingen Sie InnoDB, hier die Crash-Recovery fortzusetzen.
Lösungsmethode
1.Wenn die Daten nicht wichtig sind oder bereits gesichert sind, genügt es, mysql zu starten
Gehen Sie in das mysql-Verzeichnis, normalerweise: /usr/local/var/mysql/
Löschen Sie ib_logfile*
Löschen Sie ibdata*
Löschen Sie alle physischen Datenbankverzeichnisse (z.B. wenn die Datenbank test_db ist, führen Sie rm aus -rf test_db)
Starten Sie mysql neu
Erstellen Sie die Datenbank neu oder verwenden Sie die Sicherung, um zu überschreiben
2. Wenn die Daten wichtig sind und keine Sicherung vorhanden ist
Sie können den Parameter innodb_force_recovery verwenden, um mysqld die Wiederherstellungsschritte zu überspringen, starten Sie mysqld, exportieren Sie die Daten und erstellen Sie die Datenbank neu.
innodb_force_recovery kann auf folgende Werte gesetzt werden1-6, große Zahlen enthalten den Einfluss der vorangegangenen Zahlen
1, (SRV_FORCE_IGNORE_CORRUPT): Ignorieren Sie die überprüften korrupten Seiten.
2, (SRV_FORCE_NO_BACKGROUND): Verhindern Sie den Lauf der Hauptthread, wie der Hauptthread eine vollständige Purge-Aktion ausführen muss, würde zu einem Crash führen.
3, (SRV_FORCE_NO_TRX_UNDO): Führen Sie keine Transaktionsrückroll-Aktionen aus.
4, (SRV_FORCE_NO_IBUF_MERGE): Führen Sie keine Kombination der Insert-Buffers aus.
5, (SRV_FORCE_NO_UNDO_LOG_SCAN): Sehen Sie keine Redo-Logs an, InnoDB-Speicherengine betrachtet nicht abgeschlossene Transaktionen als abgeschlossen.
6, (SRV_FORCE_NO_LOG_REDO): Führen Sie keine Vorwärtsrollback-Aktionen aus.
Fügen Sie in my.cnf (bei Windows ist es my.ini) hinzu
innodb_force_recovery = 6 innodb_purge_thread = 0
Starten Sie mysql neu
Zu diesem Zeitpunkt können nur select, create, drop-Aktionen ausgeführt werden, aber nicht insert, update, delete-Aktionen
Führen Sie die Logik für die Ausführung des Exports aus, nach Abschluss setzen Sie innodb_force_recovery=0, innodb_purge_threads=1, dann die Datenbank neu erstellen und最后把导出的数据重新导入
Zusammenfassung
Das ist der Inhalt dieses Artikels, ich hoffe, er hilft Ihnen beim Lernen oder der Verwendung von mysql. Wenn Sie Fragen haben, können Sie Kommentare hinterlassen und sich austauschen, danke für die Unterstützung der Anleitungsschreie.