Jag har precis haft det här och presenterade sig själv som en "mysql återuppstår för snabbt
" fel i dmesg
loggar.
Från läsning någon annanstans Jag spårade det ner till det du hittade, och jag tror att det har fungerat att detta pekar på någon form av korruption i InnoDB:s metadatafiler. InnoDB gör saker som att säkerställa transaktions-/återställningsintegritet och integritet för primär och främmande nyckel. Det är vad "checksum mismatch"-felet varnar dig för.
Du säger inte hur du startar mysqld, men du kanske använder någon variant på antingen /etc/init.d/mysqld start
eller service mysqld start
. Kör demonen uttryckligen som ett kommando istället:
sudo /usr/sbin/mysqld --innodb_force_recovery 0
och, så länge du vet varför du gör det, öka gradvis nollvärdet för --innodb_force_recovery
tills processen startar.
Varning: innodb_force_recovery parametern bestämmer hur allvarligt mysqld kommer att försöka "tvinga fixa" kontrollsummefelet i InnoDB-lagringen. Så du kan göra problemet värre, eller behöva bygga om indexet senare, om du tvingar fixa med ett högt antal här, eftersom InnoDB kommer att göra mer och mer drastiska saker för att försöka fixa sig själv.
Varje gång du misslyckas med att starta om mysqld
med ett visst nummer t.ex. 2
, bör du söka efter de felmeddelanden du får innan du ökar det till 3
så att du kan vara säker på att du gör rätt. Jag är inte expert på alla fel du kan få, så jag kan inte ge feedback för varje exceptionellt tillstånd:allt jag säger är, använd --innodb_force_recovery
med försiktighet!