Podsumowanie: W tym artykule wymieniono niektóre z typowych błędów, które mogą wystąpić, gdy tabela MySQL zostanie uszkodzona. Przedstawia również możliwe przyczyny uszkodzenia tabeli bazy danych MySQL. W artykule wyjaśniono również, co możesz zrobić, aby naprawić uszkodzone tabele i w jaki sposób oprogramowanie do naprawy bazy danych MySQL może się przydać do odzyskania danych w tabeli i wszystkich innych obiektach bazy danych.
Jako użytkownik bazy danych MySQL możesz napotkać dowolny z tych błędów:
- „Stół jest oznaczony jako uszkodzony i powinien zostać naprawiony”
- „Tabela uległa awarii i ostatnia naprawa nie powiodła się”
- „Tabela nazwa_tabeli nie istnieje”
- „Nieprawidłowy plik klucza dla tabeli:‘…’. Spróbuj to naprawić” itp.
To są znaki ostrzegawcze, że twoja tabela MySQL jest uszkodzona.
Co powoduje uszkodzenie w tabeli bazy danych MySQL?
Oto możliwe przyczyny prowadzące do uszkodzenia tabeli bazy danych MySQL:
- Problemy w podstawowej platformie używanej przez MySQL, w tym podsystem dyskowy, sterowniki, kontrolery itp.
- Nagłe zamknięcie systemu lub awaria serwera
- Proces MySQL zostaje zabity w trakcie zapisywania do bazy danych
- Błąd oprogramowania lub awaria sprzętu
Napotkanie któregokolwiek z tych błędów uszkodzenia MySQL może spowodować, że dane w tabelach będą niedostępne. Porozmawiajmy o rozwiązaniach naprawienia uszkodzonych stołów.
Jak naprawić błędy związane z uszkodzeniem bazy danych MySQL?
Jeśli masz zaktualizowaną kopię zapasową bazy danych, przywróć bazę danych z kopii zapasowej, aby odzyskać niedostępne dane tabeli. Jeśli kopia zapasowa nie jest dostępna, wykonaj kroki w poniższej kolejności, aby naprawić uszkodzone tabele MySQL i odzyskać dane:
Uwaga: Wykonaj kopię zapasową bazy danych i tabel MySQL, aby zapobiec dalszym uszkodzeniom podczas procesu naprawy i odzyskiwania.
Krok 1:Sprawdź tabelę pod kątem błędu
Najpierw musisz sprawdzić tabelę bazy danych pod kątem błędów związanych z uszkodzeniem. Możesz skorzystać z SPRAWDŹ TABELI polecenie do diagnozowania uszkodzonych tabel InnoDB i MyISAM:
SPRAWDŹ TABELĘ opcja nazwa_tabeli; |
W tym miejscu zastąp „tbl_name” nazwą uszkodzonej tabeli bazy danych. I zastąp „opcję” dowolną z tych opcji:SZYBKI, SZYBKI, ŚREDNI, ROZSZERZONY i ZMIENIONY.
Opcja | Opis |
SZYBKO | Przeprowadza szybszą naprawę tabel InnoDB i MyISAM. Pomija skanowanie wierszy w poszukiwaniu nieprawidłowych linków |
SZYBKO | Sprawdzaj tylko tabele MyISAM, które nie zostały poprawnie zamknięte. Nie stosuj do tabel InnoDB. |
ZMIENIONO | Sprawdzaj tylko tabele MyISAM, które nie zostały zamknięte od czasu ostatniego sprawdzenia. Nie stosuj do tabel InnoDB. |
ŚREDNI | Sprawdź, czy usunięte linki są prawidłowe, skanując wiersze. Dotyczy tylko tabel MyISAM. |
ROZSZERZONY | Wykonuje pełne wyszukiwanie kluczy dla wszystkich kluczy w każdym wierszu tabeli MyISAM. Wykonanie zajmuje dużo czasu. |
Aby sprawdzić więcej niż jedną tabelę pod kątem uszkodzeń, użyj następującego polecenia:
SPRAWDŹ TABELĘ nazwa_tabeli1, nazwa_tabeli2, nazwa_tabeli 3 opcja; |
Uwaga: Polecenia CHECK TABLE można używać tylko wtedy, gdy uruchomiony jest proces MySQL. Jeśli jednak proces/serwer nie działa, możesz użyć następującego polecenia „myisamchk”, aby sprawdzić tabele MyISAM pod kątem uszkodzeń:
myisamchk [opcje] nazwa_tabeli …
To polecenie sprawdza pojedynczą tabelę.
Wykonaj następujące polecenie, aby sprawdzić wszystkie tabele w bazie danych MySQL pod kątem uszkodzeń:
myisamchk /ścieżka/do/katalogu danych/*/*.MYI
Narzędzie myisamchk nie działa z tabelami InnoDB.
Krok 2:Napraw uszkodzoną tabelę
Uwaga: Polecenie myisamchk dotyczy tylko tabel MyISAM i nie działa w przypadku tabel InnoDB. Aby naprawić i odzyskać tabelę Innodb, przejdź do kroku 3.
Narzędzie myisamchk może również pomóc w naprawie uszkodzonej (uszkodzonej) tabeli MyISAM. Aby użyć narzędzia do naprawy uszkodzonego stołu, wykonaj następujące czynności:
- Zatrzymaj usługę MySQL, wpisując:
usługa mysqld stop cd /var/lib/mysql |
- Przejdź do katalogu, w którym znajduje się baza danych.
cd /var/lib/mysql/table_name
myisamchk
Aby naprawić uszkodzenie w tabelach InnoDB, użyj „innodb_force_recovery” opcja. Ta opcja wymusza uruchomienie silnika bazy danych InnoDB bez żadnych operacji w tle, co pozwala na zrzucenie tabel.
innodb_force_recovery=1
restart usługi mysql
Możesz rozpocząć innodb_force_recovery od wartości 1 i zwiększyć ją w razie potrzeby. Po zainicjowaniu odzyskiwania innodb uruchom ponownie serwer MySQL, a następnie zrzuć swoje tabele. Jednak w niektórych sytuacjach może być konieczne ustawienie wartości od 4 do 6, co może uszkodzić dane.
Uwaga! Jeśli możesz zrzucić tabele z wartością innodb_force_recovery=3 lub mniejszą, możesz bezpiecznie przeprowadzić proces odzyskiwania. Jednak ustawienie innodb_force_recovery na wartość większą niż 4 wiąże się z ryzykiem utraty danych.
rm -rf
Wykonanie tych kroków przywróci bazę danych MySQL i jej tabele. Jeśli nadal brakuje danych, musisz użyć profesjonalnego oprogramowania do naprawy baz danych MySQL, takiego jak Stellar Repair for MySQL do przywrócenia bazy danych i odzyskania jej danych. Oprogramowanie może naprawić zarówno tabele InnoDB, jak i MyISAM, zachowując dane w stanie nienaruszonym. Obsługuje naprawę tabel MySQL w systemach Windows i Linux.
Tabele bazy danych MySQL mogą ulec uszkodzeniu z powodu nagłego wyłączenia systemu, awarii serwera, awarii sprzętu, błędów w kodzie MySQL itp. Uszkodzenie tabeli MySQL powoduje błędy wymienione w tym artykule. Możesz spróbować naprawić uszkodzone tabele MyISAM za pomocą narzędzia „myisamchk” lub wymusić odzyskiwanie InnoDB. Jednak naprawa tabel MyISAM i ręczne wykonanie odzyskiwania InnoDB może zająć dużo czasu. Ponadto ręczny proces odzyskiwania może spowodować utratę danych. Lepszą alternatywą jest użycie oprogramowania Stellar Repair for MySQL. Oprogramowanie umożliwia naprawę tabel bazy danych MyISAM i InnoDB bez wprowadzania jakichkolwiek zmian w oryginalnych danych. Jak wykonać kopię zapasową/przywrócić MySQL/MariaDB i PostgreSQL za pomocą narzędzi „Automysqlbackup” i „Autopostgresqlbackup” Jak skopiować dane z jednej tabeli do innej nowej tabeli w MySQL? Jak monitorować wdrożenia MySQL za pomocą Prometheus i Grafana w ScaleGrid? Jak wstawić znak mb4 utf-8 (emotikony w ios5) w mysql? automatyczny przyrost pierwotny pozostawiając przerwy w liczeniu |