Когато MySQL база данни се повреди, може да се чудите защо базата данни се е повредила на първо място. Тази публикация ще очертае възможните причини за корупцията на базата данни, преди да отговори на въпроса:как да поправя повредена MySQL база данни?
Причини за повреда на MySQL база данни
MySQL база данни може да се повреди поради някоя от следните причини:
- Внезапно изключване на сървъра
- Дефект в хардуера, използван за съхраняване и извличане на данни като дискова подсистема, дискови контролери, драйвери и др.
- Процесът ‘mysqld’ е убит, докато е в процес на текуща актуализация
- Софтуерна грешка
Може да бъде трудно да се определи причината за повредена база данни. Каквато и да е причината, притеснението, което трябва да имате, е как да поправите повредената база данни MySQL.
Как да поправя повредена MySQL база данни?
Първото нещо, което трябва да погледнете, е съобщението за грешка, което получавате. Следват някои съобщения за грешка, които може да срещнете, когато базата данни MySQL се повреди:
Грешка 144: Таблицата е повредена и последният ремонт е неуспешен
Грешка 141: Дублиран уникален ключ или ограничение за запис или актуализиране
Грешка 136: Няма повече място в индексния файл
Грешка 134: Записът вече е изтрит
Грешка 126: Индексният файл е сринат/ грешен файлов формат
Грешка: Не можа да се намери файл „wtlicensemanager.dll“
Ако искате да извършите ремонта безплатно, имате две възможности:
- Направете го ръчно.
- Направете го с помощта на софтуер, като използвате пробния период.
Софтуерът за възстановяване на база данни може да свърши по-добра и по-бърза работа при поправянето на повредената база данни.
Ето едно софтуерно приложение, което можете да използвате, за да поправите повредената база данни MySQL:
Този инструмент за ремонт на база данни MySQL поправя база данни, създадена с помощта на двигатели на база данни InnoDB и MyISAM на MySQL. Можете да изтеглите демонстрационната версия на инструмента за ремонт на SQL, за да прегледате възстановима база данни, преди да ги запазите.
Основни характеристики:
- Може да възстанови MySQL база данни на Windows и Linux системи.
- Възстановява InnoDB файлове (.ibdata, .ibd и .frm) и MyISAM файлове (myd, .myi и .frm)
- Възстановява обекти на база данни като таблици, свойства на таблици, типове данни, изгледи, тригери и т.н.
- Позволява селективно възстановяване на компоненти на базата данни
Как да поправя повредена MySQL база данни ръчно?
Има два типа машини за съхранение в MySQL:InnoDB и MyISAM. Таблицата InnoDB съдържа FRM, IBDATA и IDB файлове, докато таблицата MyISAM съдържа FRM, MYD и MYI файлове.
Преди да продължим
Ето няколко неща, които трябва да имате предвид, преди да опитате ръчно възстановяване:
- Не рестартирайте сървъра
Когато рестартирате сървъра, сървърът може да постави повредената база данни в режим на съмнение. Това ще изключи базата данни. Той също така може да създава грешки при свързване към базата данни. Трябва да опитате възстановяване, без да рестартирате сървъра.
- Използвайте режим на един потребител
Уверете се, че сте единственият потребител, свързан към базата данни. Режимът за един потребител ви дава целия контрол, елиминирайки намесата на други потребители.
- Не надграждайте MySQL
Може да помислите за актуализиране на базата данни MySQL, за да поправите повредените файлове. Но това не е така. Надстройката може да причини трайна загуба на данни.
- Направете резервно копие на повредената база данни MySQL
Важно е да имате резервно копие на повредения файл, тъй като може да има грешки, които могат да доведат до загуба на данни. Няма гаранция, че вашите ръчни стъпки няма да повлияят на здравите файлове. Така че е безопасно да имате резервно копие, преди да опитате ръчно възстановяване.
За архивиране използвайте следната команда:
mysqldump db_name> database_name.sql
Просто въведете името на базата си на мястото на базата_име.
Ако горното не работи, опитайте следното:
mysqldump –u[потребителско име] –p[парола] [име_на_база от данни]> [dump_file].sql
Има и друг начин за архивиране на базата данни:
услуга mysqld stop
cp -r /var/lib/mysql /var/lib/mysql_bkp
Сега, когато имаме резервното копие, можем да се опитаме да поправим повредената база данни MySQL.
Как да възстановя MySQL база данни ръчно?
Поправяне на MyISAM база данни
Ако използвате механизма за съхранение на база данни MyISAM за вашата таблица на база данни, можете да използвате следните команди, за да поправите таблицата:
Mysqlcheck
Ако вашият MySQL сървър работи, изпълнете следната команда mysqlcheck, за да поправите вашата таблица:
mysqlcheck -r [име_на_база_данни]
Не забравяйте да замените „име на база данни“ с името на вашата база данни.
Myisamchk
Ако сървърът не работи, опитайте да поправите таблицата на базата данни, като използвате командата myisamchk:
Забележка: Преди да изпълните тази команда, уверете се, че сървърът няма отворени таблици.
myisamchk table_name
Поправете името на таблицата с името на таблицата във вашия случай. Тази команда автоматично коригира вашата таблица.
За да рестартирате сървъра, въведете следното:
Стартиране на услугата mysqld
Принудително възстановяване на InnoDB
Ще трябва да извършите принудително възстановяване на InnoDB, за да извлечете данни от повредена таблица на база данни на InnoDB.
Стъпка 1: Първо, трябва да отворите файла my.cnf.
В този файл намерете секцията [mysqld].
Добавете следния ред към този раздел:
innodb_force_recovery=1
Сега запазете конфигурационния файл и рестартирайте MySQL сървъра. Можете да зададете стойността на innodb_force_recovery от 1 до 6. Стойност над 4 обаче не се препоръчва, тъй като може да повреди данните.
Стъпка 2: Изсипете данните от таблицата в нов файл.
За да направите това, използвайте следната команда:
mysqldump –u потребител –p db_name table_name> single_dbtable_dump.sql
Стъпка 3: Изхвърлете повредената таблица от базата данни.
mysql –u потребител –p –execute=”DROP TABLE db_name.table_name”
Стъпка 4: Възстановете таблицата от дъмп файла.
mysql –u потребител –p
Стъпка 5: След като файловете бъдат поправени, деактивирайте режима за принудително възстановяване със следната команда:
#innodb_force_recovery=…
Сега можете да рестартирате услугата MySQL в нормален режим.
Надяваме се, че горните методи ще ви помогнат да поправите повредената база данни MySQL.