sql >> Databáze >  >> RDS >> Mysql

Jak opravit běžné problémy s databází MySQL?

Shrnutí: Tento článek uvádí některé běžné chyby, se kterými se můžete setkat, když dojde k poškození tabulky MySQL. Nastiňuje také možné důvody poškození tabulky databáze MySQL. Článek také vysvětluje, co můžete udělat pro opravu poškozených tabulek a jak se může hodit software na opravu databáze MySQL k obnově dat v tabulce a všech ostatních databázových objektů.

Jako uživatel databáze MySQL se můžete setkat s některou z těchto chyb:

  • „Tabulka je označena jako havarovaná a měla by být opravena“
  • „Tabulka se zhroutila a poslední oprava se nezdařila“
  • „Tabulka tbl_name neexistuje“
  • „Nesprávný soubor klíče pro tabulku:‚…‘. Zkuste to opravit“ atd.

Toto jsou varovné signály, že vaše tabulka MySQL je poškozená.

Co způsobuje poškození v tabulce databáze MySQL?

Níže jsou uvedeny možné důvody vedoucí k poškození tabulky databáze MySQL:

  • Problémy v základní platformě používané MySQL, včetně diskového subsystému, ovladačů, řadičů atd.
  • Náhlé vypnutí systému nebo selhání serveru
  • Proces MySQL se zastaví uprostřed zápisu do databáze
  • Softwarová chyba nebo selhání hardwaru

Setkání s některou z těchto chyb poškození MySQL může způsobit, že data v tabulkách nebudou přístupná. Pojďme diskutovat o řešeních, jak opravit poškozené tabulky.

Jak opravit chyby způsobené poškozením databáze MySQL?

Pokud máte aktualizovanou zálohu databáze, obnovte databázi ze zálohy, abyste obnovili nepřístupná data tabulky. Pokud záloha není k dispozici, opravte poškozené tabulky MySQL a obnovte data provedením kroků v následujícím pořadí:

Poznámka: Udělejte si zálohu databáze a tabulek MySQL, abyste zabránili dalšímu poškození během procesu opravy a obnovy.

Krok 1:Zkontrolujte, zda v tabulce není chyba

Nejprve musíte zkontrolovat databázovou tabulku, zda neobsahuje chyby poškození. Můžete použít KONTROLNÍ TABULKU příkaz k diagnostice poškozených tabulek InnoDB a MyISAM:

ZKONTROLOVAT TABULKU možnost tbl_name;

Zde nahraďte „tbl_name“ názvem poškozené databázové tabulky. A nahraďte „možnost“ kteroukoli z těchto možností:RYCHLÝ, RYCHLÝ, STŘEDNÍ, ROZŠÍŘENÝ a ZMĚNĚNÝ.

Možnost Popis
RYCHLÉ Provádí rychlejší opravu tabulek InnoDB a MyISAM. Přeskočí skenování řádků za účelem hledání nesprávných odkazů
RYCHLE Zkontrolujte pouze tabulky MyISAM, které nebyly správně uzavřeny. Neaplikujte na tabulky InnoDB.
ZMĚNĚNO Zkontrolujte pouze tabulky MyISAM, které nebyly uzavřeny od poslední kontroly. Neaplikujte na tabulky InnoDB.
STŘEDNÍ Prohledáním řádků ověřte, zda jsou smazané odkazy platné. Platí pouze pro tabulky MyISAM.
ROZŠÍŘENÉ Provede úplné vyhledání klíčů pro všechny klíče pro každý řádek tabulky MyISAM. Spuštění trvá dlouho.

Chcete-li zkontrolovat poškození více než jedné tabulky, použijte následující příkaz:

ZKONTROLUJTE TABULKU název_tbl1, název_tbl2, název_tbl 3 možnost;

Poznámka: Příkaz CHECK TABLE lze použít pouze při spuštěném procesu MySQL. Pokud však proces/server neběží, můžete pomocí následujícího příkazu „myisamchk“ zkontrolovat, zda tabulky MyISAM nejsou poškozené:

myisamchk [volby] tbl_name …

Tento příkaz kontroluje jednu tabulku.

Chcete-li zkontrolovat všechny tabulky v databázi MySQL, zda nejsou poškozené, spusťte následující příkaz:

