Резюме: Тази статия изброява някои от често срещаните грешки, които може да срещнете, когато 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
За да коригирате повреда в таблиците на InnoDB, използвайте ‘innodb_force_recovery’ опция. Тази опция принуждава двигателя на базата данни InnoDB да се стартира без никакви фонови операции, което ви позволява да изхвърляте вашите таблици.
innodb_force_recovery=1
рестартиране на услугата mysql
Можете да стартирате innodb_force_recovery със стойност 1 и да увеличите стойността, ако е необходимо. След като стартирате възстановяване на innodb, рестартирайте вашия MySQL сървър и след това изхвърлете вашите таблици. В някои ситуации обаче може да се наложи да зададете стойността от 4 до 6, което може да повреди данните.
Внимание! Ако сте в състояние да изхвърлите таблиците със стойност innodb_force_recovery=3 или по-малка, тогава можете безопасно да извършите процеса на възстановяване. Въпреки това, задаването на innodb_force_recovery на стойност, по-голяма от 4, включва риск от загуба на данни.
rm -rf <БАЗА ДАННИ>
Изпълнението на тези стъпки ще възстанови базата данни MySQL и нейните таблици. Ако данните все още липсват, ще трябва да използвате професионален софтуер за ремонт на база данни MySQL, като Stellar Repair за MySQL за да възстановите вашата база данни и да възстановите нейните данни. Софтуерът може да поправи както InnoDB, така и MyISAM таблици, като запазва данните непокътнати. Той поддържа ремонт на MySQL таблици на Windows, както и на Linux системи.
Таблиците на базата данни на MySQL могат да се повредят поради внезапно изключване на системата, срив на сървъра, хардуерни повреди, грешки в MySQL кода и т.н. Корупцията в MySQL таблицата води до грешките, изброени в тази статия. Можете да опитате да поправите повредени MyISAM таблици, като използвате помощната програма „myisamchk“ или принудително възстановяване на InnoDB. Въпреки това, може да отнеме значително време, за да поправите MyISAM таблици и да извършите ръчно възстановяване на InnoDB. Също така, ръчният процес на възстановяване може да доведе до загуба на данни. По-добра алтернатива е да използвате Stellar Repair за MySQL софтуер. Софтуерът позволява да се поправят както MyISAM, така и таблиците на InnoDB база данни, без да се правят промени в оригиналните данни. |