sql >> Databáze >  >> RDS >> Mysql

Tabulka MySQL je označena jako havarovaná

Tabulky MyISAM se velmi snadno zhroutí. V každé tabulce jsou informace o záhlaví, které sledují, kolik otevřených souborů zpracovává tabulka MyISAM.

Pokud dojde k selhání mysqld, žádná tabulka MyISAM, která měla otevřené popisovače souborů, nikdy neměla příležitost snížit počet popisovačů souboru při každém zavření popisovače souboru. Pokud tedy nový popisovač souboru otevře tabulku MyISAM (soubor .MYD) a mysqld zjistí nesoulad mezi počtem popisovačů souborů, o kterých se tabulka MyISAM domnívá, že je otevřená, a počtem popisovačů souborů, které má tabulka MyISAM skutečně otevřené, tabulka je prohlášen za havarovaný.

Existují čtyři (4) způsoby, jak to zvládnout:

METODA #1:Nastavení automatické opravy MyISAM

Viz můj příspěvek https://dba.stackexchange.com/a/15079/877 jak to nastavit po restartu MySQL (15. března 2012)

METODA #2:Použijte InnoDB místo MyISAM

InnoDB má obnovu po havárii zabudovanou do inicializace Storage Engine. MyISAM ne

METODA #3:Místo MyISAM použijte Aria

Aria je doplňkem MariaDB za MyISAM. Obsahuje mechanismy zotavení z havárie pro jednotlivé tabulky.

METODA #4:Nezabíjejte -9 na mysqld

Pokud mysqld selže, úmyslně nebo nedobrovolně, informace v hlavičce pro všechny otevřené tabulky MyISAM je dostanou do havarovaného stavu. Vyhněte se nutnosti ručně zabíjet mysqld.




  1. Hromadné vložky Salesforce z aplikace Microsoft Access

  2. získat řadu jedinečných hodnot bez oddělování hodnot, které patří do stejného bloku hodnot

  3. Připojení existující databáze pomocí MySQL

  4. Je možné vložit nový řádek na začátek tabulky MySQL?