myisamchk /cesta/k/datadir/*/*.MYI

Nástroj myisamchk nefunguje pro tabulky InnoDB.

Krok 2:Opravte poškozenou tabulku

Poznámka: Příkaz myisamchk se vztahuje pouze na tabulky MyISAM a nefunguje pro tabulky InnoDB. Chcete-li opravit a obnovit tabulku Innodb, přejděte ke kroku 3.

Nástroj myisamchk může také pomoci opravit poškozenou (poškozenou) tabulku MyISAM. Chcete-li použít nástroj k opravě poškozené tabulky, postupujte takto:

  1. Zastavte službu MySQL zadáním:
zastavení služby mysqld

cd /var/lib/mysql

  1. Přejděte do adresáře, kde se nachází databáze.
cd /var/lib/mysql/název_tabulky

myisamchk

  1. Chcete-li opravit poškozenou tabulku, spusťte následující příkaz nahrazením TABLE názvem tabulky, kterou chcete opravit:
myisamchk –obnovit
  1. Restartujte službu MySQL.
spuštění služby mysqld

Krok 3:Vynucení obnovy InnoDB

Chcete-li opravit poškození v tabulkách InnoDB, použijte ‘innodb_force_recovery‘ volba. Tato možnost přinutí databázový stroj InnoDB, aby se spustil bez jakýchkoli operací na pozadí, což vám umožní vypsat vaše tabulky.

  1. Otevřete svůj konfigurační soubor MySQL (my.cnf) a do sekce [mysqld] přidejte následující:
[mysqld]

innodb_force_recovery=1

restart služby mysql

Můžete spustit innodb_force_recovery s hodnotou 1 a podle potřeby hodnotu zvýšit. Jakmile spustíte obnovu innodb, restartujte server MySQL a poté vypište tabulky. V některých situacích však může být nutné nastavit hodnotu na 4 až 6, což může poškodit data.

Pozor! Pokud jste schopni vypsat tabulky s hodnotou innodb_force_recovery=3 nebo nižší, můžete proces obnovy bezpečně provést. Nastavení innodb_force_recovery na hodnotu vyšší než 4 však zahrnuje riziko ztráty dat.

  1. Pokud jste schopni spustit databázi, spusťte následující příkaz mysqldump a exportujte všechny databáze do souboru SQL (tj. záložního souboru, který obsahuje všechny příkazy k obnovení databáze):
mysqldump –all-databases –add-drop-database –add-drop-table> mydump.sql
  1. Spusťte službu MySQL a poté se pokuste zrušit databázi obsahující postižené tabulky pomocí příkazu DROP DATABASE. Pokud nemůžete databázi zrušit, zkuste ji po zastavení serveru MySQL ručně odstranit provedením níže uvedených kroků.
cd /var/lib/mysql

rm -rf

  1. Po provedení výše uvedeného příkazu zakomentujte níže uvedený řádek v [mysqld], abyste zakázali obnovu InnoDB:
#innodb_force_recovery=…
  1. Uložte všechny změny, které jste provedli v souboru my.cnf, a poté spusťte server.
spuštění služby mysqld
  1. Obnovení databáze a tabulky z výpisu MySQL (záložního souboru), který jste vytvořili v kroku 2:
mysql -u user -p

Provedením těchto kroků obnovíte databázi MySQL a její tabulky. Pokud data stále chybí, budete muset použít profesionální software pro opravu databáze MySQL, jako je Stellar Repair for MySQL obnovit databázi a obnovit její data. Software dokáže opravit tabulky InnoDB i MyISAM, přičemž data zůstanou nedotčená. Podporuje opravu tabulek MySQL v systémech Windows i Linux.

Závěr

Tabulky databáze MySQL se mohou poškodit v důsledku náhlého vypnutí systému, selhání serveru, selhání hardwaru, chyb v kódu MySQL atd. Poškození v tabulce MySQL má za následek chyby uvedené v tomto článku. Můžete se pokusit opravit poškozené tabulky MyISAM pomocí nástroje „myisamchk“ nebo vynutit obnovu InnoDB. Oprava tabulek MyISAM a ruční obnovení InnoDB však může trvat značnou dobu. Ruční proces obnovy může také vést ke ztrátě dat. Lepší alternativou je použití softwaru Stellar Repair pro MySQL. Software umožňuje opravu databázových tabulek MyISAM i InnoDB bez jakýchkoli změn v původních datech.


  1. Jak volat uloženou proceduru MySQL z kódu PHP?

  2. Porozumění Javě Oracle na Macu

  3. MySQL Group By a Součet celková hodnota jiného sloupce

  4. PostgreSQL dočasné tabulky