Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak naprawić typowe problemy z bazą danych MySQL?

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:

  1. Zatrzymaj usługę MySQL, wpisując:
usługa mysqld stop

cd /var/lib/mysql

  1. Przejdź do katalogu, w którym znajduje się baza danych.
cd /var/lib/mysql/table_name

myisamchk

  1. Aby naprawić uszkodzoną tabelę, uruchom następujące polecenie, zastępując TABLE nazwą tabeli, którą chcesz naprawić:
myisamchk – odzyskaj
  1. Uruchom ponownie usługę MySQL.
usługa mysqld start

Krok 3:Wymuś odzyskiwanie InnoDB

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.

  1. Otwórz plik konfiguracyjny MySQL (my.cnf) i dodaj następujące elementy do sekcji [mysqld]:
[mysqld]

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.

  1. Jeśli możesz uruchomić bazę danych, uruchom następujące polecenie mysqldump, aby wyeksportować wszystkie bazy danych do pliku SQL (tj. pliku kopii zapasowej, który zawiera wszystkie instrukcje przywracania bazy danych):
mysqldump –all-databases –add-drop-database –add-drop-table> mydump.sql
  1. Uruchom usługę MySQL, a następnie spróbuj usunąć bazę danych zawierającą tabele, których dotyczy problem, za pomocą polecenia DROP DATABASE. Jeśli nie możesz usunąć bazy danych, spróbuj usunąć ją ręcznie, wykonując poniższe kroki po zatrzymaniu serwera MySQL.
cd /var/lib/mysql

rm -rf

  1. Po wykonaniu powyższego polecenia, skomentuj poniższą linię w [mysqld], aby wyłączyć odzyskiwanie InnoDB:
#innodb_force_recovery=…
  1. Zapisz wszystkie zmiany, które wprowadziłeś w pliku my.cnf, a następnie uruchom serwer.
usługa mysqld start
  1. Spróbuj przywrócić bazę danych i tabelę ze zrzutu MySQL (pliku kopii zapasowej), który utworzyłeś w kroku 2:
mysql -u użytkownik -p

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.

Wniosek

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykonać kopię zapasową/przywrócić MySQL/MariaDB i PostgreSQL za pomocą narzędzi „Automysqlbackup” i „Autopostgresqlbackup”

  2. Jak skopiować dane z jednej tabeli do innej nowej tabeli w MySQL?

  3. Jak monitorować wdrożenia MySQL za pomocą Prometheus i Grafana w ScaleGrid?

  4. Jak wstawić znak mb4 utf-8 (emotikony w ios5) w mysql?

  5. automatyczny przyrost pierwotny pozostawiając przerwy w liczeniu