"tbl_name.frm" tabelldefinition (tabell) fil "tbl_name. MYD "Data File "tbl_name. MYI"-indexfil Var och en av dessa tre filtyper kan drabbas av olika former av korruption, men problemet uppstår oftast i datafiler och indexfiler. myisamchk skapar en ". MYD" (data)filen fungerar, den fungerar genom att ta bort den gamla ". MYD-filen och byt namn på den nya filen till det ursprungliga filnamnet för att avsluta reparationsfasen. Om du använder --quick, myisamchk skapar inte en tillfällig ". MYD"-filen, bara antar". MYD"-filen är korrekt och skapar endast en ny indexfil, utan att röra". MYD"-fil, vilket är säkert eftersom myisamchk automatiskt upptäcker". MYD"-filen är korrupt och i det här fallet, överge reparationen. Du kan också ge myisamchk två – snabba alternativ. I detta fall ger myisamchk inte upp vissa fel (som upprepande tangenter), utan försöker istället modifiera ". MYD"-filen för att lösa dem. Vanligtvis är det bara användbart om du implementerar en vanlig lösning på för lite ledigt diskutrymme, med de två snabba alternativen. I det här fallet bör du åtminstone göra en backup innan du kör myisamchk. 1. Hur man kontrollerar felen i tabellen För att kontrollera en tabell, använd följande kommando: myisamchk tbl_name Detta fångar upp 99,99 % av alla fel. Vad den inte kan ta reda på är att korruption bara är involverad i datafiler (vilket är ovanligt). Om du vill kolla en tabell bör du oftast köra myisamchk utan alternativet eller använda antingen -s eller --tysta alternativen. myisamchk -e tbl_name Den gör en helt grundlig datakontroll (-e betyder "utökad kontroll"). Den gör en läskontroll per nyckel på varje rad för att bekräfta att de pekar på rätt linje. Detta kan ta lång tid på ett stort bord med många nycklar. Myisamchk slutar vanligtvis när den hittar det första felet. Om du vill ha mer information kan du lägga till --verbose(-v)-alternativet. Detta gör att myisamchk fortsätter tills max 20 fel. I allmän användning räcker en enkel myisamchk (utan argument förutom tabellnamnet). myisamchk -e -i tbl_name Som det föregående kommandot, men -i-alternativet säger åt myisamchk att skriva ut lite statistik också. 2. Hur man reparerar bordet Symptomet på en korrupt tabell är vanligtvis ett oväntat frågeavbrott, och du kan till exempel se dessa fel: "tbl_name.frm" är låst och kan inte ändras. Kan inte hitta filen "tbl_name. MYI"(Errkod :### )。 Få fel ### från tabellprocessorn (i detta fall är fel 135 ett undantag). Oväntat filslut. Arkivfiler förstördes. I dessa fall måste du laga bordet. Myisamchk brukar upptäcka och åtgärda det mesta som går fel. Reparationsprocessen består av upp till 4 steg, beskrivna nedan. Innan du börjar bör du CD:a behörigheter till databaskatalogen och checklistfilerna för att säkerställa att de är läsbara för Unix-användare som kör mysqld (och dig, eftersom du behöver åtkomst till filen du kontrollerar). Om den vägrar att ändra filen måste de också vara skrivbara för dig. Fas 1: Kolla din tabell Spring myisamchk *. MYI eller (myisamchk -e *. MYI, om du har mer tid). Använd -s (tystnad) för att inaktivera onödig information.
Filformatet som MySQL använder för att lagra data har testats ingående, men det finns alltid yttre förhållanden som kan orsaka korrupta databastabeller: MySQLD-processen dödas vid en enda skrivning; En oväntad avstängning av datorn (till exempel om datorn förlorar ström); Ett hårdvarufel. Detta kapitel beskriver hur man kontrollerar för och hanterar datakorruption i en MySQL-databas. Om ditt bord är mycket skadat bör du försöka ta reda på varför! Se G.1 Felsökning av en MySQL-server. När man utför kraschåterställning är det viktigt att förstå att varje tabell i en databas tbl_name motsvarar de 3 filerna i databaskatalogen |