Kiedy baza danych MySQL staje się uszkodzona, możesz się zastanawiać, dlaczego baza danych została uszkodzona w pierwszej kolejności. Ten post przedstawi możliwe przyczyny uszkodzenia bazy danych przed udzieleniem odpowiedzi na pytanie:jak naprawić uszkodzoną bazę danych MySQL?
Przyczyny korupcji bazy danych MySQL
Baza danych MySQL może ulec uszkodzeniu z jednego z następujących powodów:
- Nagłe wyłączenie serwera
- Defekt sprzętu używanego do przechowywania i pobierania danych, takich jak podsystem dysku, kontrolery dysków, sterowniki itp.
- Proces „mysqld” zostaje zabity podczas trwającej aktualizacji
- Błąd oprogramowania
Określenie przyczyny uszkodzenia bazy danych może być trudne. Bez względu na przyczynę, powinieneś się martwić, jak naprawić uszkodzoną bazę danych MySQL.
Jak naprawić uszkodzoną bazę danych MySQL?
Pierwszą rzeczą, na którą musisz spojrzeć, jest wyświetlany komunikat o błędzie. Poniżej znajduje się kilka komunikatów o błędach, które możesz napotkać, gdy baza danych MySQL zostanie uszkodzona:
Błąd 144: Stół uległ awarii, a ostatnia naprawa nie powiodła się
Błąd 141: Zduplikuj unikalny klucz lub ograniczenie przy zapisie lub aktualizacji
Błąd 136: Brak miejsca w pliku indeksu
Błąd 134: Rekord został już usunięty
Błąd 126: Plik indeksu uległ awarii/niewłaściwy format pliku
Błąd: Nie można znaleźć pliku „wtlicensemanager.dll”
Jeśli chcesz wykonać naprawę bezpłatnie, masz dwie możliwości:
- Zrób to ręcznie.
- Zrób to za pomocą oprogramowania, korzystając z okresu próbnego.
Oprogramowanie do odzyskiwania bazy danych może lepiej i szybciej naprawić uszkodzoną bazę danych.
Oto jedna aplikacja, której możesz użyć do naprawy uszkodzonej bazy danych MySQL:
To narzędzie do naprawy bazy danych MySQL naprawia bazę danych utworzoną przy użyciu silników baz danych InnoDB i MyISAM MySQL. Możesz pobrać wersję demonstracyjną narzędzia do naprawy SQL, aby wyświetlić podgląd bazy danych do odzyskania przed ich zapisaniem.
Kluczowe cechy:
- Może odzyskać bazę danych MySQL w systemach Windows i Linux.
- Odzyskuje pliki InnoDB (.ibdata, .ibd i .frm) oraz pliki MyISAM (myd, .myi i .frm)
- Przywraca obiekty bazy danych, takie jak tabele, właściwości tabel, typy danych, widoki, wyzwalacze itp.
- Pozwala na selektywne odzyskiwanie komponentów bazy danych
Jak ręcznie naprawić uszkodzoną bazę danych MySQL?
W MySQL istnieją dwa typy silników pamięci masowej:InnoDB i MyISAM. Tabela InnoDB zawiera pliki FRM, IBDATA i IDB, podczas gdy tabela MyISAM zawiera pliki FRM, MYD i MYI.
Zanim przejdziemy
Oto kilka rzeczy, które należy wziąć pod uwagę przed przystąpieniem do ręcznego odzyskiwania:
- Nie uruchamiaj ponownie serwera
Po ponownym uruchomieniu serwera serwer może przełączyć uszkodzoną bazę danych w tryb podejrzanych. Spowoduje to wyłączenie bazy danych. Może również powodować błędy podczas łączenia się z bazą danych. Powinieneś spróbować odzyskać bez ponownego uruchamiania serwera.
- Użyj trybu pojedynczego użytkownika
Upewnij się, że jesteś jedynym użytkownikiem połączonym z bazą danych. Tryb jednego użytkownika zapewnia pełną kontrolę, eliminując ingerencję innych użytkowników.
- Nie aktualizuj MySQL
Możesz pomyśleć o aktualizacji bazy danych MySQL, aby naprawić uszkodzone pliki. Ale tak nie jest. Aktualizacja może spowodować trwałą utratę danych.
- Wykonaj kopię zapasową uszkodzonej bazy danych MySQL
Ważne jest, aby mieć kopię zapasową uszkodzonego pliku, ponieważ mogą wystąpić błędy, które mogą spowodować utratę danych. Nie ma gwarancji, że ręczne czynności nie wpłyną na zdrowe pliki. Dlatego bezpiecznie jest mieć kopię zapasową przed przystąpieniem do ręcznego odzyskiwania.
Aby wykonać kopię zapasową, użyj następującego polecenia:
mysqldump nazwa_bazy_danych> nazwa_bazy_danych.sql
Po prostu wpisz nazwę swojej bazy danych zamiast database_name.
Jeśli powyższe nie działa, spróbuj wykonać następujące czynności:
mysqldump –u[nazwa użytkownika] –p[hasło] [nazwa_bazy_danych]> [plik_zrzutu].sql
Istnieje inny sposób tworzenia kopii zapasowej bazy danych:
usługa mysqld stop
cp -r /var/lib/mysql /var/lib/mysql_bkp
Teraz, gdy mamy kopię zapasową, możemy spróbować naprawić uszkodzoną bazę danych MySQL.
Jak ręcznie odzyskać bazę danych MySQL?
Naprawianie bazy danych MyISAM
Jeśli używasz mechanizmu przechowywania bazy danych MyISAM dla swojej tabeli bazy danych, możesz użyć następujących poleceń, aby naprawić tabelę:
Mysqlcheck
Jeśli serwer MySQL jest uruchomiony, uruchom następujące polecenie mysqlcheck, aby naprawić tabelę:
mysqlcheck -r [nazwa_bazy_danych]
Pamiętaj, aby zastąpić „database_name” nazwą swojej bazy danych.
Myisamchk
Jeśli serwer nie działa, spróbuj naprawić tabelę bazy danych za pomocą polecenia myisamchk:
Uwaga: Przed uruchomieniem tego polecenia upewnij się, że na serwerze nie ma otwartych żadnych tabel.
myisamchk nazwa_tabeli
Napraw nazwę tabeli z nazwą tabeli w Twoim przypadku. To polecenie automatycznie naprawia Twój stół.
Aby ponownie uruchomić serwer, wpisz następujące polecenie:
usługa mysqld start
Wymuś odzyskiwanie InnoDB
Będziesz musiał wykonać wymuszenie odzyskiwania InnoDB, aby wyodrębnić dane z uszkodzonej tabeli bazy danych InnoDB.
Krok 1: Najpierw musisz otworzyć plik my.cnf.
W tym pliku zlokalizuj sekcję [mysqld].
Dodaj następujący wiersz do tej sekcji:
innodb_force_recovery=1
Teraz zapisz plik konfiguracyjny i zrestartuj serwer MySQL. Możesz ustawić wartość innodb_force_recovery od 1 do 6. Jednak wartość powyżej 4 nie jest zalecana, ponieważ może uszkodzić dane.
Krok 2: Zrzuć dane tabeli do nowego pliku.
Aby to zrobić, użyj następującego polecenia:
mysqldump –u użytkownik –p nazwa_bazy_danych nazwa_tabeli> single_dbtable_dump.sql
Krok 3: Usuń uszkodzoną tabelę z bazy danych.
mysql –u użytkownik –p –execute=”DROP TABLE nazwa_bazy.nazwa_tabeli”
Krok 4: Przywróć tabelę z pliku zrzutu.
mysql –u użytkownik –p
Krok 5: Po naprawieniu plików wyłącz tryb przywracania siły za pomocą następującego polecenia:
#innodb_force_recovery=…
Teraz możesz ponownie uruchomić usługę MySQL w normalnym trybie.
Mamy nadzieję, że powyższe metody pomogą naprawić uszkodzoną bazę danych MySQL.