Резюме: Тази статия изброява някои от често срещаните грешки, които може да срещнете, когато MySQL таблица се повреди. Той също така очертава възможните причини за повреда на таблицата на базата данни MySQL. Статията също така обяснява какво можете да направите, за да коригирате повредени таблици и как софтуерът за ремонт на база данни MySQL може да ви бъде полезен за възстановяване на данни в таблицата и всички други обекти на базата данни.
Като потребител на база данни на MySQL, може да срещнете някоя от тези грешки:
- „Таблицата е маркирана като повредена и трябва да бъде поправена“
- „Таблицата е сривана и последният ремонт е неуспешен“
- „Таблица tbl_name не съществува“
- „Неправилен ключов файл за таблица:„…“. Опитайте да го поправите” и т.н.
Това са предупредителни знаци, че вашата MySQL таблица е повредена.
Какво причинява корупция в MySQL таблица с база данни?
Следват възможни причини, водещи до повреда на таблицата на базата данни на MySQL:
- Проблеми в основната платформа, използвана от MySQL, включително дискова подсистема, драйвери, контролери и др.
- Внезапно изключване на системата или срив на сървъра
- MySQL процесът се убива по средата на запис в базата данни
- Софтуерна грешка или хардуерна грешка
Срещането на някоя от тези грешки при повреда на MySQL може да направи данните в таблиците недостъпни. Нека обсъдим решенията за коригиране на повредените таблици.
Как да коригирам грешките при повреда на базата данни MySQL?
Ако имате актуализиран архив на вашата база данни, възстановете базата данни от архив, за да възстановите недостъпните данни от таблицата. Ако архивът не е наличен, изпълнете стъпките в последователността по-долу, за да коригирате повредени MySQL таблици и да възстановите данни:
Забележка: Направете резервно копие на вашата MySQL база данни и таблици, за да предотвратите по-нататъшни щети по време на процеса на поправка и възстановяване.
Стъпка 1:Проверете таблицата за грешка
Първо, трябва да проверите таблицата на базата данни за грешки. Можете да използвате ПРОВЕРКАТА ТАБЛИЦА команда за диагностициране на повредени таблици InnoDB и MyISAM:
ОПЦИЯ ПРОВЕРКА НА ТАБЛИЦА tbl_name; |
Тук заменете „tbl_name“ с името на повредената таблица на базата данни. И заменете „опция“ с някоя от тези опции:БЪРЗО, БЪРЗО, СРЕДНО, РАЗШИРЕНО и ПРОМЕНЕНО.
Опция | Описание |
БЪРЗО | Извършва по-бърз ремонт на таблици InnoDB и MyISAM. Пропуска сканирането на редовете за търсене на неправилни връзки |
БЪРЗО | Проверете само MyISAM таблици, които не са затворени правилно. Не се прилага за таблици InnoDB. |
ПРОМЕНЕНО | Проверете само MyISAM таблици, които не са били затворени след последната проверка. Не се прилага за таблици InnoDB. |
СРЕДНО | Проверете дали изтритите връзки са валидни чрез сканиране на редове. Отнася се само за MyISAM таблици. |
Разширено | Извършва пълно търсене на ключове за всички ключове за всеки ред от таблицата MyISAM. Изпълнението отнема много време. |
За да проверите повече от една таблица за повреда, използвайте следната команда:
ПРОВЕРИ ТАБЛИЦА tbl_name1, tbl_name2, tbl_name 3 опция; |
Забележка: Командата CHECK TABLE може да се използва само когато процесът MySQL работи. Но ако процесът/сървърът не работи, можете да използвате следната команда „myisamchk“, за да проверите таблиците на MyISAM за повреда:
myisamchk [опции] tbl_name …
Тази команда проверява една таблица.
Изпълнете следната команда, за да проверите всички таблици в MySQL базата данни за повреда:
myisamchk /path/to/datadir/*/*.MYI
Помощната програма myisamchk не работи за таблици InnoDB.
Стъпка 2:Поправете повредена таблица
Забележка: Командата myisamchk се прилага само за MyISAM таблици и не работи за таблици InnoDB. За да поправите и възстановите таблица на Innodb, преминете към стъпка 3.
Помощната програма myisamchk може също да помогне за ремонт на повредена (повредена) MyISAM таблица. За да използвате помощната програма за ремонт на повредената маса, направете следното:
- Спрете услугата MySQL, като напишете:
услуга mysqld stop cd /var/lib/mysql |
- Промяна на директорията, където се намира базата данни.
cd /var/lib/mysql/table_name myisamchk
|