Heim > Datenbank > MySQL-Tutorial > Lösung für das Problem, dass die MySQL-Datenbank innodb nicht gestartet werden kann und nicht neu gestartet werden kann_MySQL

Lösung für das Problem, dass die MySQL-Datenbank innodb nicht gestartet werden kann und nicht neu gestartet werden kann_MySQL

WBOY
Freigeben: 2016-10-09 08:33:40
Original
1102 Leute haben es durchsucht

Problemeinführung

Nach dem Neustart stellte ich fest, dass MySQL nicht erfolgreich gestartet werden konnte. Als ich mir das Fehlerprotokoll ansah, stellte ich fest, dass ein Problem mit innodb vorliegt, das dazu führte, dass MySQL nicht gestartet werden konnte.

Fehlerprotokoll

$ mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/fdipzonedeMacBook-Air.local.pid).

22:08:37 mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
2016-04-23 22:08:38 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-04-23 22:08:38 0 [Note] /usr/local/Cellar/mysql/5.6.24/bin/mysqld (mysqld 5.6.24) starting as process 3604 ...
2016-04-23 22:08:38 3604 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
2016-04-23 22:08:38 3604 [Note] Plugin 'FEDERATED' is disabled.
2016-04-23 22:08:38 3604 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-04-23 22:08:38 3604 [Note] InnoDB: The InnoDB memory heap is disabled
2016-04-23 22:08:38 3604 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-04-23 22:08:38 3604 [Note] InnoDB: Memory barrier is not used
2016-04-23 22:08:38 3604 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-04-23 22:08:38 3604 [Note] InnoDB: Using CPU crc32 instructions
2016-04-23 22:08:38 3604 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2016-04-23 22:08:38 3604 [Note] InnoDB: Completed initialization of buffer pool
2016-04-23 22:08:38 3604 [Note] InnoDB: Highest supported file format is Barracuda.
2016-04-23 22:08:38 3604 [Note] InnoDB: Log scan progressed past the checkpoint lsn 68929933440
2016-04-23 22:08:38 3604 [Note] InnoDB: Database was not shutdown normally!
2016-04-23 22:08:38 3604 [Note] InnoDB: Starting crash recovery.
2016-04-23 22:08:38 3604 [Note] InnoDB: Reading tablespace information from the .ibd files...
2016-04-23 22:08:38 3604 [ERROR] InnoDB: checksum mismatch in tablespace ./test_user/user_recommend_code#P#pmax.ibd (table test_user/user_recommend_code#P#pmax)
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:1024 Pages to analyze:64
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 1024, Possible space_id count:0
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:2048 Pages to analyze:48
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 2048, Possible space_id count:0
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:4096 Pages to analyze:24
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 4096, Possible space_id count:0
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:8192 Pages to analyze:12
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 8192, Possible space_id count:0
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:16384 Pages to analyze:6
2016-04-23 22:08:38 3604 [Note] InnoDB: VALID: space:2947354 page_no:3 page_size:16384
2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 16384, Possible space_id count:1
2016-04-23 22:08:38 3604 [Note] InnoDB: space_id:2947354, Number of pages matched: 1/1 (16384)
2016-04-23 22:08:38 3604 [Note] InnoDB: Chosen space:2947354

2016-04-23 22:08:38 3604 [Note] InnoDB: Restoring page 0 of tablespace 2947354
2016-04-23 22:08:38 3604 [Warning] InnoDB: Doublewrite does not have page_no=0 of space: 2947354
2016-04-23 22:08:38 7fff79b9e300 InnoDB: Operating system error number 2 in a file operation.
InnoDB: The error means the system cannot find the path specified.
InnoDB: If you are installing InnoDB, remember that you must create
InnoDB: directories yourself, InnoDB does not create them.
InnoDB: Error: could not open single-table tablespace file ./test_user/user_recommend_code#P#pmax.ibd
InnoDB: We do not continue the crash recovery, because the table may become
InnoDB: corrupt if we cannot apply the log records in the InnoDB log to it.
InnoDB: To fix the problem and start mysqld:
InnoDB: 1) If there is a permission problem in the file and mysqld cannot
InnoDB: open the file, you should modify the permissions.
InnoDB: 2) If the table is not needed, or you can restore it from a backup,
InnoDB: then you can remove the .ibd file, and InnoDB will do a normal
InnoDB: crash recovery and ignore that table.
InnoDB: 3) If the file system or the disk is broken, and you cannot remove
InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf
InnoDB: and force InnoDB to continue crash recovery here.
Nach dem Login kopieren

Lösung

1. Wenn die Daten nicht wichtig sind oder gesichert wurden, müssen Sie nur den MySQL-Start wiederherstellen

Geben Sie das MySQL-Verzeichnis ein, normalerweise: /usr/local/var/mysql/

Löschenib_logfile*

Löschenibdata*

Löschen Sie alle physischen Datenbankverzeichnisse (wenn die Datenbank beispielsweise test_db ist, führen Sie rm -rf test_db aus)

MySQL neu starten

Erstellen Sie die Datenbank neu oder überschreiben Sie sie mit einem Backup

2. Wenn die Daten wichtig sind und kein Backup vorhanden ist

Sie können den Parameter innodb_force_recovery verwenden, um mysqld dazu zu bringen, den Wiederherstellungsschritt zu überspringen, mysqld zu starten, die Daten zu exportieren und die Datenbank neu zu erstellen.

innodb_force_recovery kann auf 1-6 eingestellt werden, die größere Zahl berücksichtigt den Einfluss aller vorherigen Zahlen

1. (SRV_FORCE_IGNORE_CORRUPT): Ignorieren Sie die erkannte beschädigte Seite.

2. (SRV_FORCE_NO_BACKGROUND): Verhindern Sie die Ausführung des Hauptthreads. Wenn der Hauptthread einen vollständigen Löschvorgang durchführen muss, führt dies zu einem Absturz.

3. (SRV_FORCE_NO_TRX_UNDO): Führen Sie keinen Transaktions-Rollback-Vorgang durch.

4. (SRV_FORCE_NO_IBUF_MERGE): Führen Sie den Zusammenführungsvorgang von Einfügepuffern nicht durch.

5. (SRV_FORCE_NO_UNDO_LOG_SCAN): Ohne Überprüfung des Redo-Logs behandelt die InnoDB-Speicher-Engine nicht festgeschriebene Transaktionen als festgeschrieben.

6. (SRV_FORCE_NO_LOG_REDO): Führen Sie keinen Rollforward-Vorgang durch.


zu my.cnf hinzufügen (Windows ist my.ini)

innodb_force_recovery = 6 
innodb_purge_thread = 0
Nach dem Login kopieren

MySQL neu starten

Derzeit können nur Auswahl-, Erstellungs- und Löschvorgänge ausgeführt werden, Einfüge-, Aktualisierungs- und Löschvorgänge können jedoch nicht ausgeführt werden

Führen Sie nach Abschluss den logischen Export aus, innodb_force_recovery=0, innodb_purge_threads=1, erstellen Sie dann die Datenbank neu und importieren Sie schließlich die exportierten Daten erneut in

Zusammenfassung

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für alle beim Erlernen oder Verwenden von MySQL hilfreich ist. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage