Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL таблицата е маркирана като повредена

MyISAM таблиците са много лесни за срив. Във всяка таблица има заглавна информация, която следи колко отворени файлове обработват таблицата MyISAM.

Ако mysqld се срине, всяка таблица MyISAM, която е имала отворени файлови манипулатори към нея, никога не е имала възможност да намали броя на манипулаторите на файла при затваряне на всеки манипулатор на файл. По този начин, ако нов манипулатор на файла отвори таблица MyISAM (.MYD файл) и mysqld открие несъответствие между броя на файловите манипулатори, които MyISAM таблицата смята за отворени, и броя на файловите манипулатори, които таблицата MyISAM всъщност има отворена, таблицата е обявен за сринат.

Има четири(4) метода за справяне с това:

МЕТОД №1:Настройте автоматично възстановяване на MyISAM

Вижте моята публикация https://dba.stackexchange.com/a/15079/877 за това как да настроите това при рестарт на MySQL (15 март 2012 г.)

МЕТОД №2:Използвайте InnoDB вместо MyISAM

InnoDB има възстановяване при срив, вградено в инициализацията на Storage Engine. MyISAM не го прави

МЕТОД №3:Използвайте Aria вместо MyISAM

Aria е заместващата функция на MariaDB за MyISAM. Той включва механизми за възстановяване при срив за отделни таблици.

МЕТОД №4:Не убивайте -9 на mysqld

Ако mysqld се срине, умишлено или неволно, информацията за заглавката за всички отворени MyISAM таблици ще ги доведе до сривано състояние. Избягвайте да убивате ръчно mysqld.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Помощ за SQL присъединяване за списък с приятели

  2. Как да коригирате Съобщение:SQLSTATE[08004] [1040] Твърде много връзки

  3. Паролата за Mysql е изтекла. Не мога да се свържа

  4. ГРЕШКА в таблицата на mySQL 1064

  5. Актуализирайте данните на базата данни с бутона за изпращане